Skip to content

Commit 6244176

Browse files
pUrGe12arkid15r
andauthored
Add ip.py tests (#1075)
* tests for ip.py * migrate to pytest * Update asserts * Update tests --------- Co-authored-by: Arkadii Yakovets <arkadii.yakovets@owasp.org>
1 parent 6275ead commit 6244176

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed

tests/core/test_ip.py

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
import json
2+
from unittest.mock import patch
3+
4+
from nettacker.core.ip import (
5+
generate_ip_range,
6+
get_ip_range,
7+
is_single_ipv4,
8+
is_ipv4_range,
9+
is_ipv4_cidr,
10+
is_single_ipv6,
11+
is_ipv6_range,
12+
is_ipv6_cidr,
13+
)
14+
15+
16+
class Responses:
17+
get_ip_range_valid_response = {
18+
"objects": {
19+
"object": [
20+
{
21+
"primary-key": {
22+
"attribute": [
23+
{"name": "inetnum", "value": "223.27.114.0 - 223.27.114.127"}
24+
]
25+
}
26+
}
27+
]
28+
}
29+
}
30+
31+
validate_ip_range = [f"223.27.114.{i}" for i in range(1, 127)]
32+
33+
get_ip_range_invalid_response = {
34+
"link": {},
35+
"errormessages": {
36+
"errormessage": [
37+
{
38+
"severity": "Error",
39+
"text": "ERROR:101: no entries found\n\nNo entries found in source %s.\n",
40+
"args": [{"value": "RIPE"}],
41+
}
42+
]
43+
},
44+
}
45+
46+
47+
def test_generate_ip_range():
48+
assert generate_ip_range("192.168.1.0/30") == [
49+
"192.168.1.0",
50+
"192.168.1.1",
51+
"192.168.1.2",
52+
"192.168.1.3",
53+
]
54+
assert generate_ip_range("192.168.1.1-192.168.1.3") == [
55+
"192.168.1.1",
56+
"192.168.1.2",
57+
"192.168.1.3",
58+
]
59+
60+
61+
@patch("requests.get")
62+
def test_get_ip_range(mock_get):
63+
test_ip = "223.27.115.10"
64+
invalid_test_ip = "223.27.115.10.21"
65+
66+
mock_get.return_value.content = json.dumps(Responses.get_ip_range_valid_response).encode(
67+
"utf-8"
68+
)
69+
assert get_ip_range(test_ip) == Responses.validate_ip_range
70+
71+
mock_get.return_value.content = json.dumps(Responses.get_ip_range_invalid_response).encode(
72+
"utf-8"
73+
)
74+
assert get_ip_range(invalid_test_ip) == [invalid_test_ip]
75+
76+
77+
def test_is_single_ipv4():
78+
assert is_single_ipv4("127.0.0.1")
79+
assert not is_single_ipv4("2001:0DC8:E004:0001:0000:0000:0000:F00A")
80+
assert not is_single_ipv4("256.0.0.1")
81+
82+
83+
def test_is_ipv4_range():
84+
assert is_ipv4_range("192.168.1.0/24")
85+
assert not is_ipv4_range("127.0.0.1")
86+
assert not is_ipv4_range("192.168.1.0/100")
87+
88+
89+
def test_is_ipv4_cidr():
90+
assert is_ipv4_cidr("192.168.1.1-192.168.1.100")
91+
assert not is_ipv4_cidr("192.168.1.1/24")
92+
assert not is_ipv4_cidr("192.168.1.1-192.168.1.256")
93+
94+
95+
def test_is_single_ipv6():
96+
assert is_single_ipv6("2001:0db8:85a3:0000:0000:8a2e:0370:7334")
97+
assert not is_single_ipv6("127.0.0.1")
98+
assert not is_single_ipv6("2001:db8:3333:4444:5555:6666:7777:88g8")
99+
100+
101+
def test_is_ipv6_range():
102+
assert is_ipv6_range("2001:db8::1-2001:db8::100")
103+
assert not is_ipv6_range("2001:db8::/64")
104+
assert not is_ipv6_range("2001:db8::1-2001:db8::1g0")
105+
106+
107+
def test_is_ipv6_cidr():
108+
assert is_ipv6_cidr("2001:db8:abcd:0012::/64")
109+
assert not is_ipv6_cidr("2001:db8::/129")
110+
assert not is_ipv6_cidr("2001:dg8:abcd:0012::/64")

0 commit comments

Comments
 (0)