def test_email_required(self): """ The email address field is required. """ form = forms.RegistrationForm() self.assertTrue(form.fields["email"].required)
def test_reserved_names(self): """ Reserved names are disallowed. """ for reserved_name in validators.DEFAULT_RESERVED_NAMES: data = self.valid_data.copy() data[self.user_model.USERNAME_FIELD] = reserved_name form = forms.RegistrationForm(data=data) self.assertFalse(form.is_valid()) self.assertTrue(form.has_error(self.user_model.USERNAME_FIELD)) self.assertTrue( str(validators.RESERVED_NAME) in form.errors[ self.user_model.USERNAME_FIELD])
def test_email_validation(self): """ Stricter-than-RFC email validation is applied. This test is necessary because of the combination of HTML5EmailValidator and validate_confusables_email() in the default validator set for the email field of RegistrationForm; some technically-valid email addresses which nonetheless usually indicate bad faith or at least mischief are to be rejected before the confusables validator is applied. """ user_model = get_user_model() for value in ( "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", ): user_data = self.valid_data.copy() user_data["email"] = value form = forms.RegistrationForm(data=user_data) self.assertTrue(form.is_valid()) for value in ( "@@@example.com", "test:test@[email protected]", 'test"test@example"*****@*****.**', ): user_data = self.valid_data.copy() user_data["email"] = value form = forms.RegistrationForm(data=user_data) self.assertFalse(form.is_valid()) self.assertTrue(form.has_error(user_model.get_email_field_name())) self.assertTrue( str(validators.HTML5EmailValidator.message) in form.errors[ user_model.get_email_field_name()])
def test_username_uniqueness(self): """ Username uniqueness is enforced. This test is necessary as of 2.1.x to ensure the base UserCreationForm clean() continues to be called from the overridden clean() in RegistrationForm. """ user_data = self.valid_data.copy() del user_data["password1"] del user_data["password2"] user_data["password"] = "******" existing_user = self.user_model(**user_data) existing_user.save() form = forms.RegistrationForm(data=self.valid_data.copy()) self.assertFalse(form.is_valid()) self.assertTrue(form.has_error(self.user_model.USERNAME_FIELD))
def test_confusable_usernames(self): """ Usernames containing dangerously confusable use of Unicode are disallowed. """ for dangerous_value in ( "p\u0430yp\u0430l", "g\u043e\u043egle", "\u03c1ay\u03c1al", ): data = self.valid_data.copy() data[self.user_model.USERNAME_FIELD] = dangerous_value form = forms.RegistrationForm(data=data) self.assertFalse(form.is_valid()) self.assertTrue(form.has_error(self.user_model.USERNAME_FIELD)) self.assertTrue( str(validators.CONFUSABLE) in form.errors[ self.user_model.USERNAME_FIELD])
def test_confusable_emails(self): """ Usernames containing dangerously confusable use of Unicode are disallowed. """ for dangerous_value in ( "p\u0430yp\[email protected]", "g\u043e\[email protected]", "\u03c1y\[email protected]", "paypal@ex\u0430mple.com", "google@exam\u03c1le.com", ): data = self.valid_data.copy() data["email"] = dangerous_value form = forms.RegistrationForm(data=data) self.assertFalse(form.is_valid()) self.assertTrue(form.has_error("email")) self.assertTrue( str(validators.CONFUSABLE_EMAIL) in form.errors["email"])