1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
<?php
namespace Interop\Http\Factory;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\UriInterface;
abstract class RequestFactoryTestCase extends TestCase
{
/**
* @var RequestFactoryInterface
*/
protected $factory;
/**
* @return RequestFactoryInterface
*/
abstract protected function createRequestFactory();
/**
* @param string $uri
*
* @return UriInterface
*/
abstract protected function createUri($uri);
public function setUp(): void
{
$this->factory = $this->createRequestFactory();
}
protected function assertRequest($request, $method, $uri)
{
static::assertInstanceOf(RequestInterface::class, $request);
static::assertSame($method, $request->getMethod());
static::assertSame($uri, (string) $request->getUri());
}
public static function dataMethods()
{
return [
'GET' => ['GET'],
'POST' => ['POST'],
'PUT' => ['PUT'],
'DELETE' => ['DELETE'],
'OPTIONS' => ['OPTIONS'],
'HEAD' => ['HEAD'],
];
}
#[DataProvider('dataMethods')]
public function testCreateRequest($method)
{
$uri = 'http://example.com/';
$request = $this->factory->createRequest($method, $uri);
$this->assertRequest($request, $method, $uri);
}
public function testCreateRequestWithUri()
{
$method = 'GET';
$uri = 'http://example.com/';
$request = $this->factory->createRequest($method, $this->createUri($uri));
$this->assertRequest($request, $method, $uri);
}
}
|