diff --git a/core/tests/Drupal/Tests/Core/Http/HandlerStackConfiguratorTest.php b/core/tests/Drupal/Tests/Core/Http/HandlerStackConfiguratorTest.php new file mode 100644 index 0000000..2f91eae --- /dev/null +++ b/core/tests/Drupal/Tests/Core/Http/HandlerStackConfiguratorTest.php @@ -0,0 +1,77 @@ +set('test_middleware_non_callable', new TestMiddlewareNonCallable()); + $middleware_ids = ['test_middleware_non_callable']; + $handler_stack_configurator = new HandlerStackConfigurator($container, $middleware_ids); + $handler_stack_configurator->configure($handler_stack); + } + + /** + * @covers ::configure + * @covers ::initializeMiddlewares + */ + public function testConfigureWithCallableService() { + $handler_stack = new HandlerStack(new CurlHandler()); + + $container = new Container(); + $container->set('test_middleware_callable', new TestMiddlewareCallable()); + $middleware_ids = ['test_middleware_callable']; + $handler_stack_configurator = new HandlerStackConfigurator($container, $middleware_ids); + $handler_stack_configurator->configure($handler_stack); + + $request = new Request('GET', '/example'); + $options = []; + /** @var \Psr\Http\Message\ResponseInterface $response */ + $response = $handler_stack($request, $options); + $this->assertEquals(418, $response->getStatusCode()); + } + +} + +class TestMiddlewareNonCallable { + +} + +class TestMiddlewareCallable { + + public function __invoke() { + return function ($handler) { + return function (RequestInterface $request, array $options) use ($handler) { + return new Response(418); + }; + }; + } + +}