-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathvalidIPAddress.test.js
105 lines (66 loc) · 2.2 KB
/
validIPAddress.test.js
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
103
104
105
const validIPAddress = require('./validIPAddress')
test('Example 1', () => {
const IP = '172.16.254.1'
const result = validIPAddress(IP)
expect(result).toBe('IPv4')
})
test('Example 2', () => {
const IP = '2001:0db8:85a3:0:0:8A2E:0370:7334'
const result = validIPAddress(IP)
expect(result).toBe('IPv6')
})
test('Example 3', () => {
const IP = '256.256.256.256'
const result = validIPAddress(IP)
expect(result).toBe('Neither')
})
test('Valid IPv4', () => {
const IP = '172.16.254.1'
const result = validIPAddress(IP)
expect(result).toBe('IPv4')
})
test('Invalid IPv4 with leading zeros', () => {
const IP = '172.16.254.01'
const result = validIPAddress(IP)
expect(result).toBe('Neither')
})
test('Valid IPv6', () => {
const IP = '2001:0db8:85a3:0000:0000:8a2e:0370:7334'
const result = validIPAddress(IP)
expect(result).toBe('IPv6')
})
test('Valid IPv6 with omitted leading zeros and low-case characters', () => {
const IP = '2001:db8:85a3:0:0:8A2E:0370:7334'
const result = validIPAddress(IP)
expect(result).toBe('IPv6')
})
test('Invalid IPv6 with two consecutive colons', () => {
const IP = '2001:0db8:85a3::8A2E:0370:7334'
const result = validIPAddress(IP)
expect(result).toBe('Neither')
})
test('Invalid IPv6 with extra leading zeros', () => {
const IP = '02001:0db8:85a3:0000:0000:8a2e:0370:7334'
const result = validIPAddress(IP)
expect(result).toBe('Neither')
})
test('IPv4 style that cannot be parsed to decimal should return Neither', () => {
const IP = '1e1.4.5.6'
const result = validIPAddress(IP)
expect(result).toBe('Neither')
})
test('IPv6 style that cannot be parsed from hexadecimal to decimal should return Neither', () => {
const IP = '20EE:FGb8:85a3:0:0:8A2E:0370:7334'
const result = validIPAddress(IP)
expect(result).toBe('Neither')
})
test('IPv6 style with "-" character should return Neither', () => {
const IP = '1081:db8:85a3:01:-0:8A2E:0370:7334'
const result = validIPAddress(IP)
expect(result).toBe('Neither')
})
test('IPv6 style with number larger than FFFF should return Neither', () => {
const IP = '1081:10000:db8:85a3:1:8A2E:0370:7334'
const result = validIPAddress(IP)
expect(result).toBe('Neither')
})