This commit is contained in:
@@ -9,7 +9,6 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
class LoginForm(auth_forms.AuthenticationForm):
|
||||
username = auth_forms.UsernameField(
|
||||
max_length=254,
|
||||
label=_(u'E-Mail-Adresse'),
|
||||
widget=forms.TextInput(attrs={'autofocus': True}),
|
||||
)
|
||||
@@ -64,7 +63,6 @@ class SetPasswordForm(forms.Form):
|
||||
|
||||
class CreateAndSendPasswordForm(forms.Form):
|
||||
username = auth_forms.UsernameField(
|
||||
max_length=254,
|
||||
label=_(u'E-Mail-Adresse'),
|
||||
widget=forms.TextInput(attrs={'autofocus': True}),
|
||||
)
|
||||
|
||||
@@ -3,7 +3,7 @@ from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
|
||||
|
||||
class SeleniumAuthMixin(object):
|
||||
class SeleniumAuthMixin:
|
||||
def login(self, driver, username, password):
|
||||
driver.get(self.complete_url(reverse('dav_auth:login')))
|
||||
username_field = self.wait_on_presence(driver, (By.ID, 'id_username'))
|
||||
|
||||
@@ -11,7 +11,6 @@ from ..forms import LoginForm, SetPasswordForm, CreateAndSendPasswordForm
|
||||
TEST_USERNAME = 'root@localhost'
|
||||
TEST_PASSWORD = u'me||ön 21ABll'
|
||||
TEST_EMAIL = TEST_USERNAME
|
||||
USERNAME_MAX_LENGTH = 254
|
||||
|
||||
|
||||
class LoginFormTestCase(FormsTestCase):
|
||||
@@ -24,11 +23,6 @@ class LoginFormTestCase(FormsTestCase):
|
||||
model = get_user_model()
|
||||
self.user = model.objects.create_user(username=TEST_USERNAME, password=TEST_PASSWORD, email=TEST_EMAIL)
|
||||
|
||||
def test_length(self):
|
||||
form = self.form_class()
|
||||
self.assertEqual(form.fields['username'].max_length, USERNAME_MAX_LENGTH)
|
||||
self.assertEqual(form.fields['password'].max_length, None)
|
||||
|
||||
def test_labels(self):
|
||||
form = self.form_class()
|
||||
self.assertEqual(form.fields['username'].label, ugettext(u'E-Mail-Adresse'))
|
||||
@@ -53,13 +47,6 @@ class LoginFormTestCase(FormsTestCase):
|
||||
]
|
||||
super(LoginFormTestCase, self).test_invalid_data(data_sets=data_sets)
|
||||
|
||||
def test_username_too_long(self):
|
||||
data_sets = [
|
||||
FormDataSet({'username': 'u' * USERNAME_MAX_LENGTH + 'u', 'password': self.test_password},
|
||||
expected_errors=[('username', 'max_length')]),
|
||||
]
|
||||
super(LoginFormTestCase, self).test_invalid_data(data_sets=data_sets)
|
||||
|
||||
def test_invalid_username(self):
|
||||
data_sets = [
|
||||
FormDataSet({'username': self.test_username[::-1], 'password': self.test_password},
|
||||
@@ -202,13 +189,8 @@ class CreateAndSendPasswordFormTestCase(FormsTestCase):
|
||||
)
|
||||
invalid_data_sets = (
|
||||
FormDataSet({'username': ''}, expected_errors=[('username', 'required')]),
|
||||
FormDataSet({'username': 'u' * USERNAME_MAX_LENGTH + 'u'}, expected_errors=[('username', 'max_length')]),
|
||||
)
|
||||
|
||||
def test_length(self):
|
||||
form = self.form_class()
|
||||
self.assertEqual(form.fields['username'].max_length, USERNAME_MAX_LENGTH)
|
||||
|
||||
def test_labels(self):
|
||||
form = self.form_class()
|
||||
self.assertEqual(form.fields['username'].label, ugettext(u'E-Mail-Adresse'))
|
||||
|
||||
32
dav_auth/tests/test_models.py
Normal file
32
dav_auth/tests/test_models.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from unittest import skip
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.test import TestCase, Client
|
||||
|
||||
|
||||
class ModelsTestCase(TestCase):
|
||||
@skip('I do not know, why the user.save() does not raise an exception')
|
||||
def test_username_length(self):
|
||||
max_length = 150 # Hard coded in django.contrib.auth.models.AbstractUser
|
||||
username_ok = 'u' * max_length
|
||||
username_too_long = username_ok + 'u'
|
||||
|
||||
user_model = get_user_model()
|
||||
user = user_model(username=username_too_long,
|
||||
first_name='A',
|
||||
last_name='User',
|
||||
email='a.user@example.com')
|
||||
user.save()
|
||||
|
||||
def test_last_login(self):
|
||||
user_model = get_user_model()
|
||||
user = user_model(username='auser',
|
||||
first_name='A',
|
||||
last_name='User',
|
||||
email='a.user@example.com')
|
||||
user.save()
|
||||
self.assertEqual(user.last_login, None)
|
||||
|
||||
c = Client()
|
||||
c.force_login(user)
|
||||
self.assertNotEqual(user.last_login, None)
|
||||
@@ -40,7 +40,7 @@ class TestCase(SeleniumAuthMixin, SeleniumTestCase):
|
||||
c = self.selenium
|
||||
c.get(self.complete_url('/'))
|
||||
try:
|
||||
link = c.find_element_by_css_selector('#login-widget a')
|
||||
c.find_element_by_css_selector('#login-widget a')
|
||||
except NoSuchElementException as e: # pragma: no cover
|
||||
self.fail(str(e))
|
||||
|
||||
@@ -65,4 +65,3 @@ class TestCase(SeleniumAuthMixin, SeleniumTestCase):
|
||||
self.assertEqual(field.get_attribute('required'), 'true')
|
||||
field = c.find_element_by_id('id_send_password_mail')
|
||||
self.assertEqual(field.get_attribute('required'), None)
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ class ViewsTestCase(TestCase):
|
||||
cls.set_password_message = ugettext(u'Passwort gespeichert.')
|
||||
|
||||
def setUp(self):
|
||||
super(TestCase, self).setUp()
|
||||
super(ViewsTestCase, self).setUp()
|
||||
# Need a test user
|
||||
self.test_username = TEST_USERNAME
|
||||
self.test_password = TEST_PASSWORD
|
||||
|
||||
@@ -2,6 +2,8 @@ from django.conf.urls import url
|
||||
|
||||
from . import views
|
||||
|
||||
app_name = 'dav_auth'
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^login$', views.LoginView.as_view(), name='login'),
|
||||
url(r'^logout$', views.LogoutView.as_view(), name='logout'),
|
||||
|
||||
@@ -4,7 +4,7 @@ from django.core.exceptions import ValidationError
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
|
||||
class PasswordScoreValidator(object):
|
||||
class PasswordScoreValidator:
|
||||
def _get_score(self, password, user=None):
|
||||
score = 0
|
||||
char_counters = {}
|
||||
@@ -98,7 +98,7 @@ class PasswordScoreValidator(object):
|
||||
return text
|
||||
|
||||
|
||||
class CustomWordlistPasswordValidator(object):
|
||||
class CustomWordlistPasswordValidator:
|
||||
context = 'the Sektion Karlsruhe'
|
||||
words = (
|
||||
u'dav',
|
||||
@@ -132,7 +132,7 @@ class CustomWordlistPasswordValidator(object):
|
||||
return text
|
||||
|
||||
|
||||
class CharacterClassPasswordValidator(object):
|
||||
class CharacterClassPasswordValidator:
|
||||
def _is_enough_lower(self, password):
|
||||
lower = re.sub(r'[^a-z]', '', password)
|
||||
if len(lower) < self.minimum_lower:
|
||||
|
||||
Reference in New Issue
Block a user