[tor-commits] [bridgedb/develop] Add unittests for bridgedb.parse.blacklist.parseBridgeBlacklistFile().

isis at torproject.org isis at torproject.org
Wed Nov 15 22:24:50 UTC 2017


commit 0b68b8223ebec20e3bd6bdff0d3752509dadb337
Author: Isis Lovecruft <isis at torproject.org>
Date:   Thu Nov 2 01:02:41 2017 +0000

    Add unittests for bridgedb.parse.blacklist.parseBridgeBlacklistFile().
---
 bridgedb/parse/blacklist.py           | 12 +++++++-
 bridgedb/test/test_parse_blacklist.py | 56 +++++++++++++++++++++++++++++++++++
 2 files changed, 67 insertions(+), 1 deletion(-)

diff --git a/bridgedb/parse/blacklist.py b/bridgedb/parse/blacklist.py
index 092f3e1..0b129d0 100644
--- a/bridgedb/parse/blacklist.py
+++ b/bridgedb/parse/blacklist.py
@@ -59,9 +59,19 @@ def parseBridgeBlacklistFile(filename):
         else:
             for line in fh.readlines():
                 fields = line.split(' ', 1)
-                fingerprint, reason = fields[0], fields[1] if len(fields)==2 else ''
+
+                if len(fields) == 2:
+                    fingerprint, reason = fields[0].strip(), fields[1].strip()
+                else:
+                    fingerprint, reason = fields[0].strip(), ""
 
                 if isValidFingerprint(fingerprint):
+                    logging.info("Blacklisted %s. Reason: \"%s\"" %
+                                 (fingerprint, reason))
                     blacklist[fingerprint] = reason
+                else:
+                    logging.warn(("Can't blacklist %s (for reason \"%s\"): "
+                                  "invalid fingerprint") %
+                                 (fingerprint, reason))
 
     return blacklist
diff --git a/bridgedb/test/test_parse_blacklist.py b/bridgedb/test/test_parse_blacklist.py
new file mode 100644
index 0000000..5aa569e
--- /dev/null
+++ b/bridgedb/test/test_parse_blacklist.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+#
+# This file is part of BridgeDB, a Tor bridge distribution system.
+#
+# :authors: Isis Lovecruft 0xA3ADB67A2CDB8B35 <isis at torproject.org>
+# :copyright: (c) 2017, Isis Lovecruft
+#             (c) 2017, The Tor Project, Inc.
+# :license: 3-Clause BSD, see LICENSE for licensing information
+
+"""Unittests for :class:`bridgedb.parse.blacklist` module."""
+
+from __future__ import print_function
+
+import logging
+import os
+
+from bridgedb.parse import blacklist
+
+BLACKLIST_ENTRIES = """\
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA doing bad stuff
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB b-b-b-b-bad to the bone
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC invalid fingerprint
+DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+"""
+
+from twisted.trial import unittest
+from twisted.trial.unittest import SkipTest
+
+logging.disable(50)
+
+
+class ParseBridgeBlacklistFileTests(unittest.TestCase):
+    """Unittests for :func:`bridgedb.parse.blacklist.parseBridgeBlacklistFile`."""
+
+    def setUp(self):
+        self.fh = "TEST-blacklisted-bridges"
+
+        with open(self.fh, 'w') as fh:
+            fh.write(BLACKLIST_ENTRIES)
+            fh.flush()
+
+    def test_parseBridgeBlacklistFile(self):
+        blacklisted = blacklist.parseBridgeBlacklistFile(self.fh)
+
+        self.assertIn("A"*40, blacklisted.keys())
+        self.assertIn("B"*40, blacklisted.keys())
+        self.assertNotIn("C"*40, blacklisted.keys())
+        self.assertIn("D"*40, blacklisted.keys())
+
+        self.assertEqual(blacklisted.get("A"*40), "doing bad stuff")
+        self.assertEqual(blacklisted.get("B"*40), "b-b-b-b-bad to the bone")
+        self.assertEqual(blacklisted.get("D"*40), "")
+
+    def tearDown(self):
+        if os.path.isfile(self.fh):
+            os.unlink(self.fh)





More information about the tor-commits mailing list