diff options
| author | Brett Parson <brett@brett-parson.com> | 2026-08-21 13:55:37 -0500 |
|---|---|---|
| committer | Brett Parson <brett@brett-parson.com> | 2026-08-21 14:00:11 -0500 |
| commit | d039a5d62a9ac6ababae70d9d96422ca59f2b2d4 (patch) | |
| tree | f0db4750a571e8040a5da02cc7190079c0d62914 /tests/MiddlewarePipelineTest.php | |
| parent | 0de77a6334cee1f6e15f7e0fd35602514560be33 (diff) | |
| download | miniroute-d039a5d62a9ac6ababae70d9d96422ca59f2b2d4.tar.gz miniroute-d039a5d62a9ac6ababae70d9d96422ca59f2b2d4.zip | |
Scaffold miniroute routing/middleware kernel
Diffstat (limited to 'tests/MiddlewarePipelineTest.php')
| -rw-r--r-- | tests/MiddlewarePipelineTest.php | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/MiddlewarePipelineTest.php b/tests/MiddlewarePipelineTest.php new file mode 100644 index 0000000..107dce3 --- /dev/null +++ b/tests/MiddlewarePipelineTest.php @@ -0,0 +1,38 @@ +<?php + +declare(strict_types=1); + +namespace BrettParson\MiniRoute\Tests; + +use ArrayObject; +use BrettParson\MiniRoute\Http\RequestInterface; +use BrettParson\MiniRoute\Http\ResponseInterface; +use BrettParson\MiniRoute\Middleware\MiddlewarePipeline; +use BrettParson\MiniRoute\Tests\Fixtures\FakeMiddleware; +use BrettParson\MiniRoute\Tests\Fixtures\TestRequest; +use BrettParson\MiniRoute\Tests\Fixtures\TestResponse; +use PHPUnit\Framework\TestCase; + +final class MiddlewarePipelineTest extends TestCase +{ + public function testMiddlewareRunsOutermostFirstAndCoreLast(): void + { + $log = new ArrayObject(); + + $outer = new FakeMiddleware('outer', $log); + $inner = new FakeMiddleware('inner', $log); + + $core = static function (RequestInterface $request) use ($log): ResponseInterface { + $log->append('core'); + + return new TestResponse(200, 'ok'); + }; + + $pipeline = MiddlewarePipeline::compose([$outer, $inner], $core); + + $response = $pipeline(new TestRequest('GET', '/')); + + $this->assertSame(['outer', 'inner', 'core'], $log->getArrayCopy()); + $this->assertSame(200, $response->status()); + } +} |
