[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [bridgedb/develop] Add unittests for bridgedb.geo module.
commit feeb440961f3c8db4cc4e2476ee0373c4f49da94
Author: Isis Lovecruft <isis@xxxxxxxxxxxxxx>
Date: Thu Feb 19 00:41:22 2015 +0000
Add unittests for bridgedb.geo module.
---
lib/bridgedb/test/test_geo.py | 96 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 96 insertions(+)
diff --git a/lib/bridgedb/test/test_geo.py b/lib/bridgedb/test/test_geo.py
new file mode 100644
index 0000000..5e5547b
--- /dev/null
+++ b/lib/bridgedb/test/test_geo.py
@@ -0,0 +1,96 @@
+# -*- coding: utf-8 -*-
+#
+# This file is part of BridgeDB, a Tor bridge distribution system.
+#
+# :authors: Isis Lovecruft <isis@xxxxxxxxxxxxxx>
+# please also see AUTHORS file
+# :copyright: (c) 2007-2015, The Tor Project, Inc.
+# (c) 2007-2015, Isis Lovecruft
+# :license: see LICENSE for licensing information
+
+"""Unittests for the :mod:`bridgedb.geo` module."""
+
+import ipaddr
+
+from twisted.trial import unittest
+
+from bridgedb import geo
+
+
+class GeoTests(unittest.TestCase):
+ """Unittests for the :mod:`bridgedb.geo` module."""
+
+ def setUp(self):
+ self._orig_geoip = geo.geoip
+ self._orig_geoipv6 = geo.geoipv6
+
+ self.ipv4 = ipaddr.IPAddress('38.229.72.16')
+ self.ipv6 = ipaddr.IPAddress('2620:0:6b0:b:1a1a:0:26e5:4810')
+
+ # WARNING: this is going to fail if the torproject.org A and AAAA
+ # records above are reassigned to another host, or are randomly
+ # geolocated to somewhere other than where they are currently
+ # geolocated (in the US):
+ self.expectedCC = 'US'
+
+ def tearDown(self):
+ geo.geoip = self._orig_geoip
+ geo.geoipv6 = self._orig_geoipv6
+
+ def test_geo_getCountryCode_ipv4_str(self):
+ """Should return None since the IP isn't an ``ipaddr.IPAddress``."""
+ self.assertIsNone(geo.getCountryCode(str(self.ipv4)))
+
+ def test_geo_getCountryCode_ipv4_no_geoip_loopback(self):
+ """Should return None since this IP isn't geolocatable (hopefully ever)."""
+ ipv4 = ipaddr.IPAddress('127.0.0.1')
+ self.assertIsNone(geo.getCountryCode(ipv4))
+
+ def test_geo_getCountryCode_ipv4_class(self):
+ """Should return the CC since the IP is an ``ipaddr.IPAddress``."""
+ cc = geo.getCountryCode(self.ipv4)
+ self.assertIsNotNone(cc)
+ self.assertIsInstance(cc, basestring)
+ self.assertEqual(len(cc), 2)
+ self.assertEqual(cc, self.expectedCC)
+
+ def test_geo_getCountryCode_ipv6_str(self):
+ """Should return None since the IP isn't an ``ipaddr.IPAddress``."""
+ self.assertIsNone(geo.getCountryCode(str(self.ipv6)))
+
+ def test_geo_getCountryCode_ipv6_no_geoip_record(self):
+ """Should return None since this IP isn't geolocatable (yet)."""
+ ipv6 = ipaddr.IPAddress('20::72a:e224:44d8:a606:4115')
+ self.assertIsNone(geo.getCountryCode(ipv6))
+
+ def test_geo_getCountryCode_ipv6_no_geoip_link_local(self):
+ """Should return None since this IP isn't geolocatable (hopefully ever)."""
+ ipv6 = ipaddr.IPAddress('ff02::')
+ self.assertIsNone(geo.getCountryCode(ipv6))
+
+ def test_geo_getCountryCode_ipv6_no_geoip_loopback(self):
+ """Should return None since this IP isn't geolocatable (hopefully ever)."""
+ ipv6 = ipaddr.IPAddress('::1')
+ self.assertIsNone(geo.getCountryCode(ipv6))
+
+ def test_geo_getCountryCode_ipv6_class(self):
+ """Should return the CC since the IP is an ``ipaddr.IPAddress``."""
+ cc = geo.getCountryCode(self.ipv6)
+ self.assertIsNotNone(cc)
+ self.assertIsInstance(cc, basestring)
+ self.assertEqual(len(cc), 2)
+ self.assertEqual(cc, self.expectedCC)
+
+ def test_geo_getCountryCode_no_geoip(self):
+ """When missing the geo.geoip database, getCountryCode() should return
+ None.
+ """
+ geo.geoip = None
+ self.assertIsNone(geo.getCountryCode(self.ipv4))
+
+ def test_geo_getCountryCode_no_geoipv6(self):
+ """When missing the geo.geoipv6 database, getCountryCode() should
+ return None.
+ """
+ geo.geoipv6 = None
+ self.assertIsNone(geo.getCountryCode(self.ipv4))
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits