Completed
Pull Request — develop (#653)
by Alejandro
05:03
created

DropDefaultDomainFromRequestMiddlewareTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 18
dl 0
loc 37
rs 10
c 1
b 0
f 0
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A provideQueryParams() 0 7 1
A setUp() 0 4 1
A domainIsDroppedWhenDefaultOneIsProvided() 0 13 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ShlinkioTest\Shlink\Rest\Middleware\ShortUrl;
6
7
use Laminas\Diactoros\Response;
8
use Laminas\Diactoros\ServerRequestFactory;
9
use PHPUnit\Framework\Assert;
10
use PHPUnit\Framework\TestCase;
11
use Prophecy\Argument;
12
use Prophecy\Prophecy\ObjectProphecy;
13
use Psr\Http\Message\ServerRequestInterface;
14
use Psr\Http\Server\RequestHandlerInterface;
15
use Shlinkio\Shlink\Rest\Middleware\ShortUrl\DropDefaultDomainFromRequestMiddleware;
16
17
class DropDefaultDomainFromRequestMiddlewareTest extends TestCase
18
{
19
    private DropDefaultDomainFromRequestMiddleware $middleware;
20
    private ObjectProphecy $next;
21
22
    public function setUp(): void
23
    {
24
        $this->next = $this->prophesize(RequestHandlerInterface::class);
25
        $this->middleware = new DropDefaultDomainFromRequestMiddleware('doma.in');
26
    }
27
28
    /**
29
     * @test
30
     * @dataProvider provideQueryParams
31
     */
32
    public function domainIsDroppedWhenDefaultOneIsProvided(array $providedPayload, array $expectedPayload): void
33
    {
34
        $req = ServerRequestFactory::fromGlobals()->withQueryParams($providedPayload)->withParsedBody($providedPayload);
35
36
        $handle = $this->next->handle(Argument::that(function (ServerRequestInterface $request) use ($expectedPayload) {
37
            Assert::assertEquals($expectedPayload, $request->getQueryParams());
38
            Assert::assertEquals($expectedPayload, $request->getParsedBody());
39
            return $request;
40
        }))->willReturn(new Response());
41
42
        $this->middleware->process($req, $this->next->reveal());
43
44
        $handle->shouldHaveBeenCalledOnce();
45
    }
46
47
    public function provideQueryParams(): iterable
48
    {
49
        yield [[], []];
50
        yield [['foo' => 'bar'], ['foo' => 'bar']];
51
        yield [['foo' => 'bar', 'domain' => 'doma.in'], ['foo' => 'bar']];
52
        yield [['foo' => 'bar', 'domain' => 'not_default'], ['foo' => 'bar', 'domain' => 'not_default']];
53
        yield [['domain' => 'doma.in'], []];
54
    }
55
}
56