Source code for registration.tests.test_forms

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
"""
"""
__author__ = 'Alisue <lambdalisue@hashnote.net>'
from django.test import TestCase
from registration.compat import get_user_model
from registration import forms


[docs]class ActivationFormTests(TestCase): """ Test the default registration forms. """
[docs] def test_activation_form(self): """ Test that ``ActivationForm`` enforces username constraints and matching passwords. """ User = get_user_model() # Create a user so we can verify that duplicate usernames aren't # permitted. User.objects.create_user('alice', 'alice@example.com', 'secret') invalid_data_dicts = [ # Mismatched passwords. {'data': {'password1': 'foo', 'password2': 'bar'}, 'error': ('__all__', ["The two password fields didn't match."])}, ] for invalid_dict in invalid_data_dicts: form = forms.ActivationForm(data=invalid_dict['data']) self.failIf(form.is_valid()) self.assertEqual(form.errors[invalid_dict['error'][0]], invalid_dict['error'][1]) form = forms.ActivationForm(data={'password1': 'foo', 'password2': 'foo'}) self.failUnless(form.is_valid())
[docs]class RegistrationFormTests(TestCase): """ Test the default registration forms. """
[docs] def test_registration_form(self): """ Test that ``RegistrationForm`` enforces username constraints and matching passwords. """ User = get_user_model() # Create a user so we can verify that duplicate usernames aren't # permitted. User.objects.create_user('alice', 'alice@example.com', 'secret') invalid_data_dicts = [ # Non-alphanumeric username. {'data': {'username': 'foo/bar', 'email1': 'foo@example.com', 'email2': 'foo@example.com'}, 'error': ('username', ["This value must contain only letters, numbers and underscores."])}, # Already-existing username. {'data': {'username': 'alice', 'email1': 'alice@example.com', 'email2': 'alice@example.com'}, 'error': ('username', ["A user with that username already exists."])}, # Mismatched email. {'data': {'username': 'foo', 'email1': 'foo@example.com', 'email2': 'bar@example.com'}, 'error': ('__all__', ["The two email fields didn't match."])}, ] for invalid_dict in invalid_data_dicts: form = forms.RegistrationForm(data=invalid_dict['data']) self.failIf(form.is_valid()) self.assertEqual(form.errors[invalid_dict['error'][0]], invalid_dict['error'][1]) form = forms.RegistrationForm(data={'username': 'foofoohogehoge', 'email1': 'foo@example.com', 'email2': 'foo@example.com'}) self.failUnless(form.is_valid())
[docs] def test_registration_form_tos(self): """ Test that ``RegistrationFormTermsOfService`` requires agreement to the terms of service. """ form = forms.RegistrationFormTermsOfService(data={'username': 'foo', 'email1': 'foo@example.com', 'email2': 'foo@example.com'}) self.failIf(form.is_valid()) self.assertEqual(form.errors['tos'], ["You must agree to the terms to register"]) form = forms.RegistrationFormTermsOfService(data={'username': 'foofoohogehoge', 'email1': 'foo@example.com', 'email2': 'foo@example.com', 'tos': 'on'}) self.failUnless(form.is_valid())
[docs] def test_registration_form_unique_email(self): """ Test that ``RegistrationFormUniqueEmail`` validates uniqueness of email addresses. """ User = get_user_model() # Create a user so we can verify that duplicate addresses # aren't permitted. User.objects.create_user('alice', 'alice@example.com', 'secret') form = forms.RegistrationFormUniqueEmail(data={'username': 'foo', 'email1': 'alice@example.com', 'email2': 'alice@example.com'}) self.failIf(form.is_valid()) self.assertEqual(form.errors['email1'], ["This email address is already in use. Please supply a different email address."]) form = forms.RegistrationFormUniqueEmail(data={'username': 'foofoohogehoge', 'email1': 'foo@example.com', 'email2': 'foo@example.com'}) self.failUnless(form.is_valid())
[docs] def test_registration_form_no_free_email(self): """ Test that ``RegistrationFormNoFreeEmail`` disallows registration with free email addresses. """ base_data = {'username': 'foofoohogehoge'} for domain in forms.RegistrationFormNoFreeEmail.bad_domains: invalid_data = base_data.copy() invalid_data['email1'] = "foo@%s" % domain invalid_data['email2'] = invalid_data['email1'] form = forms.RegistrationFormNoFreeEmail(data=invalid_data) self.failIf(form.is_valid()) self.assertEqual(form.errors['email1'], ["Registration using free email addresses is prohibited. Please supply a different email address."]) base_data['email1'] = 'foo@example.com' base_data['email2'] = base_data['email1'] form = forms.RegistrationFormNoFreeEmail(data=base_data) self.failUnless(form.is_valid())