Code Duplication    Length = 18-22 lines in 6 locations

tests/WhipTest.php 6 locations

@@ 123-143 (lines=21) @@
120
     * Tests that we accept proxy method based on a whitelisted IP using the
121
     * dashed range notation.
122
     */
123
    public function testValidWhitelistedProxyMethodWithDashNotation()
124
    {
125
        $_SERVER = array(
126
            'REMOTE_ADDR' => '127.0.0.1',
127
            'HTTP_X_FORWARDED_FOR' => '32.32.32.32'
128
        );
129
        $lookup = new Whip(
130
            Whip::PROXY_HEADERS,
131
            array(
132
                Whip::PROXY_HEADERS => array(
133
                    IpWhitelist::IPV4 => array(
134
                        '127.0.0.0-127.0.255.255',
135
                    ),
136
                    IpWhitelist::IPV6 => array(
137
                        '::1'
138
                    )
139
                )
140
            )
141
        );
142
        $this->assertEquals('32.32.32.32', $lookup->getIpAddress());
143
    }
144
145
    /**
146
     * Tests that we accept proxy method based on a whitelisted IP using the
@@ 149-169 (lines=21) @@
146
     * Tests that we accept proxy method based on a whitelisted IP using the
147
     * wildcard asterix notation.
148
     */
149
    public function testValidWhitelistedProxyMethodWithWildcardNotation()
150
    {
151
        $_SERVER = array(
152
            'REMOTE_ADDR' => '127.0.0.1',
153
            'HTTP_X_FORWARDED_FOR' => '32.32.32.32'
154
        );
155
        $lookup = new Whip(
156
            Whip::PROXY_HEADERS,
157
            array(
158
                Whip::PROXY_HEADERS => array(
159
                    IpWhitelist::IPV4 => array(
160
                        '127.0.*'
161
                    ),
162
                    IpWhitelist::IPV6 => array(
163
                        '::1'
164
                    )
165
                )
166
            )
167
        );
168
        $this->assertEquals('32.32.32.32', $lookup->getIpAddress());
169
    }
170
171
    /**
172
     * Tests that we accept proxy method based on a whitelisted IP using the
@@ 175-195 (lines=21) @@
172
     * Tests that we accept proxy method based on a whitelisted IP using the
173
     * CIDR address notation.
174
     */
175
    public function testValidWhitelistedProxyMethodWithCIDRdNotation()
176
    {
177
        $_SERVER = array(
178
            'REMOTE_ADDR' => '127.0.0.1',
179
            'HTTP_X_FORWARDED_FOR' => '32.32.32.32'
180
        );
181
        $lookup = new Whip(
182
            Whip::PROXY_HEADERS,
183
            array(
184
                Whip::PROXY_HEADERS => array(
185
                    IpWhitelist::IPV4 => array(
186
                        '127.0.0.0/24'
187
                    ),
188
                    IpWhitelist::IPV6 => array(
189
                        '::1'
190
                    )
191
                )
192
            )
193
        );
194
        $this->assertEquals('32.32.32.32', $lookup->getIpAddress());
195
    }
196
197
    /**
198
     * Tests that we get false if there is a valid IP in a proxy header but
@@ 201-221 (lines=21) @@
198
     * Tests that we get false if there is a valid IP in a proxy header but
199
     * we reject it due to REMOTE_ADDR not being in the whitelist.
200
     */
201
    public function testValidIpRejectedDueToWhitelist()
202
    {
203
        $_SERVER = array(
204
            'REMOTE_ADDR' => '24.24.24.24',
205
            'HTTP_X_FORWARDED_FOR' => '32.32.32.32'
206
        );
207
        $lookup = new Whip(
208
            Whip::PROXY_HEADERS,
209
            array(
210
                Whip::PROXY_HEADERS => array(
211
                    IpWhitelist::IPV4 => array(
212
                        '127.0.0.1/24'
213
                    ),
214
                    IpWhitelist::IPV6 => array(
215
                        '::1'
216
                    )
217
                )
218
            )
219
        );
220
        $this->assertFalse($lookup->getIpAddress());
221
    }
222
223
    /**
224
     * Tests that we reject a proxy listed IPv6 address that does not fall within
@@ 250-267 (lines=18) @@
247
     * Tests that we reject a proxy listed IPv6 address that does not fall within
248
     * the allowed subnet.
249
     */
250
    public function testIPv6AddressFoundInWhitelist()
251
    {
252
        $_SERVER = array(
253
            'REMOTE_ADDR' => '::1',
254
            'HTTP_X_FORWARDED_FOR' => '::1'
255
        );
256
        $lookup = new Whip(
257
            Whip::PROXY_HEADERS,
258
            array(
259
                Whip::PROXY_HEADERS => array(
260
                    IpWhitelist::IPV6 => array(
261
                        '::1/32'
262
                    )
263
                )
264
            )
265
        );
266
        $this->assertEquals('::1', $lookup->getIpAddress());
267
    }
268
269
    /**
270
     * Test that an IPv4 address is rejected because the whitelist is empty for
@@ 318-339 (lines=22) @@
315
    /**
316
     * Test a custom header with a whitelisted IP.
317
     */
318
    public function testCustomHeader()
319
    {
320
        $_SERVER = array(
321
            'REMOTE_ADDR' => '127.0.0.1',
322
            'HTTP_CUSTOM_SECRET_HEADER' => '32.32.32.32'
323
        );
324
        $lookup = new Whip(
325
            Whip::CUSTOM_HEADERS | Whip::REMOTE_ADDR,
326
            array(
327
                Whip::CUSTOM_HEADERS => array(
328
                    IpWhitelist::IPV4 => array(
329
                        '127.0.0.1',
330
                        '::1'
331
                    )
332
                )
333
            )
334
        );
335
        $this->assertEquals(
336
            '32.32.32.32',
337
            $lookup->addCustomHeader('HTTP_CUSTOM_SECRET_HEADER')->getIpAddress()
338
        );
339
    }
340
341
    /**
342
     * Test HTTP_X_REAL_IP header.