<?php namespace Slovocast\Tests; use PHPUnit\Framework\TestCase as PHPUnit_TestCase; use Prophecy\PhpUnit\ProphecyTrait; use Psr\Http\Message\ServerRequestInterface as Request; use Slim\App; use Slim\Psr7\Factory\StreamFactory; use Slim\Psr7\Headers; use Slim\Psr7\Request as SlimRequest; use Slim\Psr7\Uri; use Slovocast\Bootstrap; /** * This is the common test harness pattern lifted right out of the official * SlimPHP Skeleton application. */ class TestCase extends PHPUnit_TestCase { use ProphecyTrait; /** * Generate an instance of the Application */ protected function getAppInstance(): App { return Bootstrap::init(); } /** * @param string $method * @param string path * @param array $headers * @param array $cookies * @param array $serverParams */ protected function createRequest( string $method, string $path, array $headers = [], array $cookies = [], array $serverParams = [] ): Request { $uri = new Uri('', '', 80, $path); $handle = fopen('php://temp', 'w+'); $stream = (new StreamFactory())->createStreamFromResource($handle); $h = new Headers(); foreach ($headers as $name => $value) { $h->addHeader($name, $value); } return new SlimRequest( $method, $uri, $h, $cookies, $serverParams, $stream ); } }