[tor-commits] [bridgedb/develop] Add three unittests for parseExtraInfoFiles() with bad router-signatures.

isis at torproject.org isis at torproject.org
Thu Feb 19 02:21:15 UTC 2015


commit e8395678b7bfaaab55e4e6dcb59437c42263f29f
Author: Isis Lovecruft <isis at torproject.org>
Date:   Sat Feb 14 00:46:30 2015 +0000

    Add three unittests for parseExtraInfoFiles() with bad router-signatures.
---
 lib/bridgedb/test/test_parse_descriptors.py |   50 +++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/lib/bridgedb/test/test_parse_descriptors.py b/lib/bridgedb/test/test_parse_descriptors.py
index d67ff88..6395fdb 100644
--- a/lib/bridgedb/test/test_parse_descriptors.py
+++ b/lib/bridgedb/test/test_parse_descriptors.py
@@ -526,6 +526,56 @@ class ParseDescriptorsTests(unittest.TestCase):
         self.assertIn("2B5DA67FBA13A6449DE625673B7AE9E3AA7DF75F", routers.keys(),
                       "The 'parseable' descriptor wasn't returned by the parser.")
 
+    def test_parse_descriptors_parseExtraInfoFiles_bad_signature_footer(self):
+        """Calling parseExtraInfoFiles() with a descriptor which has a
+        signature with a bad "-----END SIGNATURE-----" footer should return
+        zero parsed descriptors.
+        """
+        unparseable = BRIDGE_EXTRA_INFO_DESCRIPTOR.replace(
+            '-----END SIGNATURE-----',
+            '-----END SIGNATURE FOR REALZ-----')
+        # This must be a "real" file or _copyUnparseableDescriptorFile() will
+        # raise an AttributeError saying:
+        # '_io.BytesIO' object has no attribute 'rpartition'"
+        descFileOne = self.writeTestDescriptorsToFile(
+            "bad-signature-footer", unparseable)
+        routers = descriptors.parseExtraInfoFiles(descFileOne)
+
+        self.assertEqual(len(routers), 0)
+
+    def test_parse_descriptors_parseExtraInfoFiles_missing_signature(self):
+        """Calling parseExtraInfoFiles() with a descriptor which is
+        missing the signature should return zero parsed descriptors.
+        """
+        # Remove the signature
+        BEGIN_SIG = '-----BEGIN SIGNATURE-----'
+        unparseable, _ = BRIDGE_EXTRA_INFO_DESCRIPTOR.split(BEGIN_SIG)
+        # This must be a "real" file or _copyUnparseableDescriptorFile() will
+        # raise an AttributeError saying:
+        # '_io.BytesIO' object has no attribute 'rpartition'"
+        descFileOne = self.writeTestDescriptorsToFile(
+            "missing-signature", unparseable)
+        routers = descriptors.parseExtraInfoFiles(descFileOne)
+
+        self.assertEqual(len(routers), 0)
+
+    def test_parse_descriptors_parseExtraInfoFiles_bad_signature_too_short(self):
+        """Calling _verifyExtraInfoSignature() with a descriptor which has a
+        bad signature should raise an InvalidExtraInfoSignature exception.
+        """
+        # Truncate the signature to 50 bytes
+        BEGIN_SIG = '-----BEGIN SIGNATURE-----'
+        doc, sig = BRIDGE_EXTRA_INFO_DESCRIPTOR.split(BEGIN_SIG)
+        unparseable = BEGIN_SIG.join([doc, sig[:50]])
+        # This must be a "real" file or _copyUnparseableDescriptorFile() will
+        # raise an AttributeError saying:
+        # '_io.BytesIO' object has no attribute 'rpartition'"
+        descFileOne = self.writeTestDescriptorsToFile(
+            "truncated-signature", unparseable)
+        routers = descriptors.parseExtraInfoFiles(descFileOne)
+
+        self.assertEqual(len(routers), 0)
+
     def test_parse_descriptors_parseExtraInfoFiles_unparseable_BytesIO(self):
         """Test parsing three extrainfo descriptors: one is a valid descriptor,
         one is an older duplicate, and one is unparseable (it has a bad





More information about the tor-commits mailing list