1 |
|
2 | const test = require('tape')
|
3 | const ipSet = require('../')
|
4 |
|
5 | test('ipSet.contains respects ipSet.add with only a start', t => {
|
6 | const set = ipSet()
|
7 | const ip = '127.0.0.1'
|
8 |
|
9 | t.notOk(set.contains(ip))
|
10 | set.add(ip)
|
11 | t.ok(set.contains(ip))
|
12 | t.end()
|
13 | })
|
14 |
|
15 | test('ipSet.contains respects ipSet.add with a start and an end', t => {
|
16 | const set = ipSet()
|
17 | const ips = ['192.168.1.0', '192.168.1.255']
|
18 |
|
19 | set.add(ips[0], ips[1])
|
20 | t.ok(set.contains(ips[0]))
|
21 | t.ok(set.contains(ips[1]))
|
22 | t.ok(set.contains('192.168.1.123'))
|
23 | t.notOk(set.contains('192.168.2.0'))
|
24 |
|
25 | t.end()
|
26 | })
|
27 |
|
28 | test('ipSet.contains respects ipSet.add with a cidr', t => {
|
29 | const set = ipSet()
|
30 | const cidrIp = '192.168.1.0/24'
|
31 |
|
32 | set.add(cidrIp)
|
33 | t.ok(set.contains('192.168.1.0'))
|
34 | t.ok(set.contains('192.168.1.5'))
|
35 | t.ok(set.contains('192.168.1.255'))
|
36 | t.ok(set.contains('192.168.1.123'))
|
37 | t.notOk(set.contains('192.168.2.0'))
|
38 |
|
39 | t.end()
|
40 | })
|
41 |
|
42 | test('IPv6', t => {
|
43 | const set = ipSet()
|
44 | const ip = '0:0:0:0:0:ffff:7f00:1' // 127.0.0.1
|
45 | const publicIP = '2607:f8b0:4004:811::200e' // google
|
46 | const ipv4 = '127.0.0.1'
|
47 |
|
48 | t.notOk(set.contains(ip))
|
49 | set.add(ip)
|
50 | t.ok(set.contains(ip))
|
51 |
|
52 | t.notOk(set.contains(publicIP))
|
53 | set.add(publicIP)
|
54 | t.ok(set.contains(publicIP))
|
55 |
|
56 | t.notOk(set.contains('127.0.0.1'))
|
57 | set.add(ipv4)
|
58 | t.ok(set.contains(ipv4))
|
59 |
|
60 | t.end()
|
61 | })
|
62 |
|
63 | // Fails on checking it doesn't contain a value outside the range.
|
64 | test.skip('IPv6 range', t => {
|
65 | const set = ipSet()
|
66 | const start = '0:0:0:0:0:0:0:1'
|
67 | const mid1 = '0:0:0:0:0:0:0:9'
|
68 | const mid2 = '0:0:0:0:0:0:0:a'
|
69 | const end = '0:0:0:0:0:0:0:f'
|
70 | const outside = '0:0:0:0:0:0:1:0'
|
71 |
|
72 | set.add(start, end)
|
73 | t.ok(set.contains(start))
|
74 | t.ok(set.contains(end))
|
75 | t.ok(set.contains(mid1))
|
76 | t.ok(set.contains(mid2))
|
77 | t.ok(set.contains(mid2))
|
78 | t.notOk(set.contains(outside))
|
79 |
|
80 | t.end()
|
81 | })
|