[tor-commits] [bridgedb/develop] Rewrite testDistWithFilterAll() and testDistWithFilterBoth() in legacy_Tests.

isis at torproject.org isis at torproject.org
Thu Jun 25 07:10:55 UTC 2015


commit 6357566edb74341f84cc3f953ed34bbb1ce01247
Author: Isis Lovecruft <isis at torproject.org>
Date:   Tue Apr 21 23:33:42 2015 +0000

    Rewrite testDistWithFilterAll() and testDistWithFilterBoth() in legacy_Tests.
---
 lib/bridgedb/test/legacy_Tests.py |   35 ---------------------------
 lib/bridgedb/test/test_Dist.py    |   48 +++++++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 35 deletions(-)

diff --git a/lib/bridgedb/test/legacy_Tests.py b/lib/bridgedb/test/legacy_Tests.py
index fc4ca5d..043f09b 100644
--- a/lib/bridgedb/test/legacy_Tests.py
+++ b/lib/bridgedb/test/legacy_Tests.py
@@ -268,41 +268,6 @@ class IPBridgeDistTests(unittest.TestCase):
             assert type(ipaddr.IPAddress(address)) is ipaddr.IPv4Address
             assert filterBridgesByIP4(random.choice(bridges))
 
-    def testDistWithFilterBoth(self):
-        d = bridgedb.Dist.HTTPSDistributor(3, "Foo")
-        for _ in xrange(250):
-            d.insert(fakeBridge6(or_addresses=True))
-            d.insert(fakeBridge(or_addresses=True))
-
-        for i in xrange(50):
-            bridges = d.getBridges(randomIPv4String(),
-                                   "faketimestamp",
-                                   bridgeFilterRules=[
-                                       filterBridgesByIP4,
-                                       filterBridgesByIP6])
-            if bridges:
-                t = bridges.pop()
-                assert filterBridgesByIP4(t)
-                assert filterBridgesByIP6(t)
-                address, portlist = networkstatus.parseALine(
-                    t.getConfigLine(addressClass=ipaddr.IPv4Address))
-                assert type(address) is ipaddr.IPv4Address
-                address, portlist = networkstatus.parseALine(
-                    t.getConfigLine(addressClass=ipaddr.IPv6Address))
-                assert type(address) is ipaddr.IPv6Address
-
-
-    def testDistWithFilterAll(self):
-        d = bridgedb.Dist.HTTPSDistributor(3, "Foo")
-        for _ in xrange(250):
-            d.insert(fakeBridge6(or_addresses=True))
-            d.insert(fakeBridge(or_addresses=True))
-
-        for i in xrange(5):
-            b = d.getBridges(randomIPv4String(), "x", bridgeFilterRules=[
-                filterBridgesByIP4, filterBridgesByIP6])
-            assert len(b) == 0
-
     def testDistWithFilterBlockedCountriesAdvanced(self):
         d = bridgedb.Dist.HTTPSDistributor(3, "Foo")
         for _ in xrange(250):
diff --git a/lib/bridgedb/test/test_Dist.py b/lib/bridgedb/test/test_Dist.py
index 2d93a19..9e47a92 100644
--- a/lib/bridgedb/test/test_Dist.py
+++ b/lib/bridgedb/test/test_Dist.py
@@ -24,6 +24,8 @@ from bridgedb.bridges import Bridge
 from bridgedb.bridges import PluggableTransport
 from bridgedb.Bridges import BridgeRing
 from bridgedb.Filters import filterBridgesByNotBlockedIn
+from bridgedb.Filters import filterBridgesByIP4
+from bridgedb.Filters import filterBridgesByIP6
 from bridgedb.https.request import HTTPSBridgeRequest
 from bridgedb.proxy import ProxySet
 from bridgedb.test.util import randomHighPort
@@ -240,3 +242,49 @@ class HTTPSDistributorTests(unittest.TestCase):
                 self.assertFalse(b.isBlockedIn('ir'))
                 self.assertNotIn(b.fingerprint, blockedIR)
             self.assertGreater(len(bridges), 0)
+
+    def test_HTTPSDistributor_getBridges_ipv4_ipv6(self):
+        """Asking for bridge addresses which are simultaneously IPv4 and IPv6
+        (in that order) should return IPv4 bridges.
+        """
+        dist = Dist.HTTPSDistributor(1, self.key)
+        [dist.insert(bridge) for bridge in self.bridges[:250]]
+
+        bridgeRequest = self.randomClientRequest()
+        bridgeRequest.withIPv4()
+        bridgeRequest.filters.append(filterBridgesByIP6)
+        bridgeRequest.generateFilters()
+
+        bridges = dist.getBridges(bridgeRequest, 1)
+        self.assertEqual(len(bridges), 3)
+
+        bridge = random.choice(bridges)
+        bridgeLine = bridge.getBridgeLine(bridgeRequest)
+        addrport, fingerprint = bridgeLine.split()
+        address, port = addrport.rsplit(':', 1)
+        address = address.strip('[]')
+        self.assertIsInstance(ipaddr.IPAddress(address), ipaddr.IPv4Address)
+        self.assertIsNotNone(filterBridgesByIP4(random.choice(bridges)))
+
+    def test_HTTPSDistributor_getBridges_ipv6_ipv4(self):
+        """Asking for bridge addresses which are simultaneously IPv6 and IPv4
+        (in that order) should return IPv6 bridges.
+        """
+        dist = Dist.HTTPSDistributor(1, self.key)
+        [dist.insert(bridge) for bridge in self.bridges[:250]]
+
+        bridgeRequest = self.randomClientRequest()
+        bridgeRequest.withIPv6()
+        bridgeRequest.generateFilters()
+        bridgeRequest.filters.append(filterBridgesByIP4)
+
+        bridges = dist.getBridges(bridgeRequest, 1)
+        self.assertEqual(len(bridges), 3)
+
+        bridge = random.choice(bridges)
+        bridgeLine = bridge.getBridgeLine(bridgeRequest)
+        addrport, fingerprint = bridgeLine.split()
+        address, port = addrport.rsplit(':', 1)
+        address = address.strip('[]')
+        self.assertIsInstance(ipaddr.IPAddress(address), ipaddr.IPv6Address)
+        self.assertIsNotNone(filterBridgesByIP6(random.choice(bridges)))





More information about the tor-commits mailing list