/**
  * @runInSeparateProcess
  */
 public function testExceptionHandledByFinaleReadResponder()
 {
     $requestInfo = new RequestInfo(['REQUEST_METHOD' => 'GET', 'REQUEST_URI' => '/test']);
     $exception = new \Exception();
     $finalReadResponder = $this->getMockBuilder(RespondsFinallyToReadRequest::class)->getMockForAbstractClass();
     $finalReadResponder->method('handleUncaughtException')->will($this->returnCallback(function ($exception) {
         echo get_class($exception);
     }));
     $config = $this->getMockBuilder(ConfiguresIceHawk::class)->getMockForAbstractClass();
     $config->method('getRequestInfo')->willReturn($requestInfo);
     $config->method('getFinalReadResponder')->willReturn($finalReadResponder);
     $requestHandler = $this->getMockBuilder(HandlesGetRequest::class)->getMockForAbstractClass();
     $requestHandler->expects($this->once())->method('handle')->will($this->throwException($exception));
     $readRoute = new ReadRoute(new Literal('/test'), $requestHandler);
     $config->expects($this->once())->method('getReadRoutes')->willReturn([$readRoute]);
     $readRequestHandler = new ReadRequestHandler($config, new EventPublisher());
     $readRequestHandler->handleRequest();
     $this->expectOutputString(get_class($exception));
 }
Example #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();
     }
 }