Completed
Pull Request — master (#125)
by
unknown
01:43
created

NetworkResolverTest::simpleDataProvider()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
dl 0
loc 7
rs 10
c 2
b 0
f 0
eloc 5
nc 1
nop 0
1
<?php
2
3
4
namespace Yiisoft\Yii\Web\Tests\Middleware;
5
6
use Nyholm\Psr7\Response;
7
use Nyholm\Psr7\ServerRequest;
8
use PHPUnit\Framework\TestCase;
9
use Psr\Http\Message\ResponseInterface;
10
use Psr\Http\Message\ServerRequestInterface;
11
use Psr\Http\Server\RequestHandlerInterface;
12
use Yiisoft\Yii\Web\Middleware\NetworkResolver;
13
use Yiisoft\Yii\Web\NetworkResolver\NetworkResolverInterface;
14
15
class NetworkResolverTest extends TestCase
16
{
17
18
    public function simpleDataProvider()
19
    {
20
        return [
21
            'http2http' => ['http', 'http'],
22
            'https2http' => ['https', 'http'],
23
            'http2https' => ['http', 'https'],
24
            'https2https' => ['https', 'https'],
25
        ];
26
    }
27
28
    /**
29
     * @dataProvider simpleDataProvider
30
     */
31
    public function testSimple(string $scheme, string $expectedScheme)
32
    {
33
        $request = new ServerRequest('GET', '/');
34
        $uri = $request->getUri()->withScheme($scheme);
35
        $request = $request->withUri($uri);
36
37
        $requestHandler = new class implements RequestHandlerInterface
38
        {
39
            public $request;
40
41
            public function handle(ServerRequestInterface $request): ResponseInterface
42
            {
43
                $this->request = $request;
44
                return new Response(200);
45
            }
46
        };
47
48
        $nr = new class($expectedScheme) implements NetworkResolverInterface
49
        {
50
51
            private $expectedScheme;
52
            /**
53
             * @var ServerRequestInterface
54
             */
55
            private $serverRequest;
56
57
            public function __construct(string $expectedScheme)
58
            {
59
                $this->expectedScheme = $expectedScheme;
60
            }
61
62
            /**
63
             * @return static
64
             */
65
            public function withServerRequest(ServerRequestInterface $serverRequest)
66
            {
67
                $new = clone $this;
68
                $new->serverRequest = $serverRequest;
69
                return $new;
70
            }
71
72
            public function getRemoteIp(): string
73
            {
74
                throw new \RuntimeException('Not supported!');
75
            }
76
77
            public function getUserIp(): string
78
            {
79
                throw new \RuntimeException('Not supported!');
80
            }
81
82
            public function getServerRequest(): ServerRequestInterface
83
            {
84
                return $this->serverRequest->withUri($this->serverRequest->getUri()->withScheme($this->expectedScheme));
85
            }
86
87
            public function isSecureConnection(): bool
88
            {
89
                throw new \RuntimeException('Not supported!');
90
            }
91
        };
92
        $middleware = new NetworkResolver($nr);
93
        $middleware->process($request, $requestHandler);
94
        $resultRequest = $requestHandler->request;
95
        /* @var $resultRequest ServerRequestInterface */
96
        $this->assertSame($expectedScheme, $resultRequest->getUri()->getScheme());
97
    }
98
99
}
100