If $out is not provided, uses the result of getFinalHandler().
public __invoke ( Psr\Http\Message\ServerRequestInterface $request, Psr\Http\Message\ResponseInterface $response, callable $out = null ) : Psr\Http\Message\ResponseInterface | ||
$request | Psr\Http\Message\ServerRequestInterface | |
$response | Psr\Http\Message\ResponseInterface | |
$out | callable | |
return | Psr\Http\Message\ResponseInterface |
public function testResourceIdRelationIdRequest() { $request = $this->request->withUri(new Uri('http://localhost/api/ping/1/comments/1'))->withMethod('GET'); $response = $this->app->__invoke($request, new Response()); $data = json_decode((string) $response->getBody(), true); $this->assertEquals(200, $response->getStatusCode()); $this->assertArrayHasKey('ack', $data); }
public function testIntegrationExample() { $request = new ServerRequest([], [], 'https://example.com/', 'GET'); $response = $this->app->__invoke($request, new Response()); $body = (string) $response->getBody(); $this->assertEquals(200, $response->getStatusCode()); $this->assertContains('text/html', $response->getHeaderLine('Content-Type')); $this->assertContains('<title>Home</title>', $body); }
/** * @param string $method * @param string $uri * @param array|null $parameters * @param array|null $sessionData * * @return ResponseInterface * * @throws \BadMethodCallException * @throws \Interop\Container\Exception\NotFoundException * @throws \Interop\Container\Exception\ContainerException * @throws \InvalidArgumentException */ protected function handleRequest(string $method, string $uri, array $parameters = null, array $sessionData = null) : ResponseInterface { // Create request $request = (new ServerRequest())->withMethod($method)->withUri(new Uri($uri)); // Set post parameters if ($parameters !== null) { $request = $request->withParsedBody($parameters); } // Set PSR-7 session data if ($sessionData !== null) { // Get session middleware $sessionMiddleWare = self::$container->get(SessionMiddleware::class); // Get signer $signerReflection = new \ReflectionProperty($sessionMiddleWare, 'signer'); $signerReflection->setAccessible(true); $signer = $signerReflection->getValue($sessionMiddleWare); // Get signature key $signatureKeyReflection = new \ReflectionProperty($sessionMiddleWare, 'signatureKey'); $signatureKeyReflection->setAccessible(true); $signatureKey = $signatureKeyReflection->getValue($sessionMiddleWare); // Set session data as a cookie $request = $request->withCookieParams([SessionMiddleware::DEFAULT_COOKIE => (string) (new Builder())->setIssuedAt((new \DateTime('-30 second'))->getTimestamp())->setExpiration((new \DateTime('+30 second'))->getTimestamp())->set(SessionMiddleware::SESSION_CLAIM, DefaultSessionData::fromTokenData($sessionData))->sign($signer, $signatureKey)->getToken()]); } // Invoke the request return self::$app->__invoke($request, new Response()); }
public function testDeleteUnknownUser() { $uuid = 'badfdcad-1ad5-42fb-8da6-4a2db08c6941'; $request = $this->request->withUri(new Uri(sprintf('http://localhost/api/users/%s', $uuid)))->withMethod('DELETE'); $response = $this->app->__invoke($request, new Response()); $data = json_decode((string) $response->getBody(), true); $this->assertEquals(404, $response->getStatusCode()); $this->assertEquals('application/json', $response->getHeaderLine('Content-Type')); $this->assertArrayHasKey('errors', $data); }