Exemplo n.º 1
0
    def test_email_required(self):
        """
        The email address field is required.

        """
        form = forms.RegistrationForm()
        self.assertTrue(form.fields["email"].required)
Exemplo n.º 2
0
    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])
Exemplo n.º 3
0
    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()])
Exemplo n.º 4
0
    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))
Exemplo n.º 5
0
    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])
Exemplo n.º 6
0
    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"])