mirror of https://github.com/OWASP/Nettacker.git
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>
This commit is contained in:
parent
6275ead5ed
commit
6244176c99
|
|
@ -0,0 +1,110 @@
|
|||
import json
|
||||
from unittest.mock import patch
|
||||
|
||||
from nettacker.core.ip import (
|
||||
generate_ip_range,
|
||||
get_ip_range,
|
||||
is_single_ipv4,
|
||||
is_ipv4_range,
|
||||
is_ipv4_cidr,
|
||||
is_single_ipv6,
|
||||
is_ipv6_range,
|
||||
is_ipv6_cidr,
|
||||
)
|
||||
|
||||
|
||||
class Responses:
|
||||
get_ip_range_valid_response = {
|
||||
"objects": {
|
||||
"object": [
|
||||
{
|
||||
"primary-key": {
|
||||
"attribute": [
|
||||
{"name": "inetnum", "value": "223.27.114.0 - 223.27.114.127"}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
validate_ip_range = [f"223.27.114.{i}" for i in range(1, 127)]
|
||||
|
||||
get_ip_range_invalid_response = {
|
||||
"link": {},
|
||||
"errormessages": {
|
||||
"errormessage": [
|
||||
{
|
||||
"severity": "Error",
|
||||
"text": "ERROR:101: no entries found\n\nNo entries found in source %s.\n",
|
||||
"args": [{"value": "RIPE"}],
|
||||
}
|
||||
]
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def test_generate_ip_range():
|
||||
assert generate_ip_range("192.168.1.0/30") == [
|
||||
"192.168.1.0",
|
||||
"192.168.1.1",
|
||||
"192.168.1.2",
|
||||
"192.168.1.3",
|
||||
]
|
||||
assert generate_ip_range("192.168.1.1-192.168.1.3") == [
|
||||
"192.168.1.1",
|
||||
"192.168.1.2",
|
||||
"192.168.1.3",
|
||||
]
|
||||
|
||||
|
||||
@patch("requests.get")
|
||||
def test_get_ip_range(mock_get):
|
||||
test_ip = "223.27.115.10"
|
||||
invalid_test_ip = "223.27.115.10.21"
|
||||
|
||||
mock_get.return_value.content = json.dumps(Responses.get_ip_range_valid_response).encode(
|
||||
"utf-8"
|
||||
)
|
||||
assert get_ip_range(test_ip) == Responses.validate_ip_range
|
||||
|
||||
mock_get.return_value.content = json.dumps(Responses.get_ip_range_invalid_response).encode(
|
||||
"utf-8"
|
||||
)
|
||||
assert get_ip_range(invalid_test_ip) == [invalid_test_ip]
|
||||
|
||||
|
||||
def test_is_single_ipv4():
|
||||
assert is_single_ipv4("127.0.0.1")
|
||||
assert not is_single_ipv4("2001:0DC8:E004:0001:0000:0000:0000:F00A")
|
||||
assert not is_single_ipv4("256.0.0.1")
|
||||
|
||||
|
||||
def test_is_ipv4_range():
|
||||
assert is_ipv4_range("192.168.1.0/24")
|
||||
assert not is_ipv4_range("127.0.0.1")
|
||||
assert not is_ipv4_range("192.168.1.0/100")
|
||||
|
||||
|
||||
def test_is_ipv4_cidr():
|
||||
assert is_ipv4_cidr("192.168.1.1-192.168.1.100")
|
||||
assert not is_ipv4_cidr("192.168.1.1/24")
|
||||
assert not is_ipv4_cidr("192.168.1.1-192.168.1.256")
|
||||
|
||||
|
||||
def test_is_single_ipv6():
|
||||
assert is_single_ipv6("2001:0db8:85a3:0000:0000:8a2e:0370:7334")
|
||||
assert not is_single_ipv6("127.0.0.1")
|
||||
assert not is_single_ipv6("2001:db8:3333:4444:5555:6666:7777:88g8")
|
||||
|
||||
|
||||
def test_is_ipv6_range():
|
||||
assert is_ipv6_range("2001:db8::1-2001:db8::100")
|
||||
assert not is_ipv6_range("2001:db8::/64")
|
||||
assert not is_ipv6_range("2001:db8::1-2001:db8::1g0")
|
||||
|
||||
|
||||
def test_is_ipv6_cidr():
|
||||
assert is_ipv6_cidr("2001:db8:abcd:0012::/64")
|
||||
assert not is_ipv6_cidr("2001:db8::/129")
|
||||
assert not is_ipv6_cidr("2001:dg8:abcd:0012::/64")
|
||||
Loading…
Reference in New Issue