From 48164961fbaeae3dd549a9144009ce223c2b4979 Mon Sep 17 00:00:00 2001 From: Austin Collier Date: Tue, 2 Jan 2024 16:08:27 -0700 Subject: [PATCH] Engine at 100% coverage --- tests/EngineTest.php | 82 ++++++++++++++++++++++++++++++++++++++++++ tests/ResponseTest.php | 11 ------ 2 files changed, 82 insertions(+), 11 deletions(-) diff --git a/tests/EngineTest.php b/tests/EngineTest.php index a177356..cf2b13a 100644 --- a/tests/EngineTest.php +++ b/tests/EngineTest.php @@ -183,4 +183,86 @@ class EngineTest extends PHPUnit\Framework\TestCase $engine->halt(500, 'skip---exit'); $this->assertEquals(500, $engine->response()->status()); } + + public function testRedirect() { + $engine = new Engine(); + $engine->redirect('https://github.com', 302); + $this->assertEquals('https://github.com', $engine->response()->headers()['Location']); + $this->assertEquals(302, $engine->response()->status()); + } + + public function testRedirectWithBaseUrl() { + $engine = new Engine(); + $engine->set('flight.base_url', '/subdirectory'); + $engine->redirect('/someRoute', 301); + $this->assertEquals('/subdirectory/someRoute', $engine->response()->headers()['Location']); + $this->assertEquals(301, $engine->response()->status()); + } + + public function testJson() { + $engine = new Engine(); + $engine->json(['key1' => 'value1', 'key2' => 'value2']); + $this->expectOutputString('{"key1":"value1","key2":"value2"}'); + $this->assertEquals('application/json; charset=utf-8', $engine->response()->headers()['Content-Type']); + $this->assertEquals(200, $engine->response()->status()); + } + + public function testJsonP() { + $engine = new Engine(); + $engine->request()->query['jsonp'] = 'whatever'; + $engine->jsonp(['key1' => 'value1', 'key2' => 'value2']); + $this->expectOutputString('whatever({"key1":"value1","key2":"value2"});'); + $this->assertEquals('application/javascript; charset=utf-8', $engine->response()->headers()['Content-Type']); + $this->assertEquals(200, $engine->response()->status()); + } + + public function testJsonPBadParam() { + $engine = new Engine(); + $engine->jsonp(['key1' => 'value1', 'key2' => 'value2']); + $this->expectOutputString('({"key1":"value1","key2":"value2"});'); + $this->assertEquals('application/javascript; charset=utf-8', $engine->response()->headers()['Content-Type']); + $this->assertEquals(200, $engine->response()->status()); + } + + public function testEtagSimple() { + $engine = new Engine(); + $engine->etag('etag'); + $this->assertEquals('etag', $engine->response()->headers()['ETag']); + } + + public function testEtagWithHttpIfNoneMatch() { + // just need this not to exit... + $engine = new class extends Engine { + public function _halt(int $code = 200, string $message = ''): void + { + $this->response()->status($code); + $this->response()->write($message); + } + }; + $_SERVER['HTTP_IF_NONE_MATCH'] = 'etag'; + $engine->etag('etag'); + $this->assertEquals('etag', $engine->response()->headers()['ETag']); + $this->assertEquals(304, $engine->response()->status()); + } + + public function testLastModifiedSimple() { + $engine = new Engine(); + $engine->lastModified(1234567890); + $this->assertEquals('Fri, 13 Feb 2009 23:31:30 GMT', $engine->response()->headers()['Last-Modified']); + } + + public function testLastModifiedWithHttpIfModifiedSince() { + // just need this not to exit... + $engine = new class extends Engine { + public function _halt(int $code = 200, string $message = ''): void + { + $this->response()->status($code); + $this->response()->write($message); + } + }; + $_SERVER['HTTP_IF_MODIFIED_SINCE'] = 'Fri, 13 Feb 2009 23:31:30 GMT'; + $engine->lastModified(1234567890); + $this->assertEquals('Fri, 13 Feb 2009 23:31:30 GMT', $engine->response()->headers()['Last-Modified']); + $this->assertEquals(304, $engine->response()->status()); + } } diff --git a/tests/ResponseTest.php b/tests/ResponseTest.php index cd3e582..bbcdb62 100644 --- a/tests/ResponseTest.php +++ b/tests/ResponseTest.php @@ -17,21 +17,10 @@ class ResponseTest extends PHPUnit\Framework\TestCase { $_SERVER = []; $_REQUEST = []; - // $_SERVER['REQUEST_URI'] = '/'; - // $_SERVER['SCRIPT_NAME'] = '/index.php'; - // $_SERVER['REQUEST_METHOD'] = 'GET'; - // $_SERVER['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest'; - // $_SERVER['REMOTE_ADDR'] = '8.8.8.8'; - // $_SERVER['HTTP_X_FORWARDED_FOR'] = '32.32.32.32'; - // $_SERVER['HTTP_HOST'] = 'example.com'; - // $_SERVER['CONTENT_TYPE'] = ''; - $_GET = []; $_POST = []; $_COOKIE = []; $_FILES = []; - - // $this->request = new Request(); } protected function tearDown(): void {