Passed
Push — master ( de4ed9...5f6eee )
by Petr
10:41
created

FixServerTest::providerAuthUpdNotExists()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 14
rs 10
1
<?php
2
3
namespace ParserTests;
4
5
6
use CommonTestClass;
7
use kalanis\kw_input\Parsers;
8
9
10
class FixServerTest extends CommonTestClass
11
{
12
    /**
13
     * @param array<string, string> $vars
14
     * @param string $result
15
     * @dataProvider providerRequestIsapi
16
     */
17
    public function testRequestIsApi(array $vars, string $result): void
18
    {
19
        $data = Parsers\FixServer::updateVars($vars);
20
        $this->assertEquals($result, $data['REQUEST_URI']);
21
    }
22
23
    public function providerRequestIsApi(): array
24
    {
25
        return [
26
            [[
27
                'HTTP_X_ORIGINAL_URL' => 'something',
28
            ], 'something'],
29
            [[
30
                'HTTP_X_REWRITE_URL' => 'anything',
31
            ], 'anything'],
32
            [[
33
                'PATH_INFO' => 'whatToKnow',
34
            ], 'whatToKnow'],
35
            [[
36
                'ORIG_PATH_INFO' => 'whatToKnow',
37
            ], 'whatToKnow'],
38
            [[
39
                'PATH_INFO' => 'samePath',
40
                'SCRIPT_NAME' => 'samePath',
41
            ], 'samePath'],
42
            [[
43
                'PATH_INFO' => 'SamePath',
44
                'SCRIPT_NAME' => 'Different',
45
            ], 'DifferentSamePath'],
46
            [[
47
                'PATH_INFO' => 'whatToKnow',
48
                'QUERY_STRING' => 'extraKnowledge',
49
            ], 'whatToKnow?extraKnowledge'],
50
        ];
51
    }
52
53
    /**
54
     * @param array<string, string> $vars
55
     * @param string $result
56
     * @dataProvider providerScriptFileName
57
     */
58
    public function testScriptFileName(array $vars, string $result): void
59
    {
60
        $data = Parsers\FixServer::updateVars($vars);
61
        $this->assertEquals($result, $data['SCRIPT_FILENAME']);
62
    }
63
64
    public function providerScriptFileName(): array
65
    {
66
        return [
67
            [[
68
                'SCRIPT_FILENAME' => 'php.cgi',
69
                'PATH_TRANSLATED' => 'something',
70
            ], 'something'],
71
            [[
72
                'SCRIPT_FILENAME' => 'different',
73
                'PATH_TRANSLATED' => 'something',
74
            ], 'different'],
75
        ];
76
    }
77
78
    /**
79
     * @param array<string, string> $vars
80
     * @param bool $result
81
     * @dataProvider providerScriptName
82
     */
83
    public function testScriptName(array $vars, bool $result): void
84
    {
85
        $data = Parsers\FixServer::updateVars($vars);
86
        $this->assertEquals($result, isset($data['PATH_INFO']));
87
    }
88
89
    public function providerScriptName(): array
90
    {
91
        return [
92
            [[
93
                'SCRIPT_NAME' => 'php.cgi',
94
                'PATH_INFO' => 'something',
95
            ], false],
96
            [[
97
                'SCRIPT_NAME' => 'different',
98
                'PATH_INFO' => 'something',
99
            ], true],
100
        ];
101
    }
102
103
    /**
104
     * @param array<string, string> $vars
105
     * @param string $result
106
     * @dataProvider providerRequestUrlSelf
107
     */
108
    public function testRequestUrlSelf(array $vars, string $result): void
109
    {
110
        $data = Parsers\FixServer::updateVars($vars);
111
        $this->assertEquals($result, $data['PHP_SELF']);
112
    }
113
114
    public function providerRequestUrlSelf(): array
115
    {
116
        return [
117
            [['REQUEST_URI' => '//something',], '//something'],
118
            [['PHP_SELF' => '//something',], '//something'],
119
            [['PHP_SELF' => 'different', 'REQUEST_URI' => '//something',], 'different'],
120
        ];
121
    }
122
123
    /**
124
     * @param array<string, string> $vars
125
     * @param string $user
126
     * @param string $pw
127
     * @dataProvider providerAuthUpdExists
128
     */
129
    public function testAuthUpdExists(array $vars, string $user, string $pw): void
130
    {
131
        $data = Parsers\FixServer::updateAuth($vars);
132
        $this->assertEquals($user, $data['PHP_AUTH_USER']);
133
        $this->assertEquals($pw, $data['PHP_AUTH_PW']);
134
    }
135
136
    public function providerAuthUpdExists(): array
137
    {
138
        return [
139
            [[
140
                'HTTP_AUTHORIZATION' => 'somewhere',
141
                'PHP_AUTH_USER' => 'something',
142
                'PHP_AUTH_PW' => 'oh-no-no',
143
            ], 'something', 'oh-no-no', ],
144
            [[
145
                'HTTP_AUTHORIZATION' => 'Basic c29tZXRoaW5nOndpdGhvdXQtc2Vuc2U=',
146
            ], 'something', 'without-sense', ],
147
        ];
148
    }
149
150
    /**
151
     * @param array<string, string> $vars
152
     * @dataProvider providerAuthUpdNotExists
153
     */
154
    public function testAuthUpdNotExists(array $vars): void
155
    {
156
        $data = Parsers\FixServer::updateAuth($vars);
157
        $this->assertFalse(isset($data['PHP_AUTH_USER']));
158
        $this->assertFalse(isset($data['PHP_AUTH_PW']));
159
    }
160
161
    public function providerAuthUpdNotExists(): array
162
    {
163
        return [
164
            [[
165
                'HTTP_X_ORIGINAL_URL' => 'something',
166
            ], ],
167
            [[
168
                'HTTP_AUTHORIZATION' => 'not-a-header',
169
            ], ],
170
            [[
171
                'REDIRECT_HTTP_AUTHORIZATION' => 'not-a-header',
172
            ], ],
173
            [[
174
                'HTTP_AUTHORIZATION' => 'Basic c29tZXRoaW5nLXdpdGhvdXQtc2Vuc2U=',
175
            ], ],
176
        ];
177
    }
178
}
179