/** * @test */ public function willClassifyAuthenticationExceptionAsWarningsAndReturn401Status() { $error = new HttpError(new Request(), new AuthenticationException(), $this->logRefBuilder); $this->assertSame($error->getSeverity(), LogLevel::WARNING); $this->assertSame($error->getStatusCode(), 401); $this->assertStringStartsWith('Unauthorized', $error->getMessage()); }
/** * @param HttpError $error * * @return Response */ public function create(HttpError $error) : Response { $data = ['message' => $error->getMessage(), 'logref' => $error->getLogRef()]; $exception = $error->getException(); if ($exception instanceof ValidationException) { $data['errors'] = []; foreach ($exception->getValidationErrors() as $path => $errorMessage) { $data['errors'][$path === '' ? '*root*' : $path] = $errorMessage; } } return new JsonResponse($data, $error->getStatusCode()); }
/** * @param GetResponseForExceptionEvent $event */ public function onKernelException(GetResponseForExceptionEvent $event) { $error = new HttpError($event->getRequest(), $event->getException(), $this->logRefBuilder); $this->logger->log($error->getSeverity(), "{$error->getMessage()} [logref {$error->getLogRef()}]: {$event->getException()}"); $event->setResponse($this->errorResponseFactory->create($error)); }