[tor-commits] [bridgedb/develop] Add unittests for bridgedb.email.templates module.

isis at torproject.org isis at torproject.org
Wed May 14 03:42:28 UTC 2014


commit 33583300323312e36218e21f33162ca572bcf82f
Author: Isis Lovecruft <isis at torproject.org>
Date:   Mon May 12 15:02:03 2014 +0000

    Add unittests for bridgedb.email.templates module.
---
 lib/bridgedb/test/test_email_templates.py |  119 +++++++++++++++++++++++++++++
 1 file changed, 119 insertions(+)

diff --git a/lib/bridgedb/test/test_email_templates.py b/lib/bridgedb/test/test_email_templates.py
new file mode 100644
index 0000000..0c74377
--- /dev/null
+++ b/lib/bridgedb/test/test_email_templates.py
@@ -0,0 +1,119 @@
+# -*- coding: utf-8 -*-
+#
+# This file is part of BridgeDB, a Tor bridge distribution system.
+#
+# :authors: Isis Lovecruft 0xA3ADB67A2CDB8B35 <isis at torproject.org>
+#           please also see AUTHORS file
+# :copyright: (c) 2013, Isis Lovecruft
+#             (c) 2007-2013, The Tor Project, Inc.
+#             (c) 2007-2013, all entities within the AUTHORS file
+# :license: 3-Clause BSD, see LICENSE for licensing information
+
+"""Unittests for the :mod:`bridgedb.email.templates` module."""
+
+from __future__ import print_function
+from __future__ import unicode_literals
+
+from io import StringIO
+from gettext import NullTranslations
+
+from twisted.mail.smtp import Address
+from twisted.trial import unittest
+
+from bridgedb.email import templates
+
+
+class EmailTemplatesTests(unittest.TestCase):
+    """Unittests for :func:`b.e.templates`."""
+
+    def setUp(self):
+        self.t = NullTranslations(StringIO(unicode('test')))
+        self.client = Address('blackhole at torproject.org')
+        self.answer = 'obfs3 1.1.1.1:1111\nobfs3 2.2.2.2:2222'
+        # This is the fingerprint of BridgeDB's offline, certification-only
+        # GnuPG key. It should be present in any responses to requests for our
+        # public keys.
+        self.offlineFingerprint = '7B78437015E63DF47BB1270ACBD97AA24E8E472E'
+
+    def shouldIncludeCommands(self, text):
+        self.assertSubstring('COMMANDs', text)
+
+    def shouldIncludeInstructions(self, text):
+        self.assertSubstring('Tor Browser', text)
+
+    def shouldIncludeBridges(self, text):
+        self.assertSubstring(self.answer, text)
+        self.assertSubstring('Here are your bridges:', text)
+
+    def shouldIncludeGreeting(self, text):
+        self.assertSubstring('Hey, blackhole!', text)
+
+    def shouldIncludeAutomationNotice(self, text):
+        self.assertSubstring('automated message', text)
+
+    def shouldIncludeKey(self, text):
+        self.assertSubstring('-----BEGIN PGP PUBLIC KEY BLOCK-----', text)
+
+    def shouldIncludeFooter(self, text):
+        self.assertSubstring('rainbows, unicorns, and sparkles', text)
+
+    def test_templates_addCommands(self):
+        text = templates.addCommands(self.t)
+        self.shouldIncludeCommands(text)
+
+    def test_templates_addGreeting(self):
+        text = templates.addGreeting(self.t, self.client.local)
+        self.shouldIncludeGreeting(text)
+
+    def test_templates_addGreeting_noClient(self):
+        text = templates.addGreeting(self.t, None)
+        self.assertSubstring('Hello, friend!', text)
+
+    def test_templates_addGreeting_withWelcome(self):
+        text = templates.addGreeting(self.t, self.client.local, welcome=True)
+        self.shouldIncludeGreeting(text)
+        self.assertSubstring('Welcome to BridgeDB!', text)
+
+    def test_templates_addGreeting_trueClient(self):
+        text = templates.addGreeting(self.t, True)
+        self.assertSubstring('Hey', text)
+
+    def test_templates_addGreeting_23Client(self):
+        text = templates.addGreeting(self.t, 23)
+        self.assertSubstring('Hey', text)
+
+    def test_templates_addHowto(self):
+        text = templates.addHowto(self.t)
+        self.shouldIncludeInstructions(text)
+
+    def test_templates_addBridgeAnswer(self):
+        text = templates.addBridgeAnswer(self.t, self.answer)
+        self.shouldIncludeBridges(text)
+
+    def test_templates_addFooter(self):
+        text = templates.addFooter(self.t, self.client)
+        self.shouldIncludeFooter(text)
+
+    def test_templates_buildAnswerMessage(self):
+        text = templates.buildAnswerMessage(self.t, self.client, self.answer)
+        self.assertSubstring(self.answer, text)
+        self.shouldIncludeAutomationNotice(text)
+        self.shouldIncludeCommands(text)
+        self.shouldIncludeFooter(text)
+
+    def test_templates_buildKeyMessage(self):
+        text = templates.buildKeyMessage(self.t, self.client)
+        self.assertSubstring(self.offlineFingerprint, text)
+
+    def test_templates_buildWelcomeText(self):
+        text = templates.buildWelcomeText(self.t, self.client)
+        self.shouldIncludeGreeting(text)
+        self.assertSubstring('Welcome to BridgeDB!', text)
+        self.shouldIncludeCommands(text)
+        self.shouldIncludeFooter(text)
+
+    def test_templates_buildSpamWarning(self):
+        text = templates.buildSpamWarning(self.t, self.client)
+        self.shouldIncludeGreeting(text)
+        self.shouldIncludeAutomationNotice(text)
+        self.shouldIncludeFooter(text)





More information about the tor-commits mailing list