[tor-commits] [bridgedb/master] Merge branch 'fix/13202-missing-pt-args' into develop

isis at torproject.org isis at torproject.org
Fri May 1 07:10:57 UTC 2015


commit 60c0e8a7cac1273b8d5422f591bc1c84882fbeec
Merge: 6a1a935 3827008
Author: Isis Lovecruft <isis at torproject.org>
Date:   Fri Mar 27 00:01:03 2015 +0000

    Merge branch 'fix/13202-missing-pt-args' into develop
    
    Conflicts:
    	lib/bridgedb/test/test_bridges.py

 lib/bridgedb/bridges.py           |   52 ++++++++++++++----
 lib/bridgedb/test/test_bridges.py |  107 +++++++++++++++++++++++++++++++++++++
 2 files changed, 150 insertions(+), 9 deletions(-)

diff --cc lib/bridgedb/test/test_bridges.py
index 1755e6f,e9e0526..5a79d5e
--- a/lib/bridgedb/test/test_bridges.py
+++ b/lib/bridgedb/test/test_bridges.py
@@@ -1473,39 -1411,54 +1528,91 @@@ class BridgeTests(unittest.TestCase)
          self.assertTrue(self.bridge.addressIsBlockedIn('GB', '179.178.155.140', 36493))
          self.assertFalse(self.bridge.addressIsBlockedIn('gb', '179.178.155.140', 36488))
  
 +    def test_Bridge_updateFromExtraInfoDescriptor_changed_no_verify(self):
 +        """A changed extrainfo descriptor should log that a transport's
 +        IP and/or port changed.
 +        """
 +        self.bridge.updateFromNetworkStatus(self.networkstatus)
 +        self.bridge.updateFromServerDescriptor(self.serverdescriptor)
 +        self.bridge.updateFromExtraInfoDescriptor(self.extrainfo)
 +
 +        changedExtrainfo = BRIDGE_EXTRAINFO
 +        changedExtrainfo.replace('transport obfs3 179.178.155.140:36490',
 +                                 'transport obfs3 179.178.155.14:3649')
 +        self._writeExtrainfo(changedExtrainfo)
 +
 +        self.bridge.updateFromExtraInfoDescriptor(self.extrainfo, verify=False)
 +
 +    def test_Bridge_updateFromExtraInfoDescriptor_changed_verify(self):
 +        """A changed extrainfo descriptor with verify=True should raise an
 +        InvalidExtraInfoSignature exception.
 +        """
 +        self.bridge.updateFromNetworkStatus(self.networkstatus)
 +        self.bridge.updateFromServerDescriptor(self.serverdescriptor)
 +        self.bridge.updateFromExtraInfoDescriptor(self.extrainfo)
 +        self.bridge.updateFromExtraInfoDescriptor(self.extrainfoNew)
 +
 +        # We should have hit the return just after the
 +        # `except InvalidExtraInfoSignature` line, and so the
 +        # bridge.descriptors['extrainfo'] shouldn't have been updated.
 +        # Therefore, the one we stored should be older, that is, we shouldn't
 +        # have kept the new one.
 +        self.assertLess(self.bridge.descriptors['extrainfo'].published,
 +                        self.extrainfoNew.published)
 +        # And the one we stored should be the older one, with the same
 +        # published timestamp:
 +        self.assertEqual(self.bridge.descriptors['extrainfo'], self.extrainfo)
 +        self.assertEqual(self.bridge.descriptors['extrainfo'].published,
 +                         self.extrainfo.published)
++
+     def test_Bridge_updateFromExtraInfoDescriptor_obfs4_no_iatmode(self):
+         """An extrainfo descriptor with an obfs4 transport missing the
+         `iat-mode=[…]` argument should not add the obfs4 transport.
+         """
+         self.bridge.updateFromNetworkStatus(self.networkstatus)
+         self.bridge.updateFromServerDescriptor(self.serverdescriptor)
+ 
+         obfs4 = self.extrainfo.transport['obfs4']
+         obfs4 = (u'1.1.1.1', 1111, obfs4[-1][-1].replace('iat-mode=0,', ''))
+ 
+         self.extrainfo.transport['obfs4'] = obfs4
+         self.bridge.updateFromExtraInfoDescriptor(self.extrainfo)
+ 
+         self.assertTrue(len(self.bridge.transports), 3)
+         self.assertNotIn('obfs4',
+                          [pt.methodname for pt in self.bridge.transports])
+ 
+     def test_Bridge_updateFromExtraInfoDescriptor_scramblesuit_no_password(self):
+         """An extrainfo descriptor with `transport scramblesuit 1.1.1.1:1111`
+         (i.e. missing the `password=[…]` argument) should not add the
+         scramblesuit transport.
+         """
+         self.bridge.updateFromNetworkStatus(self.networkstatus)
+         self.bridge.updateFromServerDescriptor(self.serverdescriptor)
+ 
+         self.extrainfo.transport['scramblesuit'] = (u'1.1.1.1', 1111, [])
+         self.bridge.updateFromExtraInfoDescriptor(self.extrainfo)
+ 
+         self.assertTrue(len(self.bridge.transports), 3)
+         self.assertNotIn('scramblesuit',
+                          [pt.methodname for pt in self.bridge.transports])
+ 
+     def test_Bridge_updateFromExtraInfoDescriptor_changed_scramblesuit_no_password(self):
+         """An extrainfo descriptor whose scramblesuit transport was previously
+         valid and is now missing the `password=[…]` argument should be removed
+         from the Bridge.transports list.
+         """
+         self.bridge.updateFromNetworkStatus(self.networkstatus)
+         self.bridge.updateFromServerDescriptor(self.serverdescriptor)
+         self.bridge.updateFromExtraInfoDescriptor(self.extrainfo)
+ 
+         self.assertTrue(len(self.bridge.transports), 4)
+         self.assertIn('scramblesuit',
+                       [pt.methodname for pt in self.bridge.transports])
+ 
+         self.extrainfo.transport['scramblesuit'] = (u'1.1.1.1', 1111, [])
+         self.bridge.updateFromExtraInfoDescriptor(self.extrainfo)
+ 
+         self.assertTrue(len(self.bridge.transports), 3)
+         self.assertNotIn('scramblesuit',
+                          [pt.methodname for pt in self.bridge.transports])





More information about the tor-commits mailing list