Пример #1
0
 def filter_stream(self, req, method, filename, stream, data):
     if filename != 'register.html':
         return stream
     transformer = Transformer(
         '//form[@id="acctmgr_registerform"]/input[@type="submit"]')
     return TracCaptchaController(self.env).inject_captcha_into_stream(
         req, stream, transformer)
 def test_include_token_in_form_if_token_was_present_in_request(self):
     controller = TracCaptchaController(self.env)
     valid_token = CryptoBox(controller.token_key()).generate_token()
     req = self.post_request('/newticket',
                             field_summary='Foo',
                             __captcha_token=valid_token,
                             preview='Preview')
     response = self.simulate_request(req)
     self.assert_not_none(self.input_with_captcha_token(response))
     self.assert_false(self.is_fake_captcha_visible(response))
Пример #3
0
 def validate_registration(self, req):
     error_message = TracCaptchaController(
         self.env).check_captcha_solution(req)
     if error_message is None:
         return
     # AccountManager can not retain the password...
     parameters = dict(username=req.args.get('user'),
                       email=req.args.get('email'))
     error = TracError('')
     error.acctmgr = parameters
     error.message = error_message
     add_warning(req, error_message)
     raise error
Пример #4
0
    def assert_captcha_completed(self, req, client_class=None):
        client = self.client(client_class)
        remote_ip = req.remote_addr
        challenge = req.args.get('recaptcha_challenge_field')
        response = req.args.get('recaptcha_response_field')
        client.verify(remote_ip, challenge, response)

        controller = TracCaptchaController(self.env)
        base_message = 'Captcha for %(path)s successfully solved with %(challenge)s/%(response)s and %(arguments)s'
        parameters = dict(path=req.path_info,
                          challenge=repr(challenge),
                          response=repr(response),
                          arguments=repr(req.args))
        controller.debug_log(base_message % parameters)
Пример #5
0
 def setUp(self):
     self.super()
     self.controller = TracCaptchaController(self.env)
     self.assert_false(self.has_permission('anonymous', 'CAPTCHA_SKIP'))
Пример #6
0
 def reject_if_captcha_not_solved(self, req, submission):
     error_message = TracCaptchaController(self.env).check_captcha_solution(req)
     if error_message is None:
         return (True, submission)
     return (False, error_message)
Пример #7
0
 def filter_stream(self, req, method, filename, stream, data):
     if filename not in ('topic-add.html', 'message-list.html', 'wiki-message-list.html'):
         return stream
     transformer = Transformer('//div[@class="buttons"]')
     return TracCaptchaController(self.env).inject_captcha_into_stream(req, stream, transformer)
Пример #8
0
 def assert_captcha_is_active(self, captcha):
     self.assert_equals(captcha(self.env),
                        TracCaptchaController(self.env).captcha)
Пример #9
0
 def validate_ticket(self, req, ticket):
     error_message = TracCaptchaController(self.env).check_captcha_solution(req)
     if error_message is None:
         return ()
     return ((None, error_message),)
Пример #10
0
 def filter_stream(self, req, method, filename, stream, data):
     if filename != 'ticket.html':
         return stream
     transformer = Transformer('//div[@class="buttons"]')
     return TracCaptchaController(self.env).inject_captcha_into_stream(req, stream, transformer)