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
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."
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
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."
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."
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.")
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.")
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.")
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."
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.")
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.")
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."
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
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.")
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."
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.")
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."
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."
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."
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.")
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.")
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.")
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.")
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.")
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
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.")
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
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.")
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
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."