コード例 #1
0
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
コード例 #2
0
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)
コード例 #3
0
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)
コード例 #4
0
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
コード例 #5
0
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)
コード例 #6
0
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
コード例 #7
0
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
コード例 #8
0
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
コード例 #9
0
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
コード例 #10
0
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
コード例 #11
0
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)
コード例 #12
0
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)
コード例 #13
0
def test_build_signup_form(dummy_request):
    dummy_request.params = dummy_request.POST = MultiDict()
    form = build_signup_form(dummy_request)
    assert isinstance(form, SignupForm)