def test_create(self):
        user_service = pretend.stub()
        breach_service = pretend.stub()

        form = forms.RegistrationForm(
            data={}, user_service=user_service, breach_service=breach_service
        )
        assert form.user_service is user_service
Beispiel #2
0
    def test_email_required_error(self):
        form = forms.RegistrationForm(
            data={"email": ""},
            user_service=pretend.stub(find_userid_by_email=pretend.
                                      call_recorder(lambda _: pretend.stub())),
        )

        assert not form.validate()
        assert form.email.errors.pop() == "This field is required."
Beispiel #3
0
    def test_create(self):
        user_service = pretend.stub()
        recaptcha_service = pretend.stub(enabled=True)

        form = forms.RegistrationForm(data={},
                                      user_service=user_service,
                                      recaptcha_service=recaptcha_service)
        assert form.user_service is user_service
        assert form.recaptcha_service is recaptcha_service
Beispiel #4
0
    def test_invalid_email_error(self):
        form = forms.RegistrationForm(
            data={"email": "bad"},
            user_service=pretend.stub(
                find_userid_by_email=pretend.call_recorder(lambda _: None), ),
            recaptcha_service=pretend.stub(enabled=True),
        )

        assert not form.validate()
        assert form.email.errors.pop() == "Invalid email address."
Beispiel #5
0
    def test_blacklisted_email_error(self):
        form = forms.RegistrationForm(
            data={"email": "*****@*****.**"},
            user_service=pretend.stub(
                find_userid_by_email=pretend.call_recorder(lambda _: None), ),
            recaptcha_service=pretend.stub(enabled=True),
        )

        assert not form.validate()
        assert form.email.errors.pop() == "Disposable email."
Beispiel #6
0
 def test_name_too_long(self):
     form = forms.RegistrationForm(
         data={"full_name": "hello " * 50},
         user_service=pretend.stub(
             find_userid=pretend.call_recorder(lambda _: None), ),
     )
     assert not form.validate()
     assert (
         form.full_name.errors.pop() ==
         "The name is too long. Choose a name with 100 characters or less.")
Beispiel #7
0
    def test_invalid_email_error(self):
        form = forms.RegistrationForm(
            data={"email": "bad"},
            user_service=pretend.stub(
                find_userid_by_email=pretend.call_recorder(lambda _: None), ),
        )

        assert not form.validate()
        assert (form.email.errors.pop() ==
                "The email address isn't valid. Try again.")
Beispiel #8
0
 def test_username_exists(self):
     form = forms.RegistrationForm(
         data={"username": "******"},
         user_service=pretend.stub(
             find_userid=pretend.call_recorder(lambda name: 1), ),
     )
     assert not form.validate()
     assert (form.username.errors.pop() ==
             "This username is already being used by another account. "
             "Choose a different username.")
Beispiel #9
0
    def test_password_confirm_required_error(self):
        form = forms.RegistrationForm(
            data={"password_confirm": ""},
            user_service=pretend.stub(find_userid_by_email=pretend.
                                      call_recorder(lambda _: pretend.stub())),
            breach_service=pretend.stub(check_password=lambda pw: False),
        )

        assert not form.validate()
        assert form.password_confirm.errors.pop() == "This field is required."
Beispiel #10
0
    def test_blacklisted_email_error(self):
        form = forms.RegistrationForm(
            data={"email": "*****@*****.**"},
            user_service=pretend.stub(
                find_userid_by_email=pretend.call_recorder(lambda _: None), ),
        )

        assert not form.validate()
        assert (form.email.errors.pop() ==
                "You can't create an account with an email address from "
                "this domain. Use a different email.")
Beispiel #11
0
    def test_email_exists_error(self):
        form = forms.RegistrationForm(
            data={"email": "*****@*****.**"},
            user_service=pretend.stub(find_userid_by_email=pretend.
                                      call_recorder(lambda _: pretend.stub())),
        )

        assert not form.validate()
        assert (form.email.errors.pop() ==
                "This email address is already being used by another account. "
                "Use a different email.")
Beispiel #12
0
    def test_email_exists_error(self):
        form = forms.RegistrationForm(
            data={"email": "*****@*****.**"},
            user_service=pretend.stub(
                find_userid_by_email=pretend.call_recorder(
                    lambda _: pretend.stub()), ),
            recaptcha_service=pretend.stub(enabled=True),
        )

        assert not form.validate()
        assert form.email.errors.pop() == "Email exists."
Beispiel #13
0
    def test_exotic_email_success(self):
        form = forms.RegistrationForm(
            data={"email": "*****@*****.**"},
            user_service=pretend.stub(
                find_userid_by_email=pretend.call_recorder(lambda _: None)),
            breach_service=pretend.stub(
                check_password=lambda pw, tags=None: False),
        )

        form.validate()
        assert len(form.email.errors) == 0
Beispiel #14
0
 def test_username_prohibted(self, pyramid_config):
     form = forms.RegistrationForm(
         data={"username": "******"},
         user_service=pretend.stub(username_is_prohibited=lambda a: True, ),
         breach_service=pretend.stub(
             check_password=lambda pw, tags=None: False),
     )
     assert not form.validate()
     assert (str(form.username.errors.pop()) ==
             "This username is already being used by another account. "
             "Choose a different username.")
Beispiel #15
0
    def test_password_confirm_required_error(self):
        form = forms.RegistrationForm(
            data={"password_confirm": ""},
            user_service=pretend.stub(
                find_userid_by_email=pretend.call_recorder(
                    lambda _: pretend.stub()), ),
            recaptcha_service=pretend.stub(enabled=True),
        )

        assert not form.validate()
        assert form.password_confirm.errors.pop() == "This field is required."
Beispiel #16
0
    def test_invalid_email_error(self, pyramid_config, email):
        form = forms.RegistrationForm(
            data={"email": email},
            user_service=pretend.stub(
                find_userid_by_email=pretend.call_recorder(lambda _: None)),
            breach_service=pretend.stub(
                check_password=lambda pw, tags=None: False),
        )

        assert not form.validate()
        assert (str(form.email.errors.pop()) ==
                "The email address isn't valid. Try again.")
Beispiel #17
0
 def test_username_exists(self):
     form = forms.RegistrationForm(
         data={"username": "******"},
         user_service=pretend.stub(
             find_userid=pretend.call_recorder(lambda name: 1), ),
         recaptcha_service=pretend.stub(
             enabled=False,
             verify_response=pretend.call_recorder(lambda _: None),
         ),
     )
     assert not form.validate()
     assert form.username.errors.pop() == "Username exists."
Beispiel #18
0
 def test_recaptcha_error(self):
     form = forms.RegistrationForm(
         data={"g_recaptcha_response": "asd"},
         user_service=pretend.stub(),
         recaptcha_service=pretend.stub(
             verify_response=pretend.raiser(recaptcha.RecaptchaError),
             enabled=True,
         ),
     )
     assert not form.validate()
     assert form.g_recaptcha_response.errors.pop() \
         == "Recaptcha error."
Beispiel #19
0
 def test_recaptcha_required_error(self):
     form = forms.RegistrationForm(
         data={"g_recaptcha_response": ""},
         user_service=pretend.stub(),
         recaptcha_service=pretend.stub(
             enabled=True,
             verify_response=pretend.call_recorder(lambda _: None),
         ),
     )
     assert not form.validate()
     assert form.g_recaptcha_response.errors.pop() \
         == "Recaptcha error."
Beispiel #20
0
 def test_username_exists(self, pyramid_config):
     form = forms.RegistrationForm(
         data={"username": "******"},
         user_service=pretend.stub(
             find_userid=pretend.call_recorder(lambda name: 1)),
         breach_service=pretend.stub(
             check_password=lambda pw, tags=None: False),
     )
     assert not form.validate()
     assert (str(form.username.errors.pop()) ==
             "This username is already being used by another account. "
             "Choose a different username.")
Beispiel #21
0
 def test_name_too_long(self, pyramid_config):
     form = forms.RegistrationForm(
         data={"full_name": "hello " * 50},
         user_service=pretend.stub(
             find_userid=pretend.call_recorder(lambda _: None)),
         breach_service=pretend.stub(
             check_password=lambda pw, tags=None: True),
     )
     assert not form.validate()
     assert (
         str(form.full_name.errors.pop()) ==
         "The name is too long. Choose a name with 100 characters or less.")
Beispiel #22
0
    def test_invalid_email_error(self):
        form = forms.RegistrationForm(
            data={"email": "bad"},
            user_service=pretend.stub(
                find_userid_by_email=pretend.call_recorder(lambda _: None), ),
            recaptcha_service=pretend.stub(enabled=True),
        )

        assert not form.validate()
        assert (form.email.errors.pop() ==
                "The email address you have chosen is not a valid format. "
                "Please try again.")
Beispiel #23
0
    def test_prohibited_email_error(self, pyramid_config):
        form = forms.RegistrationForm(
            data={"email": "*****@*****.**"},
            user_service=pretend.stub(
                find_userid_by_email=pretend.call_recorder(lambda _: None)),
            breach_service=pretend.stub(
                check_password=lambda pw, tags=None: False),
        )

        assert not form.validate()
        assert (str(form.email.errors.pop()) ==
                "You can't use an email address from this domain. Use a "
                "different email.")
Beispiel #24
0
    def test_email_exists_error(self, pyramid_config):
        form = forms.RegistrationForm(
            data={"email": "*****@*****.**"},
            user_service=pretend.stub(find_userid_by_email=pretend.
                                      call_recorder(lambda _: pretend.stub())),
            breach_service=pretend.stub(
                check_password=lambda pw, tags=None: False),
        )

        assert not form.validate()
        assert (str(form.email.errors.pop()) ==
                "This email address is already being used by another account. "
                "Use a different email.")
Beispiel #25
0
 def test_password_strength(self):
     cases = (
         ("foobar", False),
         ("somethingalittlebetter9", True),
         ("1aDeCent!1", True),
     )
     for pwd, valid in cases:
         form = forms.RegistrationForm(
             data={"new_password": pwd, "password_confirm": pwd},
             user_service=pretend.stub(),
         )
         form.validate()
         assert (len(form.new_password.errors) == 0) == valid
Beispiel #26
0
 def test_username_is_valid(self, username):
     form = forms.RegistrationForm(
         data={"username": username},
         user_service=pretend.stub(
             find_userid=pretend.call_recorder(lambda _: None), ),
     )
     assert not form.validate()
     assert (
         form.username.errors.pop() == "The username is invalid. Usernames "
         "must be composed of letters, numbers, "
         "dots, hyphens and underscores. And must "
         "also start and finish with a letter or number. "
         "Choose a different username.")
Beispiel #27
0
 def test_recaptcha_disabled(self):
     form = forms.RegistrationForm(
         data={"g_recpatcha_response": ""},
         user_service=pretend.stub(),
         recaptcha_service=pretend.stub(
             enabled=False,
             verify_response=pretend.call_recorder(lambda _: None),
         ),
     )
     assert not form.validate()
     # there shouldn't be any errors for the recaptcha field if it's
     # disabled
     assert not form.g_recaptcha_response.errors
Beispiel #28
0
 def test_username_exists(self):
     form = forms.RegistrationForm(
         data={"username": "******"},
         user_service=pretend.stub(
             find_userid=pretend.call_recorder(lambda name: 1), ),
         recaptcha_service=pretend.stub(
             enabled=False,
             verify_response=pretend.call_recorder(lambda _: None),
         ),
     )
     assert not form.validate()
     assert (form.username.errors.pop() ==
             "This username is already being used by another account. "
             "Please choose a different username.")
Beispiel #29
0
    def test_passwords_match_success(self):
        user_service = pretend.stub(find_userid_by_email=pretend.call_recorder(
            lambda _: pretend.stub()), )
        form = forms.RegistrationForm(
            data={
                "new_password": "******",
                "password_confirm": "MyStr0ng!shPassword",
            },
            user_service=user_service,
        )

        form.validate()
        assert len(form.new_password.errors) == 0
        assert len(form.password_confirm.errors) == 0
Beispiel #30
0
    def test_passwords_mismatch_error(self):
        user_service = pretend.stub(find_userid_by_email=pretend.call_recorder(
            lambda _: pretend.stub()), )
        form = forms.RegistrationForm(
            data={
                "password": "******",
                "password_confirm": "mismatch",
            },
            user_service=user_service,
            recaptcha_service=pretend.stub(enabled=True),
        )

        assert not form.validate()
        assert form.password_confirm.errors.pop() == "Passwords must match."