commit 8274af32008893b461f81e96c2a037fe5a96b996 Author: Isis Lovecruft isis@torproject.org Date: Tue Apr 8 18:34:12 2014 +0000
Split unittests for EmailServer.getMailResponse() into smaller tests. --- lib/bridgedb/test/test_EmailServer.py | 58 +++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 14 deletions(-)
diff --git a/lib/bridgedb/test/test_EmailServer.py b/lib/bridgedb/test/test_EmailServer.py index e8b9360..13f018c 100644 --- a/lib/bridgedb/test/test_EmailServer.py +++ b/lib/bridgedb/test/test_EmailServer.py @@ -134,7 +134,7 @@ class EmailCompositionTests(unittest.TestCase): """Tests for :func:`bridgedb.EmailServer.getMailResponse`."""
def setUp(self): - """Create fake email and associated data""" + """Create fake email, distributor, and associated context data.""" configuration = {} TEST_CONFIG_FILE.seek(0) compiled = compile(TEST_CONFIG_FILE.read(), '<string>', 'exec') @@ -142,40 +142,45 @@ class EmailCompositionTests(unittest.TestCase): self.config = Conf(**configuration)
# TODO: Add headers if we start validating them - self.lines = ["From: %s@%s.com", "To: %s@example.net", - "Subject: testing", "\n", "get bridges"] + self.lines = ["From: %s@%s.com", + "To: bridges@example.net", + "Subject: testing", + "\n", + "get bridges"] self.distributor = FakeDistributor('key', {}, {}, []) self.ctx = MailContext(self.config, self.distributor, NoSchedule())
- def test_getMailResponseNoFrom(self): + def test_getMailResponse_noFrom(self): + """A received email without a "From:" or "Sender:" header shouldn't + receive a response. + """ lines = self.lines lines[0] = "" - lines[1] = self.lines[1] % "bridges" ret = EmailServer.getMailResponse(lines, self.ctx) self.assertIsInstance(ret, tuple) self.assertEqual(len(ret), 2) self.assertEqual(ret[0], None) self.assertEqual(ret[1], None)
- def test_getMailResponseBadAddress(self): + def test_getMailResponse_badAddress(self): lines = copy.copy(self.lines) - lines[0] = self.lines[0] % ("testing?", "example") - lines[1] = self.lines[1] % "bridges" - lines[2] = "" + lines[0] = self.lines[0] % ("testing*.?"", "example") ret = EmailServer.getMailResponse(lines, self.ctx) self.assertIsInstance(ret, tuple) self.assertEqual(len(ret), 2) self.assertEqual(ret[0], None) self.assertEqual(ret[1], None) - #lines[0] = self.lines[0] % ("<>>", "example") - lines[0] = "From: %s@%s.com" % ("<>>", "example") + + def test_getMailResponse_anotherBadAddress(self): + lines = copy.copy(self.lines) + lines[0] = "From: Mallory %s@%s.com" % ("<>>", "example") ret = EmailServer.getMailResponse(lines, self.ctx) self.assertIsInstance(ret, tuple) self.assertEqual(len(ret), 2) self.assertEqual(ret[0], None) self.assertEqual(ret[1], None)
- def test_getMailResponseInvalidDomain(self): + def test_getMailResponse_invalidDomain(self): lines = copy.copy(self.lines) lines[0] = self.lines[0] % ("testing", "exa#mple") ret = EmailServer.getMailResponse(lines, self.ctx) @@ -183,6 +188,9 @@ class EmailCompositionTests(unittest.TestCase): self.assertEqual(len(ret), 2) self.assertEqual(ret[0], None) self.assertEqual(ret[1], None) + + def test_getMailResponse_anotherInvalidDomain(self): + lines = copy.copy(self.lines) lines[0] = self.lines[0] % ("testing", "exam+ple") ret = EmailServer.getMailResponse(lines, self.ctx) self.assertIsInstance(ret, tuple) @@ -190,7 +198,10 @@ class EmailCompositionTests(unittest.TestCase): self.assertEqual(ret[0], None) self.assertEqual(ret[1], None)
- def test_getMailResponseDKIM(self): + def test_getMailResponse_DKIM_badDKIMheader(self): + """An email with an appended 'X-DKIM-Authentication-Result:' header should not + receive a response. + """ lines = copy.copy(self.lines) lines[0] = self.lines[0] % ("testing", "gmail") lines.append("X-DKIM-Authentication-Result: ") @@ -199,7 +210,11 @@ class EmailCompositionTests(unittest.TestCase): self.assertEqual(len(ret), 2) self.assertEqual(ret[0], None) self.assertEqual(ret[1], None) + + def test_getMailResponse_DKIM(self): + lines = copy.copy(self.lines) lines[0] = self.lines[0] % ("testing", "example") + lines.append("X-DKIM-Authentication-Result: ") ret = EmailServer.getMailResponse(lines, self.ctx) self.assertIsInstance(ret, tuple) self.assertEqual(len(ret), 2) @@ -208,7 +223,8 @@ class EmailCompositionTests(unittest.TestCase): mail = ret[1].getvalue() self.assertNotEqual(mail.find("no bridges currently"), -1)
- def test_getMailResponseMailContent(self): + def test_getMailResponse_bridges_obfs(self): + """A request for 'transport obfs' should receive a response.""" lines = copy.copy(self.lines) lines[0] = self.lines[0] % ("testing", "example") lines.append("transport obfs") @@ -219,6 +235,12 @@ class EmailCompositionTests(unittest.TestCase): self.assertIsInstance(ret[1], StringIO) mail = ret[1].getvalue() self.assertNotEqual(mail.find("no bridges currently"), -1) + + def test_getMailResponse_bridges_obfsobfswebz(self): + """We should only pay attention to the first in a crazy request.""" + lines = copy.copy(self.lines) + lines[0] = self.lines[0] % ("testing", "example") + lines.append("transport obfs") lines.append("transport obfs") lines.append("unblocked webz") ret = EmailServer.getMailResponse(lines, self.ctx) @@ -228,6 +250,14 @@ class EmailCompositionTests(unittest.TestCase): self.assertIsInstance(ret[1], StringIO) mail = ret[1].getvalue() self.assertNotEqual(mail.find("no bridges currently"), -1) + + def test_getMailResponse_bridges_obfsobfswebzipv6(self): + """We should *still* only pay attention to the first request.""" + lines = copy.copy(self.lines) + lines[0] = self.lines[0] % ("testing", "example") + lines.append("transport obfs") + lines.append("transport obfs") + lines.append("unblocked webz") lines.append("ipv6") ret = EmailServer.getMailResponse(lines, self.ctx) self.assertIsInstance(ret, tuple)
tor-commits@lists.torproject.org