test_geo_fingerprint.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import unittest
  2. from unittest.mock import patch
  3. import geo_fingerprint
  4. class DetectGeoFingerprintTests(unittest.TestCase):
  5. def test_detect_geo_fingerprint_parses_ipinfo_payload(self):
  6. payload = {
  7. "ip": "54.199.55.129",
  8. "city": "Tokyo",
  9. "country": "JP",
  10. "timezone": "Asia/Tokyo",
  11. }
  12. with patch("geo_fingerprint._query_geo_payload", return_value=payload):
  13. fp = geo_fingerprint.detect_geo_fingerprint(
  14. "http://127.0.0.1:7890",
  15. log=lambda *_: None,
  16. probe_url="https://ipinfo.io/json",
  17. )
  18. self.assertEqual(fp.country_code, "JP")
  19. self.assertEqual(fp.locale, "ja-JP")
  20. self.assertEqual(fp.timezone_id, "Asia/Tokyo")
  21. self.assertEqual(fp.accept_language, "ja-JP,ja;q=0.9,en;q=0.5")
  22. self.assertEqual(fp.ip, "54.199.55.129")
  23. self.assertEqual(fp.city, "Tokyo")
  24. def test_detect_geo_fingerprint_parses_country_code_payload(self):
  25. payload = {
  26. "ip": "98.96.223.129",
  27. "city": "Seattle",
  28. "country_code": "US",
  29. "timezone": "America/Los_Angeles",
  30. }
  31. with patch("geo_fingerprint._query_geo_payload", return_value=payload):
  32. fp = geo_fingerprint.detect_geo_fingerprint(
  33. "http://127.0.0.1:7890",
  34. log=lambda *_: None,
  35. probe_url="https://api.ip.sb/geoip",
  36. )
  37. self.assertEqual(fp.country_code, "US")
  38. self.assertEqual(fp.locale, "en-US")
  39. self.assertEqual(fp.timezone_id, "America/Los_Angeles")
  40. self.assertEqual(fp.accept_language, "en-US,en;q=0.9")
  41. self.assertEqual(fp.ip, "98.96.223.129")
  42. self.assertEqual(fp.city, "Seattle")
  43. if __name__ == "__main__":
  44. unittest.main()