[tor-commits] [bridgedb/master] Add unittests for _renderDeferred().

isis at torproject.org isis at torproject.org
Wed Mar 26 05:49:32 UTC 2014


commit 3fe40199972595895c05d8760dade246e8134fe4
Author: Isis Lovecruft <isis at torproject.org>
Date:   Wed Mar 26 05:01:04 2014 +0000

    Add unittests for _renderDeferred().
---
 lib/bridgedb/test/test_HTTPServer.py |   53 ++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/lib/bridgedb/test/test_HTTPServer.py b/lib/bridgedb/test/test_HTTPServer.py
index ea2f6e4..4e6c86b 100644
--- a/lib/bridgedb/test/test_HTTPServer.py
+++ b/lib/bridgedb/test/test_HTTPServer.py
@@ -23,6 +23,7 @@ import ipaddr
 from BeautifulSoup import BeautifulSoup
 
 from twisted.internet import reactor
+from twisted.internet import task
 from twisted.trial import unittest
 from twisted.web.resource import Resource
 from twisted.web.test import requesthelper
@@ -297,6 +298,58 @@ class ReCaptchaProtectedResourceTests(unittest.TestCase):
             except (AlreadyCalled, AlreadyCancelled):
                 pass
 
+    def test_renderDeferred_invalid(self):
+        """:meth:`_renderDeferred` should redirect a ``Request`` (after the
+        CAPTCHA was NOT xsuccessfully solved) which results from a
+        ``Deferred``'s callback.
+        """
+        self.request.method = b'POST'
+
+        def testCB(request):
+            """Check the ``Request`` returned from ``_renderDeferred``."""
+            self.assertIsInstance(request, DummyRequest)
+            soup = BeautifulSoup(b''.join(request.written)).find('meta')['http-equiv']
+            self.assertEqual(soup, 'refresh')
+
+        d = task.deferLater(reactor, 0, lambda x: x, (False, self.request))
+        d.addCallback(self.captchaResource._renderDeferred)
+        d.addCallback(testCB)
+        return d
+
+    def test_renderDeferred_valid(self):
+        """:meth:`_renderDeferred` should correctly render a ``Request`` (after
+        the CAPTCHA has been successfully solved) which results from a
+        ``Deferred``'s callback.
+        """
+        self.request.method = b'POST'
+
+        def testCB(request):
+            """Check the ``Request`` returned from ``_renderDeferred``."""
+            self.assertIsInstance(request, DummyRequest)
+            html = b''.join(request.written)
+            self.assertSubstring('No bridges currently available', html)
+
+        d = task.deferLater(reactor, 0, lambda x: x, (True, self.request))
+        d.addCallback(self.captchaResource._renderDeferred)
+        d.addCallback(testCB)
+        return d
+
+    def test_renderDeferred_nontuple(self):
+        """:meth:`_renderDeferred` should correctly render a ``Request`` (after
+        the CAPTCHA has been successfully solved) which results from a
+        ``Deferred``'s callback.
+        """
+        self.request.method = b'POST'
+
+        def testCB(request):
+            """Check the ``Request`` returned from ``_renderDeferred``."""
+            self.assertIs(request, None)
+
+        d = task.deferLater(reactor, 0, lambda x: x, (self.request))
+        d.addCallback(self.captchaResource._renderDeferred)
+        d.addCallback(testCB)
+        return d
+
     def test_checkSolution_blankFields(self):
         """:meth:`HTTPServer.ReCaptchaProtectedResource.checkSolution` should
         return a redirect if is the solution field is blank.





More information about the tor-commits mailing list