/** * register all error handler (not found, not allowed, and generic error handler). */ public function registerErrorHandlers() { $this->container['notAllowedHandler'] = function ($c) { return function ($request, $response, $methods) use($c) { $result = new Renderer(); $result->errors[] = ['code' => 405, 'message' => 'Method must be one of: ' . implode(', ', $methods)]; return $result->render($response, 405); }; }; $this->container['notFoundHandler'] = function ($c) { return function ($request, $response) use($c) { $result = new Renderer(); $result->errors[] = ['code' => 404, 'message' => 'Not Found']; return $result->render($response, 404); }; }; $this->container['errorHandler'] = function ($c) { return function ($request, $response, $exception) use($c) { $result = new Renderer(); $error_code = $exception->getCode(); if (is_numeric($error_code) && $error_code > 300 && $error_code < 600) { $error_code = $exception->getCode(); } else { $error_code = 500; } if ($c->settings['displayErrorDetails'] === true) { $result->errors[] = ['code' => $error_code, 'message' => $exception->getMessage(), 'file' => $exception->getFile(), 'line' => $exception->getLine(), 'trace' => explode("\n", $exception->getTraceAsString())]; } else { $result->errors[] = ['code' => $error_code, 'message' => $exception->getMessage()]; } return $result->render($response, $error_code); }; }; }
public function testValidResponse() { $body = ['status' => 'ok']; $jsonRenderer = new Renderer(); $jsonRenderer->data = $body; $response = new Response(); $response = $jsonRenderer->render($response); $this->assertEquals($response->getStatusCode(), 200); $this->assertEquals($response->getHeaderLine('Content-Type'), 'application/json;charset=utf-8'); $this->assertEquals($response->getBody(), json_encode($jsonRenderer)); }