84 lines
2.0 KiB
PHP
84 lines
2.0 KiB
PHP
<?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;
|
|
use Slovocast\Domain\Entity\User;
|
|
|
|
/**
|
|
* 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
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Quickly generate a User new User entity for testing.
|
|
*
|
|
* @param array $user The User properties to call User:fromArray on
|
|
* @return User a new User entity
|
|
*/
|
|
protected function getUserFromArray(array $user = []): User
|
|
{
|
|
if (empty($user)) {
|
|
$user = [
|
|
'email' => 'dave@slovocast.com',
|
|
'name' => 'Dave SH',
|
|
'password' => 'hashed_password'
|
|
];
|
|
}
|
|
|
|
return User::fromArray($user);
|
|
}
|
|
}
|