__invoke() public method

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);
 }