mirror of
https://github.com/checktheroads/hyperglass
synced 2024-05-11 05:55:08 +00:00
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
"""Test bgp.tools interactions."""
|
|
|
|
# Standard Library
|
|
import asyncio
|
|
|
|
# Third Party
|
|
import pytest
|
|
|
|
# Local
|
|
from ..bgptools import run_whois, parse_whois, network_info
|
|
|
|
WHOIS_OUTPUT = """AS | IP | BGP Prefix | CC | Registry | Allocated | AS Name
|
|
13335 | 1.1.1.1 | 1.1.1.0/24 | US | ARIN | 2010-07-14 | Cloudflare, Inc."""
|
|
|
|
|
|
# Ignore asyncio deprecation warning about loop
|
|
@pytest.mark.filterwarnings("ignore::DeprecationWarning")
|
|
def test_network_info():
|
|
|
|
checks = (
|
|
("192.0.2.1", {"asn": "None", "rir": "Private Address"}),
|
|
("127.0.0.1", {"asn": "None", "rir": "Loopback Address"}),
|
|
("fe80:dead:beef::1", {"asn": "None", "rir": "Link Local Address"}),
|
|
("2001:db8::1", {"asn": "None", "rir": "Private Address"}),
|
|
("1.1.1.1", {"asn": "13335", "rir": "ARIN"}),
|
|
)
|
|
for addr, fields in checks:
|
|
info = asyncio.run(network_info(addr))
|
|
assert addr in info
|
|
for key, expected in fields.items():
|
|
assert info[addr][key] == expected
|
|
|
|
|
|
# Ignore asyncio deprecation warning about loop
|
|
@pytest.mark.filterwarnings("ignore::DeprecationWarning")
|
|
def test_whois():
|
|
addr = "192.0.2.1"
|
|
response = asyncio.run(run_whois([addr]))
|
|
assert isinstance(response, str)
|
|
assert response != ""
|
|
|
|
|
|
def test_whois_parser():
|
|
addr = "1.1.1.1"
|
|
result = parse_whois(WHOIS_OUTPUT, [addr])
|
|
assert isinstance(result, dict)
|
|
assert addr in result, "Address missing"
|
|
assert result[addr]["asn"] == "13335"
|
|
assert result[addr]["rir"] == "ARIN"
|
|
assert result[addr]["org"] == "Cloudflare, Inc."
|