mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-19 01:44:13 +00:00
Update captcha
This commit is contained in:
@@ -1 +1 @@
|
||||
from .tests import CaptchaCase, trivial_challenge
|
||||
from .tests import CaptchaCase, trivial_challenge # NOQA
|
||||
|
@@ -12,6 +12,7 @@ import json
|
||||
import re
|
||||
import six
|
||||
import os
|
||||
from six import u
|
||||
|
||||
|
||||
class CaptchaCase(TestCase):
|
||||
@@ -42,7 +43,6 @@ class CaptchaCase(TestCase):
|
||||
settings.CAPTCHA_WORDS_DICTIONARY = self.__current_settings_dictionary
|
||||
settings.CAPTCHA_PUNCTUATION = self.__current_settings_punctuation
|
||||
|
||||
|
||||
def __extract_hash_and_response(self, r):
|
||||
hash_ = re.findall(r'value="([0-9a-f]+)"', str(r.content))[0]
|
||||
response = CaptchaStore.objects.get(hashkey=hash_).response
|
||||
@@ -175,7 +175,7 @@ class CaptchaCase(TestCase):
|
||||
|
||||
def testOutputFormat(self):
|
||||
for urlname in ('captcha-test', 'captcha-test-model-form'):
|
||||
settings.CAPTCHA_OUTPUT_FORMAT = u'%(image)s<p>Hello, captcha world</p>%(hidden_field)s%(text_field)s'
|
||||
settings.CAPTCHA_OUTPUT_FORMAT = u('%(image)s<p>Hello, captcha world</p>%(hidden_field)s%(text_field)s')
|
||||
r = self.client.get(reverse(urlname))
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertTrue('<p>Hello, captcha world</p>' in str(r.content))
|
||||
@@ -186,7 +186,7 @@ class CaptchaCase(TestCase):
|
||||
# we turn on DEBUG because CAPTCHA_OUTPUT_FORMAT is only checked debug
|
||||
|
||||
django_settings.DEBUG = True
|
||||
settings.CAPTCHA_OUTPUT_FORMAT = u'%(image)s'
|
||||
settings.CAPTCHA_OUTPUT_FORMAT = u('%(image)s')
|
||||
try:
|
||||
self.client.get(reverse(urlname))
|
||||
self.fail()
|
||||
@@ -195,14 +195,14 @@ class CaptchaCase(TestCase):
|
||||
django_settings.DEBUG = __current_settings_debug
|
||||
|
||||
def testPerFormFormat(self):
|
||||
settings.CAPTCHA_OUTPUT_FORMAT = u'%(image)s testCustomFormatString %(hidden_field)s %(text_field)s'
|
||||
settings.CAPTCHA_OUTPUT_FORMAT = u('%(image)s testCustomFormatString %(hidden_field)s %(text_field)s')
|
||||
r = self.client.get(reverse('captcha-test'))
|
||||
self.assertTrue('testCustomFormatString' in str(r.content))
|
||||
r = self.client.get(reverse('test_per_form_format'))
|
||||
self.assertTrue('testPerFieldCustomFormatString' in str(r.content))
|
||||
|
||||
def testIssue31ProperLabel(self):
|
||||
settings.CAPTCHA_OUTPUT_FORMAT = u'%(image)s %(hidden_field)s %(text_field)s'
|
||||
settings.CAPTCHA_OUTPUT_FORMAT = u('%(image)s %(hidden_field)s %(text_field)s')
|
||||
r = self.client.get(reverse('captcha-test'))
|
||||
self.assertTrue('<label for="id_captcha_1"' in str(r.content))
|
||||
|
||||
@@ -226,12 +226,12 @@ class CaptchaCase(TestCase):
|
||||
This test covers a default django field and widget behavior
|
||||
It not assert anything. If something is wrong it will raise a error!
|
||||
"""
|
||||
settings.CAPTCHA_OUTPUT_FORMAT = u'%(image)s %(hidden_field)s %(text_field)s'
|
||||
settings.CAPTCHA_OUTPUT_FORMAT = u('%(image)s %(hidden_field)s %(text_field)s')
|
||||
widget = CaptchaTextInput(attrs={'class': 'required'})
|
||||
CaptchaField(widget=widget)
|
||||
|
||||
def testTestMode_Issue15(self):
|
||||
__current_test_mode_setting = settings.CAPTCHA_TEST_MODE
|
||||
__current_test_mode_setting = settings.CAPTCHA_TEST_MODE
|
||||
settings.CAPTCHA_TEST_MODE = False
|
||||
r = self.client.get(reverse('captcha-test'))
|
||||
self.assertEqual(r.status_code, 200)
|
||||
@@ -270,11 +270,30 @@ class CaptchaCase(TestCase):
|
||||
self.assertEqual(r.status_code, 200)
|
||||
hash_, response = self.__extract_hash_and_response(r)
|
||||
|
||||
|
||||
r = self.client.post(reverse('captcha-test-non-required'), dict(captcha_0=hash_, captcha_1=response, subject='xxx', sender='asasd@asdasd.com'))
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertTrue(str(r.content).find('Form validated') > 0)
|
||||
|
||||
def test_autocomplete_off(self):
|
||||
r = self.client.get(reverse('captcha-test'))
|
||||
self.assertTrue('<input autocomplete="off" ' in six.text_type(r.content))
|
||||
|
||||
def test_autocomplete_not_on_hidden_input(self):
|
||||
r = self.client.get(reverse('captcha-test'))
|
||||
self.assertFalse('autocomplete="off" type="hidden" name="captcha_0"' in six.text_type(r.content))
|
||||
self.assertFalse('autocomplete="off" id="id_captcha_0" name="captcha_0" type="hidden"' in six.text_type(r.content))
|
||||
|
||||
def test_transparent_background(self):
|
||||
__current_test_mode_setting = settings.CAPTCHA_BACKGROUND_COLOR
|
||||
settings.CAPTCHA_BACKGROUND_COLOR = "transparent"
|
||||
for key in [store.hashkey for store in six.itervalues(self.stores)]:
|
||||
response = self.client.get(reverse('captcha-image', kwargs=dict(key=key)))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(response.has_header('content-type'))
|
||||
self.assertEqual(response._headers.get('content-type'), ('Content-Type', 'image/png'))
|
||||
|
||||
settings.CAPTCHA_BACKGROUND_COLOR = __current_test_mode_setting
|
||||
|
||||
|
||||
def trivial_challenge():
|
||||
return 'trivial', 'trivial'
|
||||
|
@@ -3,7 +3,8 @@ try:
|
||||
except ImportError:
|
||||
from django.conf.urls.defaults import url, patterns, include
|
||||
|
||||
urlpatterns = patterns('',
|
||||
urlpatterns = patterns(
|
||||
'',
|
||||
url(r'test/$', 'captcha.tests.views.test', name='captcha-test'),
|
||||
url(r'test-modelform/$', 'captcha.tests.views.test_model_form', name='captcha-test-model-form'),
|
||||
url(r'test2/$', 'captcha.tests.views.test_custom_error_message', name='captcha-test-custom-error-message'),
|
||||
|
@@ -3,7 +3,7 @@ from captcha.fields import CaptchaField
|
||||
from django.template import RequestContext, loader
|
||||
from django.http import HttpResponse
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from six import u
|
||||
|
||||
TEST_TEMPLATE = r'''
|
||||
{% load url from future %}
|
||||
@@ -30,6 +30,7 @@ TEST_TEMPLATE = r'''
|
||||
</html>
|
||||
'''
|
||||
|
||||
|
||||
def _test(request, form_class):
|
||||
passed = False
|
||||
if request.POST:
|
||||
@@ -80,8 +81,10 @@ def test_per_form_format(request):
|
||||
help_text='asdasd',
|
||||
error_messages=dict(invalid='TEST CUSTOM ERROR MESSAGE'),
|
||||
output_format=(
|
||||
u'%(image)s testPerFieldCustomFormatString '
|
||||
u'%(hidden_field)s %(text_field)s'
|
||||
u(
|
||||
'%(image)s testPerFieldCustomFormatString '
|
||||
'%(hidden_field)s %(text_field)s'
|
||||
)
|
||||
)
|
||||
)
|
||||
return _test(request, CaptchaTestFormatForm)
|
||||
|
Reference in New Issue
Block a user