mirror of
https://github.com/shlinkio/shlink.git
synced 2025-03-27 20:11:34 +03:00
Migrated BodyParserMiddlewareTest to use PHPUnit mocks
This commit is contained in:
parent
3433899577
commit
b2b424a4ed
1 changed files with 20 additions and 33 deletions
|
@ -7,20 +7,14 @@ namespace ShlinkioTest\Shlink\Rest\Middleware;
|
||||||
use Laminas\Diactoros\Response;
|
use Laminas\Diactoros\Response;
|
||||||
use Laminas\Diactoros\ServerRequest;
|
use Laminas\Diactoros\ServerRequest;
|
||||||
use Laminas\Diactoros\Stream;
|
use Laminas\Diactoros\Stream;
|
||||||
|
use PHPUnit\Framework\MockObject\MockObject;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use Prophecy\Argument;
|
|
||||||
use Prophecy\PhpUnit\ProphecyTrait;
|
|
||||||
use Prophecy\Prophecy\ProphecyInterface;
|
|
||||||
use Psr\Http\Message\ServerRequestInterface;
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
use Psr\Http\Server\RequestHandlerInterface;
|
use Psr\Http\Server\RequestHandlerInterface;
|
||||||
use Shlinkio\Shlink\Rest\Middleware\BodyParserMiddleware;
|
use Shlinkio\Shlink\Rest\Middleware\BodyParserMiddleware;
|
||||||
|
|
||||||
use function array_shift;
|
|
||||||
|
|
||||||
class BodyParserMiddlewareTest extends TestCase
|
class BodyParserMiddlewareTest extends TestCase
|
||||||
{
|
{
|
||||||
use ProphecyTrait;
|
|
||||||
|
|
||||||
private BodyParserMiddleware $middleware;
|
private BodyParserMiddleware $middleware;
|
||||||
|
|
||||||
protected function setUp(): void
|
protected function setUp(): void
|
||||||
|
@ -34,11 +28,11 @@ class BodyParserMiddlewareTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public function requestsFromOtherMethodsJustFallbackToNextMiddleware(string $method): void
|
public function requestsFromOtherMethodsJustFallbackToNextMiddleware(string $method): void
|
||||||
{
|
{
|
||||||
$request = $this->prophesize(ServerRequestInterface::class);
|
$request = $this->createMock(ServerRequestInterface::class);
|
||||||
$request->getMethod()->willReturn($method);
|
$request->method('getMethod')->willReturn($method);
|
||||||
$request->getParsedBody()->willReturn([]);
|
$request->method('getParsedBody')->willReturn([]);
|
||||||
|
|
||||||
self::assertHandlingRequestJustFallsBackToNext($request);
|
$this->assertHandlingRequestJustFallsBackToNext($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function provideIgnoredRequestMethods(): iterable
|
public function provideIgnoredRequestMethods(): iterable
|
||||||
|
@ -51,25 +45,21 @@ class BodyParserMiddlewareTest extends TestCase
|
||||||
/** @test */
|
/** @test */
|
||||||
public function requestsWithNonEmptyBodyJustFallbackToNextMiddleware(): void
|
public function requestsWithNonEmptyBodyJustFallbackToNextMiddleware(): void
|
||||||
{
|
{
|
||||||
$request = $this->prophesize(ServerRequestInterface::class);
|
$request = $this->createMock(ServerRequestInterface::class);
|
||||||
$request->getMethod()->willReturn('POST');
|
$request->method('getMethod')->willReturn('POST');
|
||||||
$request->getParsedBody()->willReturn(['foo' => 'bar']);
|
$request->method('getParsedBody')->willReturn(['foo' => 'bar']);
|
||||||
|
|
||||||
self::assertHandlingRequestJustFallsBackToNext($request);
|
$this->assertHandlingRequestJustFallsBackToNext($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function assertHandlingRequestJustFallsBackToNext(ProphecyInterface $requestMock): void
|
private function assertHandlingRequestJustFallsBackToNext(MockObject & ServerRequestInterface $request): void
|
||||||
{
|
{
|
||||||
$getContentType = $requestMock->getHeaderLine('Content-type')->willReturn('');
|
$request->expects($this->never())->method('getHeaderLine');
|
||||||
$request = $requestMock->reveal();
|
|
||||||
|
|
||||||
$nextHandler = $this->prophesize(RequestHandlerInterface::class);
|
$nextHandler = $this->createMock(RequestHandlerInterface::class);
|
||||||
$handle = $nextHandler->handle($request)->willReturn(new Response());
|
$nextHandler->expects($this->once())->method('handle')->with($request)->willReturn(new Response());
|
||||||
|
|
||||||
$this->middleware->process($request, $nextHandler->reveal());
|
$this->middleware->process($request, $nextHandler);
|
||||||
|
|
||||||
$handle->shouldHaveBeenCalledOnce();
|
|
||||||
$getContentType->shouldNotHaveBeenCalled();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @test */
|
/** @test */
|
||||||
|
@ -80,12 +70,11 @@ class BodyParserMiddlewareTest extends TestCase
|
||||||
$body->write('{"foo": "bar", "bar": ["one", 5]}');
|
$body->write('{"foo": "bar", "bar": ["one", 5]}');
|
||||||
$request = (new ServerRequest())->withMethod('PUT')
|
$request = (new ServerRequest())->withMethod('PUT')
|
||||||
->withBody($body);
|
->withBody($body);
|
||||||
$delegate = $this->prophesize(RequestHandlerInterface::class);
|
$handler = $this->createMock(RequestHandlerInterface::class);
|
||||||
$process = $delegate->handle(Argument::type(ServerRequestInterface::class))->will(
|
$handler->expects($this->once())->method('handle')->with(
|
||||||
function (array $args) use ($test) {
|
$this->isInstanceOf(ServerRequestInterface::class),
|
||||||
/** @var ServerRequestInterface $req */
|
)->willReturnCallback(
|
||||||
$req = array_shift($args);
|
function (ServerRequestInterface $req) use ($test) {
|
||||||
|
|
||||||
$test->assertEquals([
|
$test->assertEquals([
|
||||||
'foo' => 'bar',
|
'foo' => 'bar',
|
||||||
'bar' => ['one', 5],
|
'bar' => ['one', 5],
|
||||||
|
@ -95,8 +84,6 @@ class BodyParserMiddlewareTest extends TestCase
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->middleware->process($request, $delegate->reveal());
|
$this->middleware->process($request, $handler);
|
||||||
|
|
||||||
$process->shouldHaveBeenCalledOnce();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue