commit 6357566edb74341f84cc3f953ed34bbb1ce01247 Author: Isis Lovecruft isis@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)))
tor-commits@lists.torproject.org