Completed
Pull Request — master (#125)
by
unknown
02:04
created

NetworkResolverTest.php$1 ➔ __construct()   A

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
dl 0
loc 3
rs 10
c 0
b 0
f 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
            private $serverRequest;
53
54
            public function __construct(string $expectedScheme)
55
            {
56
                $this->expectedScheme = $expectedScheme;
57
            }
58
59
            /**
60
             * @return static
61
             */
62
            public function withServerRequest(ServerRequestInterface $serverRequest)
63
            {
64
                $new = clone $this;
65
                $new->serverRequest = $serverRequest;
66
                return $new;
67
            }
68
69
            public function getRemoteIp(): string
70
            {
71
                throw new \RuntimeException('Not supported!');
72
            }
73
74
            public function getUserIp(): string
75
            {
76
                throw new \RuntimeException('Not supported!');
77
            }
78
79
            public function getRequestScheme(): string
80
            {
81
                return $this->expectedScheme;
82
            }
83
84
            public function isSecureConnection(): bool
85
            {
86
                throw new \RuntimeException('Not supported!');
87
            }
88
        };
89
        $middleware = new NetworkResolver($nr);
90
        $middleware->process($request, $requestHandler);
91
        $resultRequest = $requestHandler->request;
92
        /* @var $resultRequest ServerRequestInterface */
93
        $this->assertSame($expectedScheme, $resultRequest->getUri()->getScheme());
94
    }
95
96
}
97