Unverified Commit ba88dbc2 authored by Philipp Winter's avatar Philipp Winter
Browse files

Make getCaptchaImage return (bytes, str).

parent 2c6aa212
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -373,7 +373,7 @@ class GimpCaptcha(Captcha):
        encBlob = self.publicKey.encrypt(blob.encode('utf-8'))
        hmac = crypto.getHMAC(self.hmacKey, encBlob)
        challenge = urlsafe_b64encode(hmac + encBlob)
        return challenge
        return challenge.decode("utf-8")

    def get(self):
        """Get a random CAPTCHA from the cache directory.
+4 −4
Original line number Diff line number Diff line
@@ -473,11 +473,11 @@ class CaptchaProtectedResource(CustomErrorHandlingResource, CSPResource):

        :rtype: tuple
        :returns: A 2-tuple of ``(image, challenge)``, where ``image`` is a
            binary, JPEG-encoded image, and ``challenge`` is a unique
            JPEG-encoded image of type bytes, and ``challenge`` is a unique
            string. If unable to retrieve a CAPTCHA, returns a tuple
            containing two empty strings.
            containing (b'', '').
        """
        return ('', '')
        return (b'', '')

    def extractClientSolution(self, request):
        """Extract the client's CAPTCHA solution from a POST request.
@@ -539,7 +539,7 @@ class CaptchaProtectedResource(CustomErrorHandlingResource, CSPResource):
                                       lang=langs[0],
                                       langOverride=translations.isLangOverridden(request),
                                       imgstr=imgstr.decode("utf-8"),
                                       challenge_field=challenge.decode("utf-8"))
                                       challenge_field=challenge)
        except Exception as err:
            rendered = replaceErrorPage(request, err, 'captcha.html')

+4 −4
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@ class ReCaptchaTests(unittest.TestCase):
            raise unittest.SkipTest(reason)
        else:
            self.assertIsInstance(self.c.image, bytes)
            self.assertIsInstance(self.c.challenge, bytes)
            self.assertIsInstance(self.c.challenge, str)
        finally:
            # Replace the original environment variable if there was one:
            if oldkey:
@@ -146,7 +146,7 @@ class GimpCaptchaTests(unittest.TestCase):
        c = captcha.GimpCaptcha(self.publik, self.sekrit, self.hmacKey,
                                self.cacheDir)
        challenge = c.createChallenge('w00t')
        self.assertIsInstance(challenge, bytes)
        self.assertIsInstance(challenge, str)

    def test_createChallenge_base64(self):
        """createChallenge() return value should be urlsafe base64-encoded."""
@@ -190,7 +190,7 @@ class GimpCaptchaTests(unittest.TestCase):
                                self.cacheDir)
        image, challenge = c.get()
        self.assertIsInstance(image, bytes)
        self.assertIsInstance(challenge, bytes)
        self.assertIsInstance(challenge, str)

    def test_get_emptyCacheDir(self):
        """An empty cacheDir should raise GimpCaptchaError."""
@@ -238,7 +238,7 @@ class GimpCaptchaTests(unittest.TestCase):
        c = captcha.GimpCaptcha(self.publik, self.sekrit, self.hmacKey,
                                self.cacheDir)
        image, challenge = c.get()
        challengeBadB64 = challenge.decode('utf-8').rstrip('==') + "\x42\x42\x42"
        challengeBadB64 = challenge.rstrip('==') + "\x42\x42\x42"
        self.assertEquals(
            c.check(challenge, c.answer, c.secretKey, c.hmacKey),
            True)