Exemplo n.º 1
0
 def test_verify_service_disabled(self):
     responses.add(
         responses.POST,
         recaptcha.VERIFY_URL,
         body="",
     )
     serv = recaptcha.Service(
         pretend.stub(registry=pretend.stub(settings={})))
     assert serv.verify_response('') is None
     assert not responses.calls
Exemplo n.º 2
0
    def test_remote_ip_payload(self):
        responses.add(
            responses.POST,
            recaptcha.VERIFY_URL,
            json={"success": True},
        )
        serv = recaptcha.Service(_REQUEST)
        serv.verify_response("meaningless", remote_ip="ip")

        payload = dict(urllib.parse.parse_qsl(responses.calls[0].request.body))
        assert payload["remoteip"] == "ip"
Exemplo n.º 3
0
    def test_missing_success_key_error(self):
        responses.add(
            responses.POST,
            recaptcha.VERIFY_URL,
            json={"foo": "bar"},
        )
        serv = recaptcha.Service(_REQUEST)

        with pytest.raises(recaptcha.UnexpectedError) as err:
            serv.verify_response("meaningless")

        expected = "Missing 'success' key in response: {'foo': 'bar'}"
        assert str(err.value) == expected
Exemplo n.º 4
0
    def test_unexpected_data_error(self):
        responses.add(
            responses.POST,
            recaptcha.VERIFY_URL,
            body="something awful",
        )
        serv = recaptcha.Service(_REQUEST)

        with pytest.raises(recaptcha.UnexpectedError) as err:
            serv.verify_response("meaningless")

        expected = "Unexpected data in response body: something awful"
        assert str(err.value) == expected
Exemplo n.º 5
0
 def test_verify_service_disabled_with_none(self):
     responses.add(
         responses.POST,
         recaptcha.VERIFY_URL,
         body="",
     )
     serv = recaptcha.Service(
         pretend.stub(registry=pretend.stub(settings={
             "recaptcha.site_key": None,
             "recaptcha.secret_key": None,
         }, ), ), )
     assert serv.verify_response('') is None
     assert not responses.calls
Exemplo n.º 6
0
    def test_missing_error_codes_key_error(self):
        responses.add(
            responses.POST,
            recaptcha.VERIFY_URL,
            json={"success": False},
        )
        serv = recaptcha.Service(_REQUEST)

        with pytest.raises(recaptcha.UnexpectedError) as err:
            serv.verify_response("meaningless")

        expected = "Response missing 'error-codes' key: {'success': False}"
        assert str(err.value) == expected
Exemplo n.º 7
0
    def test_challenge_response_missing_hostname_success(self):
        responses.add(
            responses.POST,
            recaptcha.VERIFY_URL,
            json={
                "success": True,
                "challenge_ts": 0,
            },
        )

        serv = recaptcha.Service(_REQUEST)
        res = serv.verify_response("meaningless")

        assert isinstance(res, recaptcha.ChallengeResponse)
        assert res.hostname is None
        assert res.challenge_ts == 0
Exemplo n.º 8
0
    def test_error_map_unknown_error(self):
        responses.add(
            responses.POST,
            recaptcha.VERIFY_URL,
            json={
                "success": False,
                "challenge_ts": 0,
                "hostname": "hostname_value",
                "error_codes": ["slartibartfast"],
            },
        )

        serv = recaptcha.Service(_REQUEST)
        with pytest.raises(recaptcha.UnexpectedError) as err:
            serv.verify_response("meaningless")
            assert str(err) == "Unexpected error code: slartibartfast"
Exemplo n.º 9
0
    def test_error_map_error(self):
        for key, exc_tp in recaptcha.ERROR_CODE_MAP.items():
            responses.add(responses.POST,
                          recaptcha.VERIFY_URL,
                          json={
                              "success": False,
                              "challenge_ts": 0,
                              "hostname": "hotname_value",
                              "error_codes": [key]
                          })

            serv = recaptcha.Service(_REQUEST)
            with pytest.raises(exc_tp):
                serv.verify_response("meaningless")

            responses.reset()
Exemplo n.º 10
0
 def test_csp_policy(self):
     scheme = 'https'
     request = pretend.stub(
         scheme=scheme,
         registry=pretend.stub(settings={
             "recaptcha.site_key": "foo",
             "recaptcha.secret_key": "bar",
         }))
     serv = recaptcha.Service(request)
     assert serv.csp_policy == {
         "script-src": [
             "{request.scheme}://www.google.com/recaptcha/",
             "{request.scheme}://www.gstatic.com/recaptcha/",
         ],
         "frame-src": ["{request.scheme}://www.google.com/recaptcha/"],
         "style-src": ["'unsafe-inline'"],
     }
Exemplo n.º 11
0
    def test_unexpected_error(self):
        serv = recaptcha.Service(_REQUEST)
        serv.request.http.post = pretend.raiser(socket.error)

        with pytest.raises(recaptcha.UnexpectedError):
            serv.verify_response("meaningless")