public function testOnRenderErrorCreatesAnApiProblemResponse()
 {
     $response = new Response();
     $request = new Request();
     $request->getHeaders()->addHeaderLine('Accept', 'application/json');
     $event = new MvcEvent();
     $event->setError(Application::ERROR_EXCEPTION);
     $event->setRequest($request);
     $event->setResponse($response);
     $this->listener->onRenderError($event);
     $this->assertTrue($event->propagationIsStopped());
     $this->assertSame($response, $event->getResponse());
     $this->assertEquals(406, $response->getStatusCode());
     $headers = $response->getHeaders();
     $this->assertTrue($headers->has('Content-Type'));
     $this->assertEquals('application/problem+json', $headers->get('content-type')->getFieldValue());
     $content = json_decode($response->getContent(), true);
     $this->assertArrayHasKey('status', $content);
     $this->assertArrayHasKey('title', $content);
     $this->assertArrayHasKey('describedBy', $content);
     $this->assertArrayHasKey('detail', $content);
     $this->assertEquals(406, $content['status']);
     $this->assertEquals('Not Acceptable', $content['title']);
     $this->assertContains('www.w3.org', $content['describedBy']);
     $this->assertContains('accept', $content['detail']);
 }
 /**
  * {@inheritDoc}
  * @return RenderErrorListener
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $config = $serviceLocator->get('Config');
     $displayExceptions = false;
     if (isset($config['view_manager']) && isset($config['view_manager']['display_exceptions'])) {
         $displayExceptions = (bool) $config['view_manager']['display_exceptions'];
     }
     $listener = new RenderErrorListener();
     $listener->setDisplayExceptions($displayExceptions);
     return $listener;
 }
 /**
  * @param ContainerInterface $container
  * @return RenderErrorListener
  */
 public function __invoke(ContainerInterface $container)
 {
     $config = $container->get('config');
     $displayExceptions = false;
     if (isset($config['view_manager']) && isset($config['view_manager']['display_exceptions'])) {
         $displayExceptions = (bool) $config['view_manager']['display_exceptions'];
     }
     $listener = new RenderErrorListener();
     $listener->setDisplayExceptions($displayExceptions);
     return $listener;
 }