summaryrefslogtreecommitdiffstats
path: root/net/pbr/tests/01_validation/01_ipv4_validation
blob: 5107d75d3c3d0438a619d02a3a21ef7156a93582 (plain)
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
#!/bin/bash
# Test: IPv4 address validation
. "$(dirname "$0")/../lib/setup.sh"

oneTimeTearDown() { rm -rf "${MOCK_ROOT:-}"; }

testIpv4ValidStandard() {
	assertTrue "Standard private IP" "is_ipv4 '192.168.1.1'"
	assertTrue "Class A private" "is_ipv4 '10.0.0.1'"
	assertTrue "Class B private" "is_ipv4 '172.16.0.1'"
	assertTrue "Google DNS" "is_ipv4 '8.8.8.8'"
	assertTrue "All zeros" "is_ipv4 '0.0.0.0'"
	assertTrue "All ones" "is_ipv4 '255.255.255.255'"
	assertTrue "Simple IP" "is_ipv4 '1.2.3.4'"
}

testIpv4ValidCIDR() {
	assertTrue "CIDR /8" "is_ipv4 '10.0.0.0/8'"
	assertTrue "CIDR /24" "is_ipv4 '192.168.1.0/24'"
	assertTrue "CIDR /32" "is_ipv4 '10.0.0.1/32'"
	assertTrue "Default route" "is_ipv4 '0.0.0.0/0'"
}

testIpv4Invalid() {
	assertFalse "Octet > 255" "is_ipv4 '256.1.1.1'"
	assertFalse "Last octet > 255" "is_ipv4 '1.2.3.256'"
	assertFalse "Not an IP" "is_ipv4 'not_an_ip'"
	assertFalse "Empty string" "is_ipv4 ''"
	assertFalse "Only 3 octets" "is_ipv4 '192.168.1'"
	assertFalse "5 octets" "is_ipv4 '192.168.1.1.1'"
	assertFalse "CIDR > 32" "is_ipv4 '192.168.1.1/33'"
	assertFalse "IPv6 loopback" "is_ipv4 '::1'"
	assertFalse "IPv6 link-local" "is_ipv4 'fe80::1'"
	assertFalse "Domain name" "is_ipv4 'example.com'"
}

. shunit2