[tor-commits] [bridgedb/master] Always expect a Deferred from ReCaptcha.checkSolution().
isis at torproject.org
isis at torproject.org
Wed Mar 26 05:49:32 UTC 2014
commit 738101ac291235cc1415f4db5c9c023b6521e34f
Author: Isis Lovecruft <isis at torproject.org>
Date: Wed Mar 19 18:03:15 2014 +0000
Always expect a Deferred from ReCaptcha.checkSolution().
Currently, we `checkSolution()` will return a RecaptchaResponse if the
HTTP POST argument fields are blank. Otherwise, it returns a
deferred. This is bad. It means we have to do all kinds of checks to see
if we can add callbacks on the returned object. It should always return
a deferred which callbacks with a RecaptchaResponse, and so we should
test for that and fail if that is not what is happening.
---
lib/bridgedb/test/test_HTTPServer.py | 6 +++---
lib/bridgedb/test/test_txrecaptcha.py | 21 +++++++++++++++------
2 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/lib/bridgedb/test/test_HTTPServer.py b/lib/bridgedb/test/test_HTTPServer.py
index 507b1f0..9b5a6e4 100644
--- a/lib/bridgedb/test/test_HTTPServer.py
+++ b/lib/bridgedb/test/test_HTTPServer.py
@@ -309,9 +309,9 @@ class ReCaptchaProtectedResourceTests(unittest.TestCase):
self.request.addArg('captcha_challenge_field', '')
self.request.addArg('captcha_response_field', '')
- self.assertIsInstance(
- self.captchaResource.checkSolution(self.request),
- HTTPServer.txrecaptcha.RecaptchaResponse)
+ self.assertIs(False,
+ self.successResultOf(
+ self.captchaResource.checkSolution(self.request)))
def test_getRemoteIP_useRandomIP(self):
"""Check that removing our remoteip setting produces a random IP."""
diff --git a/lib/bridgedb/test/test_txrecaptcha.py b/lib/bridgedb/test/test_txrecaptcha.py
index c7dcbb1..81484dc 100644
--- a/lib/bridgedb/test/test_txrecaptcha.py
+++ b/lib/bridgedb/test/test_txrecaptcha.py
@@ -181,12 +181,21 @@ class SubmitTests(unittest.TestCase):
self.ip = "1.2.3.4"
def test_submit_emptyResponseField(self):
- """An empty 'recaptcha_response_field' should immediately return a
- RecaptchaResponse whose error_code is 'incorrect-captcha-sol'."""
- response = txrecaptcha.submit(self.challenge, '', self.key, self.ip)
- self.assertIsInstance(response, txrecaptcha.RecaptchaResponse)
- self.assertIs(response.is_valid, False)
- self.assertEqual(response.error_code, 'incorrect-captcha-sol')
+ """An empty 'recaptcha_response_field' should return a deferred which
+ callbacks with a RecaptchaResponse whose error_code is
+ 'incorrect-captcha-sol'.
+ """
+ def checkResponse(response):
+ """Check that the response is a
+ :class:`txcaptcha.RecaptchaResponse`.
+ """
+ self.assertIsInstance(response, txrecaptcha.RecaptchaResponse)
+ self.assertIs(response.is_valid, False)
+ self.assertEqual(response.error_code, 'incorrect-captcha-sol')
+
+ d = txrecaptcha.submit(self.challenge, '', self.key, self.ip)
+ d.addCallback(checkResponse)
+ return d
def test_submit_returnsDeferred(self):
""":func:`txrecaptcha.submit` should return a deferred."""
More information about the tor-commits
mailing list