-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIp.php
102 lines (85 loc) · 3.91 KB
/
Ip.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
declare(strict_types=1);
/*
* This file is part of the QuidPHP package <https://quidphp.com>
* Author: Pierre-Philippe Emond <[email protected]>
* License: https://github.com/quidphp/base/blob/master/LICENSE
*/
namespace Quid\Test\Base;
use Quid\Base;
// ip
// class for testing Quid\Base\Ip
class Ip extends Base\Test
{
// trigger
final public static function trigger(array $data):bool
{
// is
assert(Base\Ip::is('2.2.2.2'));
assert(!Base\Ip::is('2.2.2.2.3'));
assert(!Base\Ip::is('2.2.2.2a'));
assert(Base\Ip::is('0.0.0.0'));
// isLocal
assert(Base\Ip::isLocal('127.0.0.1'));
assert(Base\Ip::isLocal('192.168.1.1'));
assert(!Base\Ip::isLocal('2.2.2.2.3'));
assert(!Base\Ip::isLocal('2.2.2.2.3.4'));
// normalize
assert(Base\Ip::normalize('127.0.0.1') === '127.0.0.1');
assert(Base\Ip::normalize('127.0.0') === '0.0.0.0');
assert(Base\Ip::normalize('::1') === '127.0.0.1');
// allowed
assert(Base\Ip::allowed('127.0.0.1',['whiteList'=>['127.0.*.*']]));
assert(!Base\Ip::allowed('127.0.0.1',['whiteList'=>['127.0.1.1']]));
assert(!Base\Ip::allowed('127.0.0.1',['whiteList'=>['127.0.*.2']]));
assert(!Base\Ip::allowed('127.0.0.1',['blackList'=>['127.0.*.*']]));
assert(Base\Ip::allowed('127.0.0.1',['blackList'=>['127.0.1.1']]));
assert(Base\Ip::allowed('127.0.0.1',['blackList'=>['127.0.*.2']]));
// compareRange
assert(Base\Ip::compareRange('127.0.0.1','127.0.*.*'));
assert(Base\Ip::compareRange('127.0.0.1','*.0.*.*'));
assert(!Base\Ip::compareRange('127.1.0.1','*.0.*.*'));
assert(Base\Ip::compareRange('10.1.0.1','10.*.*.1'));
assert(!Base\Ip::compareRange('127.*.0.1','*.0.*.*'));
// compareLevel
assert(Base\Ip::compareLevel('1.2.3.4','1.2.3.5'));
assert(Base\Ip::compareLevel('1.2.3.4','1.2.3.4'));
assert(!Base\Ip::compareLevel('1.2.3.3','1.2.4.4',3));
assert(Base\Ip::compareLevel('1.2.3.3','1.2.4.4',2));
assert(!Base\Ip::compareLevel('1.4.3.3','1.3.4.4',2));
assert(Base\Ip::compareLevel('1.3.3.3','1.4.4.4',1));
assert(Base\Ip::compareLevel('1.2.3.4','1.2.3.4',4));
// in
assert(Base\Ip::in('1.2.3.4',['1.2.3.4']));
assert(!Base\Ip::in('1.2.3.4',['1.2.3.5']));
assert(Base\Ip::in('1.2.3.4',['1.2.3.*']));
assert(!Base\Ip::in('2.2.3.4',['1.2.3.*']));
assert(Base\Ip::in('2.2.3.4',['1.2.3.*','2.2.3.4']));
assert(Base\Ip::in('2.2.3.4',['1.2.3.*','2.2.3.5'],true,3));
// reformat
assert(count(Base\Ip::reformat('10.105.100.0/22')) === 4);
assert(count(Base\Ip::reformat('10.103.188.0/23')) === 2);
assert(count(Base\Ip::reformat('10.214.246.0/24')) === 1);
assert(Base\Ip::reformat('10.105.100.0/19') === null);
assert(count(Base\Ip::reformat('10.105.100.0/20')) === 16);
// reformats
assert(count(Base\Ip::reformats('10.105.100.0/22','10.105.100.0/19','10.105.100.0/20')) === 3);
// reformatsUnique
assert(count(Base\Ip::reformatsUnique('10.108.100.0/22','10.105.100.0/19','10.105.100.0/20')) === 20);
assert(count(Base\Ip::reformatsUnique('10.105.100.0/22','10.105.100.0/19','10.105.100.0/20')) === 16);
// toLong
assert(Base\Ip::toLong('1.2.3.4') === 16909060);
assert(Base\Ip::toLong('1.2.3.4.5') === null);
// fromLong
assert(Base\Ip::fromLong(16909060) === '1.2.3.4');
assert(Base\Ip::fromLong(16909060222222) === '242.135.45.14');
// explode
assert(Base\Ip::explode('1.2.3.4') === ['1','2','3','4']);
assert(Base\Ip::explode('1.2.3.4a') === ['1','2','3','4a']);
// implode
assert(Base\Ip::implode(['1','2','3','4']) === '1.2.3.4');
assert(Base\Ip::implode(['1','2','3','4z']) === '1.2.3.4z');
return true;
}
}
?>