12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import pytest
- from flaskbb.auth.services.registration import (EmailUniquenessValidator,
- UsernameRequirements,
- UsernameUniquenessValidator,
- UsernameValidator)
- from flaskbb.core.auth.registration import UserRegistrationInfo
- from flaskbb.core.exceptions import ValidationError
- from flaskbb.user.models import User
- pytestmark = pytest.mark.usefixtures('default_settings')
- def test_raises_if_username_too_short():
- requirements = UsernameRequirements(min=4, max=100, blacklist=set())
- validator = UsernameValidator(requirements)
- registration = UserRegistrationInfo(
- username='no', password='no', email='no@no.no', group=4, language='no'
- )
- with pytest.raises(ValidationError) as excinfo:
- validator(registration)
- assert excinfo.value.attribute == 'username'
- assert 'must be between' in excinfo.value.reason
- def test_raises_if_username_too_long():
- requirements = UsernameRequirements(min=0, max=1, blacklist=set())
- validator = UsernameValidator(requirements)
- registration = UserRegistrationInfo(
- username='no', password='no', email='no@no.no', group=4, language='no'
- )
- with pytest.raises(ValidationError) as excinfo:
- validator(registration)
- assert excinfo.value.attribute == 'username'
- assert 'must be between' in excinfo.value.reason
- def test_raises_if_username_in_blacklist():
- requirements = UsernameRequirements(min=1, max=100, blacklist=set(['no']))
- validator = UsernameValidator(requirements)
- registration = UserRegistrationInfo(
- username='no', password='no', email='no@no.no', group=4, language='no'
- )
- with pytest.raises(ValidationError) as excinfo:
- validator(registration)
- assert excinfo.value.attribute == 'username'
- assert 'forbidden username' in excinfo.value.reason
- # fred's back. :(
- def test_raises_if_user_already_registered(Fred):
- validator = UsernameUniquenessValidator(User)
- registration = UserRegistrationInfo(
- username='fred',
- email='fred@fred.fred',
- language='fred',
- group=4,
- password='fred'
- )
- with pytest.raises(ValidationError) as excinfo:
- validator(registration)
- assert excinfo.value.attribute == 'username'
- assert 'already registered' in excinfo.value.reason
- def test_raises_if_user_email_already_registered(Fred):
- validator = EmailUniquenessValidator(User)
- registration = UserRegistrationInfo(
- username='fred',
- email='fred@fred.fred',
- language='fred',
- group=4,
- password='fred'
- )
- with pytest.raises(ValidationError) as excinfo:
- validator(registration)
- assert excinfo.value.attribute == 'email'
- assert 'already registered' in excinfo.value.reason
|