public function testHandlerIsKeptByCompilerPass() { $handlerDefinition = new Definition(); $client = $this->createClient([], $handlerDefinition); $container = $this->createContainer(); $container->setDefinition('client', $client); foreach (['foo' => 0, 'bar' => 10, 'qux' => -1000] as $alias => $priority) { $this->createMiddleware($container, $alias, $priority); } $pass = new MiddlewarePass(); $pass->process($container); $this->assertSame($handlerDefinition, $client->getArgument(0)['handler']); }
public function testSpecificMiddlewareAddedToClient() { $client = $this->createClient(['foo', 'bar']); $container = $this->createContainer(); $container->setDefinition('client', $client); foreach (['foo', 'bar', 'qux'] as $alias) { $this->createMiddleware($container, $alias); } $pass = new MiddlewarePass(); $pass->process($container); $handler = $client->getArgument(0)['handler']; $handlerDefinition = $container->getDefinition((string) $handler); $this->assertCount(2, $calls = $handlerDefinition->getMethodCalls()); $this->assertEquals(['push', [new Reference('foo'), 'foo']], $calls[0]); $this->assertEquals(['push', [new Reference('bar'), 'bar']], $calls[1]); }
public function testMiddlewareWithPriority() { $client = $this->createClient(); $container = $this->createContainer(); $container->setDefinition('client', $client); foreach (['foo' => 0, 'bar' => 10, 'qux' => -1000] as $alias => $priority) { $this->createMiddleware($container, $alias, $priority); } $pass = new MiddlewarePass(); $pass->process($container); $handler = $client->getArgument(0)['handler']; $handlerDefinition = $container->getDefinition((string) $handler); $this->assertCount(3, $calls = $handlerDefinition->getMethodCalls()); $this->assertEquals(['push', [new Reference('bar'), 'bar']], $calls[0]); $this->assertEquals(['push', [new Reference('foo'), 'foo']], $calls[1]); $this->assertEquals(['push', [new Reference('qux'), 'qux']], $calls[2]); }
public function testCustomHandlerCallableIsWrappedAndMiddlewareAdded() { $handler = function () { }; $client = $this->createClient([], $handler); $container = $this->createContainer(); $container->setDefinition('client', $client); foreach (['foo' => 0, 'bar' => 10, 'qux' => -1000] as $alias => $priority) { $this->createMiddleware($container, $alias, $priority); } $pass = new MiddlewarePass(); $pass->process($container); $clientHandler = $client->getArgument(0)['handler']; $this->assertInstanceOf(Definition::class, $clientHandler); $this->assertSame(HandlerStack::class, $clientHandler->getClass()); $this->assertSame($handler, $clientHandler->getArgument(0)); $this->assertTrue($clientHandler->hasMethodCall('push')); }