File
2 years ago
Fixtures
2 years ago
Session
2 years ago
schema
2 years ago
AcceptHeaderItemTest.php
2 years ago
AcceptHeaderTest.php
2 years ago
ApacheRequestTest.php
2 years ago
BinaryFileResponseTest.php
2 years ago
CookieTest.php
2 years ago
ExpressionRequestMatcherTest.php
2 years ago
FileBagTest.php
2 years ago
HeaderBagTest.php
2 years ago
IpUtilsTest.php
2 years ago
JsonResponseTest.php
2 years ago
ParameterBagTest.php
2 years ago
RedirectResponseTest.php
2 years ago
RequestMatcherTest.php
2 years ago
RequestStackTest.php
2 years ago
RequestTest.php
2 years ago
ResponseFunctionalTest.php
2 years ago
ResponseHeaderBagTest.php
2 years ago
ResponseTest.php
2 years ago
ResponseTestCase.php
2 years ago
ServerBagTest.php
2 years ago
StreamedResponseTest.php
2 years ago
IpUtilsTest.php
108 lines
| 1 | <?php |
| 2 | |
| 3 | /* |
| 4 | * This file is part of the Symfony package. |
| 5 | * |
| 6 | * (c) Fabien Potencier <fabien@symfony.com> |
| 7 | * |
| 8 | * For the full copyright and license information, please view the LICENSE |
| 9 | * file that was distributed with this source code. |
| 10 | * |
| 11 | * Modified by impress-org on 23-January-2024 using Strauss. |
| 12 | * @see https://github.com/BrianHenryIE/strauss |
| 13 | */ |
| 14 | |
| 15 | namespace Give\Vendors\Symfony\Component\HttpFoundation\Tests; |
| 16 | |
| 17 | use PHPUnit\Framework\TestCase; |
| 18 | use Give\Vendors\Symfony\Component\HttpFoundation\IpUtils; |
| 19 | |
| 20 | class IpUtilsTest extends TestCase |
| 21 | { |
| 22 | /** |
| 23 | * @dataProvider getIpv4Data |
| 24 | */ |
| 25 | public function testIpv4($matches, $remoteAddr, $cidr) |
| 26 | { |
| 27 | $this->assertSame($matches, IpUtils::checkIp($remoteAddr, $cidr)); |
| 28 | } |
| 29 | |
| 30 | public function getIpv4Data() |
| 31 | { |
| 32 | return [ |
| 33 | [true, '192.168.1.1', '192.168.1.1'], |
| 34 | [true, '192.168.1.1', '192.168.1.1/1'], |
| 35 | [true, '192.168.1.1', '192.168.1.0/24'], |
| 36 | [false, '192.168.1.1', '1.2.3.4/1'], |
| 37 | [false, '192.168.1.1', '192.168.1.1/33'], // invalid subnet |
| 38 | [true, '192.168.1.1', ['1.2.3.4/1', '192.168.1.0/24']], |
| 39 | [true, '192.168.1.1', ['192.168.1.0/24', '1.2.3.4/1']], |
| 40 | [false, '192.168.1.1', ['1.2.3.4/1', '4.3.2.1/1']], |
| 41 | [true, '1.2.3.4', '0.0.0.0/0'], |
| 42 | [true, '1.2.3.4', '192.168.1.0/0'], |
| 43 | [false, '1.2.3.4', '256.256.256/0'], // invalid CIDR notation |
| 44 | [false, 'an_invalid_ip', '192.168.1.0/24'], |
| 45 | ]; |
| 46 | } |
| 47 | |
| 48 | /** |
| 49 | * @dataProvider getIpv6Data |
| 50 | */ |
| 51 | public function testIpv6($matches, $remoteAddr, $cidr) |
| 52 | { |
| 53 | if (!\defined('AF_INET6')) { |
| 54 | $this->markTestSkipped('Only works when PHP is compiled without the option "disable-ipv6".'); |
| 55 | } |
| 56 | |
| 57 | $this->assertSame($matches, IpUtils::checkIp($remoteAddr, $cidr)); |
| 58 | } |
| 59 | |
| 60 | public function getIpv6Data() |
| 61 | { |
| 62 | return [ |
| 63 | [true, '2a01:198:603:0:396e:4789:8e99:890f', '2a01:198:603:0::/65'], |
| 64 | [false, '2a00:198:603:0:396e:4789:8e99:890f', '2a01:198:603:0::/65'], |
| 65 | [false, '2a01:198:603:0:396e:4789:8e99:890f', '::1'], |
| 66 | [true, '0:0:0:0:0:0:0:1', '::1'], |
| 67 | [false, '0:0:603:0:396e:4789:8e99:0001', '::1'], |
| 68 | [true, '0:0:603:0:396e:4789:8e99:0001', '::/0'], |
| 69 | [true, '0:0:603:0:396e:4789:8e99:0001', '2a01:198:603:0::/0'], |
| 70 | [true, '2a01:198:603:0:396e:4789:8e99:890f', ['::1', '2a01:198:603:0::/65']], |
| 71 | [true, '2a01:198:603:0:396e:4789:8e99:890f', ['2a01:198:603:0::/65', '::1']], |
| 72 | [false, '2a01:198:603:0:396e:4789:8e99:890f', ['::1', '1a01:198:603:0::/65']], |
| 73 | [false, '}__test|O:21:"JDatabaseDriverMysqli":3:{s:2', '::1'], |
| 74 | [false, '2a01:198:603:0:396e:4789:8e99:890f', 'unknown'], |
| 75 | ]; |
| 76 | } |
| 77 | |
| 78 | /** |
| 79 | * @requires extension sockets |
| 80 | */ |
| 81 | public function testAnIpv6WithOptionDisabledIpv6() |
| 82 | { |
| 83 | $this->expectException('RuntimeException'); |
| 84 | if (\defined('AF_INET6')) { |
| 85 | $this->markTestSkipped('Only works when PHP is compiled with the option "disable-ipv6".'); |
| 86 | } |
| 87 | |
| 88 | IpUtils::checkIp('2a01:198:603:0:396e:4789:8e99:890f', '2a01:198:603:0::/65'); |
| 89 | } |
| 90 | |
| 91 | /** |
| 92 | * @dataProvider invalidIpAddressData |
| 93 | */ |
| 94 | public function testInvalidIpAddressesDoNotMatch($requestIp, $proxyIp) |
| 95 | { |
| 96 | $this->assertFalse(IpUtils::checkIp4($requestIp, $proxyIp)); |
| 97 | } |
| 98 | |
| 99 | public function invalidIpAddressData() |
| 100 | { |
| 101 | return [ |
| 102 | 'invalid proxy wildcard' => ['192.168.20.13', '*'], |
| 103 | 'invalid proxy missing netmask' => ['192.168.20.13', '0.0.0.0'], |
| 104 | 'invalid request IP with invalid proxy wildcard' => ['0.0.0.0', '*'], |
| 105 | ]; |
| 106 | } |
| 107 | } |
| 108 |