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