/**
  * @runInSeparateProcess
  */
 public function testExceptionHandledByFinaleWriteResponder()
 {
     $requestInfo = new RequestInfo(['REQUEST_METHOD' => 'POST', 'REQUEST_URI' => '/test']);
     $exception = new \Exception();
     $finalWriteResponder = $this->getMockBuilder(RespondsFinallyToWriteRequest::class)->getMockForAbstractClass();
     $finalWriteResponder->method('handleUncaughtException')->will($this->returnCallback(function ($exception) {
         echo get_class($exception);
     }));
     $config = $this->getMockBuilder(ConfiguresIceHawk::class)->getMockForAbstractClass();
     $config->method('getRequestInfo')->willReturn($requestInfo);
     $config->method('getFinalWriteResponder')->willReturn($finalWriteResponder);
     $requestHandler = $this->getMockBuilder(HandlesPostRequest::class)->getMockForAbstractClass();
     $requestHandler->expects($this->once())->method('handle')->will($this->throwException($exception));
     $writeRoute = new WriteRoute(new Literal('/test'), $requestHandler);
     $config->expects($this->once())->method('getWriteRoutes')->willReturn([$writeRoute]);
     $writeRequestHandler = new WriteRequestHandler($config, new EventPublisher());
     $writeRequestHandler->handleRequest();
     $this->expectOutputString(get_class($exception));
 }
Esempio n. 2
0
 public function handleRequest()
 {
     $requestInfo = $this->config->getRequestInfo();
     if (in_array($requestInfo->getMethod(), HttpMethod::WRITE_METHODS)) {
         $requestHandler = new WriteRequestHandler($this->config, $this->eventPublisher);
         $requestHandler->handleRequest();
     } elseif (in_array($requestInfo->getMethod(), HttpMethod::READ_METHODS)) {
         $requestHandler = new ReadRequestHandler($this->config, $this->eventPublisher);
         $requestHandler->handleRequest();
     } elseif ($requestInfo->getMethod() == HttpMethod::OPTIONS) {
         $requestHandler = new OptionsRequestHandler($this->config, $this->eventPublisher);
         $requestHandler->handleRequest();
     } else {
         (new MethodNotImplemented($requestInfo->getMethod()))->respond();
     }
 }