private function performTestRequest($logger, $request, $response) { $stack = new HandlerStack(new MockHandler([$response])); $stack->push(LoggingMiddleware::forLogger($logger)); $handler = $stack->resolve(); return $handler($request, [])->wait(); }
public function testCanRemoveMiddlewareByInstance() { $meths = $this->getFunctions(); $builder = new HandlerStack(); $builder->setHandler($meths[1]); $builder->push($meths[2]); $builder->push($meths[2]); $builder->push($meths[3]); $builder->push($meths[4]); $builder->push($meths[2]); $builder->remove($meths[3]); $composed = $builder->resolve(); $this->assertEquals('Hello - test1131', $composed('test')); }
/** * @dataProvider expectProvider * * @param int $duration The expected duration. */ public function testNullStopwatch($duration) { // HandlerStack $response = new Response(200); $stack = new HandlerStack(new MockHandler([$response])); // Middleware $middleware = new StopwatchMiddleware(); $stack->push($middleware); $handler = $stack->resolve(); // Request $request = new Request('GET', 'http://example.com'); $promise = $handler($request, []); $response = $promise->wait(); $this->assertNotEquals($response->getHeaderLine('X-Duration'), $duration); }
public function testLogsRequestsAndErrors() { $h = new MockHandler([new Response(404)]); $stack = new HandlerStack($h); $logger = new Logger(); $formatter = new MessageFormatter('{code} {error}'); $stack->push(Middleware::log($logger, $formatter)); $stack->push(Middleware::httpErrors()); $comp = $stack->resolve(); $p = $comp(new Request('PUT', 'http://www.google.com'), ['http_errors' => true]); $p->wait(false); $this->assertContains('PUT http://www.google.com', $logger->output); $this->assertContains('404 Not Found', $logger->output); }
public function testSubscriberDoesNotDoAnythingForNonGigyaAuthRequests() { $handler = new MockHandler([function (RequestInterface $request, array $options) { $query = $request->getUri()->getQuery(); $this->assertNotRegExp('/apiKey=/', $query); $this->assertNotRegExp('/secret=/', $query); $this->assertNotRegExp('/userKey=/', $query); return new Response(200); }]); $stack = new HandlerStack($handler); $stack->push(HttpsAuthMiddleware::middleware('key', 'secret', 'user')); $comp = $stack->resolve(); $promise = $comp(new Request('GET', 'http://example.com'), ['auth' => 'oauth']); $this->assertInstanceOf(PromiseInterface::class, $promise); }
public function testIgnoresIfExpectIsPresent() { $bd = Psr7\stream_for(fopen(__DIR__ . '/../composer.json', 'r')); $h = new MockHandler([function (RequestInterface $request) { $this->assertEquals(['Foo'], $request->getHeader('Expect')); return new Response(200); }]); $m = Middleware::prepareBody(); $stack = new HandlerStack($h); $stack->push($m); $comp = $stack->resolve(); $p = $comp(new Request('PUT', 'http://www.google.com', ['Expect' => 'Foo'], $bd), ['expect' => true]); $this->assertInstanceOf(PromiseInterface::class, $p); $response = $p->wait(); $this->assertEquals(200, $response->getStatusCode()); }
public function testInvokesOnRedirectForRedirects() { $mock = new MockHandler([new Response(302, ['Location' => 'http://test.com']), new Response(200)]); $stack = new HandlerStack($mock); $stack->push(Middleware::redirect()); $handler = $stack->resolve(); $request = new Request('GET', 'http://example.com?a=b'); $call = false; $promise = $handler($request, ['allow_redirects' => ['max' => 2, 'on_redirect' => function ($request, $response, $uri) use(&$call) { $this->assertEquals(302, $response->getStatusCode()); $this->assertEquals('GET', $request->getMethod()); $this->assertEquals('http://test.com', (string) $uri); $call = true; }]]); $promise->wait(); $this->assertTrue($call); }
public function testErrorWhenNoTokenIsReturnedWillNotIntercept() { $handler = new MockHandler([function (RequestInterface $request) { $this->assertEquals('', $request->getHeaderLine('Authorization')); return new Response(401); }]); $this->grant->shouldReceive('getToken')->atLeast()->once()->andReturn(null); $stack = new HandlerStack($handler); $stack->push(OAuth2Middleware::middleware($this->grant)); $comp = $stack->resolve(); /** @var PromiseInterface $promise */ $promise = $comp(new Request('GET', 'https://example.com'), ['auth' => 'gigya-oauth2']); $this->assertInstanceOf(PromiseInterface::class, $promise); /** @var ResponseInterface $response */ $response = $promise->wait(true); $this->assertEquals(401, $response->getStatusCode()); }