[tor-commits] [bridgedb/master] Add unittests for HSDir flags in bridge networkstatus documents.

isis at torproject.org isis at torproject.org
Sat Jul 25 19:26:23 UTC 2015


commit 5f3910b02dfa19a70cb8ba0cee7bbc3a2c82b8ed
Author: Isis Lovecruft <isis at torproject.org>
Date:   Mon Jul 20 19:58:18 2015 +0000

    Add unittests for HSDir flags in bridge networkstatus documents.
    
     * FIXES #16616: https://bugs.torproject.org/16616
---
 test/test_bridges.py           |   19 +++++++++++++++++++
 test/test_parse_descriptors.py |   24 ++++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/test/test_bridges.py b/test/test_bridges.py
index 9448e3f..3c5fe0d 100644
--- a/test/test_bridges.py
+++ b/test/test_bridges.py
@@ -403,6 +403,25 @@ class FlagsTests(unittest.TestCase):
         self.assertFalse(self.flags.fast)
         self.assertTrue(self.flags.stable)
 
+    def test_update_HSDir(self):
+        """Test adding the HSDir flag with the update() method.
+
+        See also: :trac:`16616`.
+        """
+        self.flags.update(["Fast", "Stable", "HSDir"])
+        self.assertTrue(self.flags.fast)
+        self.assertTrue(self.flags.stable)
+        # We don't care about the HSDir flag:
+        self.assertIsNone(getattr(self.flags, "hsdir", None))
+
+    def test_update_Unicorn(self):
+        """Test adding a completely made-up flag, "Unicorn", with the update()
+        method.  (It shouldn't get added.)
+        """
+        self.flags.update(["Unicorn"])
+        # We don't care about the make-believe Unicorn flag:
+        self.assertIsNone(getattr(self.flags, "unicorn", None))
+
 
 class BridgeAddressBaseTests(unittest.TestCase):
     """Tests for :class:`bridgedb.bridges.BridgeAddressBase`."""
diff --git a/test/test_parse_descriptors.py b/test/test_parse_descriptors.py
index 5104ccd..bd3c3d5 100644
--- a/test/test_parse_descriptors.py
+++ b/test/test_parse_descriptors.py
@@ -391,6 +391,30 @@ class ParseDescriptorsTests(unittest.TestCase):
                           descriptors.parseNetworkStatusFile,
                           descFile)
 
+    def test_parse_descriptors_parseNetworkStatusFile_HSDir_flag(self):
+        """A Bridge networkstatus descriptor with the HSDir flag should be
+        possible to parse (without errors), however, the flag should be ignored
+        (since the :class:`bridgedb.bridges.Flags` class doesn't care about it).
+
+        See also: :trac:`16616`
+        """
+        unparseable = BRIDGE_NETWORKSTATUS_0.replace(
+            's Fast Guard Running Stable Valid',
+            's Fast Guard Running Stable Valid HSDir')
+        # Write the descriptor to a file for testing. This is necessary
+        # because the function opens the networkstatus file to read it.
+        descFile = self.writeTestDescriptorsToFile('networkstatus-bridges',
+                                                   unparseable)
+        routers = descriptors.parseNetworkStatusFile(descFile)
+        bridge = routers[0]
+
+        for flag in [u'Fast', u'Guard', u'Running',
+                     u'Stable', u'Valid', u'HSDir']:
+            self.assertTrue(flag in bridge.flags,
+                            ("Expected to parse the %r flag from a bridge "
+                             "networkstatus document, but the flag was not "
+                             "found!"))
+
     def test_parse_descriptors_parseNetworkStatusFile_IPv6_ORAddress(self):
         """A Bridge can't have its primary ORAddress be IPv6 without raising
         a ValueError.





More information about the tor-commits mailing list