import httpx def test_lookup(client: httpx.Client) -> None: ip = "88.196.223.122" response = client.get(f"/lookup/{ip}") assert response.status_code == 200 assert response.json() == { "ip": ip, "resolved": True, "country_long": "Estonia", "country_short": "EE", "region": "Harjumaa", "city": "Tallinn", "latitude": 59.436958, "longitude": 24.753531, } def test_resolve_demo(client: httpx.Client) -> None: ip = "103.203.231.174" response = client.get(f"/lookup/{ip}") assert response.status_code == 200 assert response.json() == { "ip": ip, "resolved": False, "country_long": "-", "country_short": "-", "region": "-", "city": "-", "latitude": 0.0, "longitude": 0.0, } def test_resolve_ipv6(client: httpx.Client) -> None: ip_v6 = "2001:db8:3333:4444:5555:6666:7777:8888" response = client.get(f"/lookup/{ip_v6}") assert response.status_code == 200 assert response.json() == { "ip": ip_v6, "resolved": False, "country_long": "-", "country_short": "-", "region": "-", "city": "-", "latitude": 0.0, "longitude": 0.0, } def test_resolve_ipv4_private(client: httpx.Client) -> None: ip = "10.0.0.0" response = client.get(f"/lookup/{ip}") assert response.status_code == 200 assert response.json() == { "ip": ip, "resolved": False, "country_long": "-", "country_short": "-", "region": "-", "city": "-", "latitude": 0.0, "longitude": 0.0, } def test_resolve_batch(client: httpx.Client) -> None: ip_1 = "1.1.1.1" ip_2 = "88.196.223.122" response = client.post("/lookup/batch", json={"ips": [ip_1, ip_2]}) assert response.status_code == 200 assert response.json() == { ip_1: { "ip": ip_1, "city": "San Jose", "country_long": "United States of America", "country_short": "US", "latitude": 37.33939, "longitude": -121.894958, "region": "California", "resolved": True, }, ip_2: { "ip": ip_2, "city": "Tallinn", "country_long": "Estonia", "country_short": "EE", "latitude": 59.436958, "longitude": 24.753531, "region": "Harjumaa", "resolved": True, }, } def test_resolve_batch_only_resolved(client: httpx.Client) -> None: ip_1 = "1.1.1.1" ip_2 = "10.0.0.0" response = client.post( "/lookup/batch", json={ "ips": [ip_1, ip_2], "only_resolved": True, }, ) assert response.status_code == 200 assert response.json() == { ip_1: { "city": "San Jose", "country_long": "United States of America", "country_short": "US", "ip": "1.1.1.1", "latitude": 37.33939, "longitude": -121.894958, "region": "California", "resolved": True, }, }