mirror of
https://github.com/django/django.git
synced 2025-10-26 07:06:08 +00:00
Fixed #17194 -- Made sure the auth form tests work if a language other than English is activated by moving the error message translation strings into class level dictionaries. Many thanks to Claude Paroz, rabio and Bas Peschier for their initial work on this.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17204 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
from __future__ import with_statement
|
||||
import os
|
||||
from django.core import mail
|
||||
from django.forms.fields import Field, EmailField
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, PasswordChangeForm, SetPasswordForm, UserChangeForm, PasswordResetForm
|
||||
from django.test import TestCase
|
||||
from django.utils.encoding import force_unicode
|
||||
from django.utils import translation
|
||||
|
||||
|
||||
class UserCreationFormTest(TestCase):
|
||||
@@ -19,7 +22,7 @@ class UserCreationFormTest(TestCase):
|
||||
form = UserCreationForm(data)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form["username"].errors,
|
||||
[u'A user with that username already exists.'])
|
||||
[force_unicode(form.error_messages['duplicate_username'])])
|
||||
|
||||
def test_invalid_data(self):
|
||||
data = {
|
||||
@@ -30,8 +33,7 @@ class UserCreationFormTest(TestCase):
|
||||
form = UserCreationForm(data)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form["username"].errors,
|
||||
[u'This value may contain only letters, numbers and @/./+/-/_ characters.'])
|
||||
|
||||
[force_unicode(form.fields['username'].error_messages['invalid'])])
|
||||
|
||||
def test_password_verification(self):
|
||||
# The verification password is incorrect.
|
||||
@@ -43,25 +45,21 @@ class UserCreationFormTest(TestCase):
|
||||
form = UserCreationForm(data)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form["password2"].errors,
|
||||
[u"The two password fields didn't match."])
|
||||
|
||||
[force_unicode(form.error_messages['password_mismatch'])])
|
||||
|
||||
def test_both_passwords(self):
|
||||
# One (or both) passwords weren't given
|
||||
data = {'username': 'jsmith'}
|
||||
form = UserCreationForm(data)
|
||||
required_error = [force_unicode(Field.default_error_messages['required'])]
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form['password1'].errors,
|
||||
[u'This field is required.'])
|
||||
self.assertEqual(form['password2'].errors,
|
||||
[u'This field is required.'])
|
||||
|
||||
self.assertEqual(form['password1'].errors, required_error)
|
||||
self.assertEqual(form['password2'].errors, required_error)
|
||||
|
||||
data['password2'] = 'test123'
|
||||
form = UserCreationForm(data)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form['password1'].errors,
|
||||
[u'This field is required.'])
|
||||
self.assertEqual(form['password1'].errors, required_error)
|
||||
|
||||
def test_success(self):
|
||||
# The success case.
|
||||
@@ -91,7 +89,7 @@ class AuthenticationFormTest(TestCase):
|
||||
form = AuthenticationForm(None, data)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form.non_field_errors(),
|
||||
[u'Please enter a correct username and password. Note that both fields are case-sensitive.'])
|
||||
[force_unicode(form.error_messages['invalid_login'])])
|
||||
|
||||
def test_inactive_user(self):
|
||||
# The user is inactive.
|
||||
@@ -102,8 +100,20 @@ class AuthenticationFormTest(TestCase):
|
||||
form = AuthenticationForm(None, data)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form.non_field_errors(),
|
||||
[u'This account is inactive.'])
|
||||
[force_unicode(form.error_messages['inactive'])])
|
||||
|
||||
def test_inactive_user_i18n(self):
|
||||
with self.settings(USE_I18N=True):
|
||||
with translation.override('pt-br', deactivate=True):
|
||||
# The user is inactive.
|
||||
data = {
|
||||
'username': 'inactive',
|
||||
'password': 'password',
|
||||
}
|
||||
form = AuthenticationForm(None, data)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form.non_field_errors(),
|
||||
[force_unicode(form.error_messages['inactive'])])
|
||||
|
||||
def test_success(self):
|
||||
# The success case
|
||||
@@ -130,7 +140,7 @@ class SetPasswordFormTest(TestCase):
|
||||
form = SetPasswordForm(user, data)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form["new_password2"].errors,
|
||||
[u"The two password fields didn't match."])
|
||||
[force_unicode(form.error_messages['password_mismatch'])])
|
||||
|
||||
def test_success(self):
|
||||
user = User.objects.get(username='testclient')
|
||||
@@ -156,8 +166,7 @@ class PasswordChangeFormTest(TestCase):
|
||||
form = PasswordChangeForm(user, data)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form["old_password"].errors,
|
||||
[u'Your old password was entered incorrectly. Please enter it again.'])
|
||||
|
||||
[force_unicode(form.error_messages['password_incorrect'])])
|
||||
|
||||
def test_password_verification(self):
|
||||
# The two new passwords do not match.
|
||||
@@ -170,8 +179,7 @@ class PasswordChangeFormTest(TestCase):
|
||||
form = PasswordChangeForm(user, data)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form["new_password2"].errors,
|
||||
[u"The two password fields didn't match."])
|
||||
|
||||
[force_unicode(form.error_messages['password_mismatch'])])
|
||||
|
||||
def test_success(self):
|
||||
# The success case.
|
||||
@@ -190,6 +198,7 @@ class PasswordChangeFormTest(TestCase):
|
||||
self.assertEqual(PasswordChangeForm(user, {}).fields.keys(),
|
||||
['old_password', 'new_password1', 'new_password2'])
|
||||
|
||||
|
||||
class UserChangeFormTest(TestCase):
|
||||
|
||||
fixtures = ['authtestdata.json']
|
||||
@@ -200,7 +209,7 @@ class UserChangeFormTest(TestCase):
|
||||
form = UserChangeForm(data, instance=user)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form['username'].errors,
|
||||
[u'This value may contain only letters, numbers and @/./+/-/_ characters.'])
|
||||
[force_unicode(form.fields['username'].error_messages['invalid'])])
|
||||
|
||||
def test_bug_14242(self):
|
||||
# A regression test, introduce by adding an optimization for the
|
||||
@@ -232,19 +241,19 @@ class PasswordResetFormTest(TestCase):
|
||||
return (user, username, email)
|
||||
|
||||
def test_invalid_email(self):
|
||||
data = {'email':'not valid'}
|
||||
data = {'email': 'not valid'}
|
||||
form = PasswordResetForm(data)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form['email'].errors,
|
||||
[u'Enter a valid e-mail address.'])
|
||||
[force_unicode(EmailField.default_error_messages['invalid'])])
|
||||
|
||||
def test_nonexistant_email(self):
|
||||
# Test nonexistant email address
|
||||
data = {'email':'foo@bar.com'}
|
||||
data = {'email': 'foo@bar.com'}
|
||||
form = PasswordResetForm(data)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form.errors,
|
||||
{'email': [u"That e-mail address doesn't have an associated user account. Are you sure you've registered?"]})
|
||||
{'email': [force_unicode(form.error_messages['unknown'])]})
|
||||
|
||||
def test_cleaned_data(self):
|
||||
# Regression test
|
||||
@@ -284,7 +293,6 @@ class PasswordResetFormTest(TestCase):
|
||||
form = PasswordResetForm({'email': email})
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
|
||||
def test_unusable_password(self):
|
||||
user = User.objects.create_user('testuser', 'test@example.com', 'test')
|
||||
data = {"email": "test@example.com"}
|
||||
|
||||
Reference in New Issue
Block a user