From 390b529da7cc96ef67cda98008a67572e67c2771 Mon Sep 17 00:00:00 2001 From: Matt Kilgore Date: Fri, 6 Mar 2020 08:55:21 -0500 Subject: [PATCH] Test Middleware extender (#2017) --- .../integration/extenders/MiddlewareTest.php | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 framework/core/tests/integration/extenders/MiddlewareTest.php diff --git a/framework/core/tests/integration/extenders/MiddlewareTest.php b/framework/core/tests/integration/extenders/MiddlewareTest.php new file mode 100644 index 000000000..c93cc3265 --- /dev/null +++ b/framework/core/tests/integration/extenders/MiddlewareTest.php @@ -0,0 +1,96 @@ +extend( + (new Extend\Middleware('forum'))->add(FirstTestMiddleware::class) + ); + } + + /** + * @test + */ + public function can_add_middleware() + { + $this->extend( + (new Extend\Middleware('forum'))->add(FirstTestMiddleware::class) + ); + + $response = $this->send($this->request('GET', '/')); + + $this->assertEquals(200, $response->getStatusCode()); + $this->assertArrayHasKey('X-First-Test-Middleware', $response->getHeaders()); + } + + /** + * @test + */ + public function can_replace_middleware() + { + $this->add_first_middleware(); + $this->extend( + (new Extend\Middleware('forum'))->replace(FirstTestMiddleware::class, SecondTestMiddleware::class) + ); + + $response = $this->send($this->request('GET', '/')); + + $this->assertEquals(200, $response->getStatusCode()); + $this->assertArrayNotHasKey('X-First-Test-Middleware', $response->getHeaders()); + $this->assertArrayHasKey('X-Second-Test-Middleware', $response->getHeaders()); + } + + /** + * @test + */ + public function can_remove_middleware() + { + $this->add_first_middleware(); + $this->extend( + (new Extend\Middleware('forum'))->remove(FirstTestMiddleware::class) + ); + + $response = $this->send($this->request('GET', '/')); + + $this->assertEquals(200, $response->getStatusCode()); + $this->assertArrayNotHasKey('X-First-Test-Middleware', $response->getHeaders()); + } +} + +class FirstTestMiddleware implements MiddlewareInterface +{ + public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface + { + $response = $handler->handle($request); + + return $response->withAddedHeader('X-First-Test-Middleware', 'This is a test!'); + } +} + +class SecondTestMiddleware implements MiddlewareInterface +{ + public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface + { + $response = $handler->handle($request); + + return $response->withAddedHeader('X-Second-Test-Middleware', 'This is another test!'); + } +}