def test_validate_username_uniqueness_with_new_username(mocker, dummy_request): dummy_request.params = dummy_request.POST = MultiDict() form = build_signup_form(dummy_request) # valid field = mocker.Mock('field', data='oswald2') assert validate_email_uniqueness(form, field) is None
def signup(request): """Renders signup view and creates new user account via POST.""" user = request.user if user: return HTTPFound(location=request.route_path('top')) _ = request.translate form = build_signup_form(request) if 'submit' in request.POST: if form.validate(): user = User(email=form.email.data, name=form.name.data, username=form.username.data) user.set_password(form.password.data) activator = request.find_service(iface=IActivator, name='account') activator.assign(user=user) activator.invoke() request.session.flash(_('signup.creation.success'), queue='success', allow_duplicate=False) return HTTPFound(location=request.route_path('signup')) request.session.flash(_('signup.creation.failure'), queue='failure', allow_duplicate=False) return dict(form=form)
def test_username_availability_check(mocker, dummy_request): user = User(username='******') dummy_request.params = dummy_request.POST = MultiDict() form = build_signup_form(dummy_request) with pytest.raises(ValidationError): field = mocker.Mock('field', data=user.username) username_availability_check(form, field)
def test_username_optionality(dummy_request): dummy_request.params = dummy_request.POST = MultiDict({ 'csrf_token': dummy_request.session.get_csrf_token(), # 'username': '', }) form = build_signup_form(dummy_request) assert not form.validate() assert not form.username.errors
def test_validate_username_uniqueness_with_existing_username( mocker, users, dummy_request): user = users['oswald'] dummy_request.params = dummy_request.POST = MultiDict() form = build_signup_form(dummy_request) with pytest.raises(ValidationError): field = mocker.Mock('field', data=user.username) validate_username_uniqueness(form, field)
def test_username_validations_with_valid_inputs(username, dummy_request): dummy_request.params = dummy_request.POST = MultiDict({ 'csrf_token': dummy_request.session.get_csrf_token(), 'username': username, 'email': '*****@*****.**', 'password': '******', }) form = build_signup_form(dummy_request) assert form.validate() assert not form.errors
def test_username_unique_check_errors(username, dummy_request): dummy_request.params = dummy_request.POST = MultiDict({ 'csrf_token': dummy_request.session.get_csrf_token(), 'username': username, }) form = build_signup_form(dummy_request) assert not form.validate() assert ['This username is already taken'] == form.username.errors
def test_username_invalid_pattern_errors(username, dummy_request): dummy_request.params = dummy_request.POST = MultiDict({ 'csrf_token': dummy_request.session.get_csrf_token(), 'username': username, }) form = build_signup_form(dummy_request) assert not form.validate() assert [('You must use only lowercase alphanumeric characters, and ' 'start with a-z')] == form.username.errors
def test_username_max_length_errors(username, dummy_request): dummy_request.params = dummy_request.POST = MultiDict({ 'csrf_token': dummy_request.session.get_csrf_token(), 'username': username, }) form = build_signup_form(dummy_request) assert not form.validate() assert ['Field must be between 4 and 16 characters long.'] == \ form.username.errors
def test_validate_email_uniqueness_with_pending_expired_email( mocker, users, dummy_request): user = users['henry'] # pending && expired email user_email = user.emails.where( (UserEmail.activation_state == 'pending') & (UserEmail.activation_token_expires_at <= datetime.utcnow())).get() dummy_request.params = dummy_request.POST = MultiDict() form = build_signup_form(dummy_request) # valid field = mocker.Mock('field', data=user_email.email) assert validate_email_uniqueness(form, field) is None
def test_validate_email_uniqueness_with_pending_email( mocker, users, dummy_request): user = users['johnny'] # pending email user_email = user.emails.where( (UserEmail.activation_state == 'pending') & (UserEmail.activation_token_expires_at >= datetime.utcnow())).get() dummy_request.params = dummy_request.POST = MultiDict() form = build_signup_form(dummy_request) with pytest.raises(ValidationError): field = mocker.Mock('field', data=user_email.email) validate_email_uniqueness(form, field)
def test_validate_email_uniqueness_with_existing_email( mocker, users, dummy_request): user = users['oswald'] # valid email user_email = user.emails.where( (UserEmail.activation_state == 'active') & (UserEmail.activation_token_expires_at >> None)).get() dummy_request.params = dummy_request.POST = MultiDict() form = build_signup_form(dummy_request) with pytest.raises(ValidationError): field = mocker.Mock('field', data=user_email.email) validate_email_uniqueness(form, field)
def test_build_signup_form(dummy_request): dummy_request.params = dummy_request.POST = MultiDict() form = build_signup_form(dummy_request) assert isinstance(form, SignupForm)