[tor-commits] [bridgedb/develop] Add unittests for bridgedb.geo module.

isis at torproject.org isis at torproject.org
Thu Feb 19 05:38:21 UTC 2015


commit feeb440961f3c8db4cc4e2476ee0373c4f49da94
Author: Isis Lovecruft <isis at torproject.org>
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 at torproject.org>
+#           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))





More information about the tor-commits mailing list