123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import pytest
- from flaskbb.auth.services import registration
- from flaskbb.core.auth.registration import UserRegistrationInfo
- from flaskbb.core.exceptions import StopValidation, ValidationError
- from flaskbb.core.user.repo import UserRepository
- pytestmark = pytest.mark.usefixtures('default_settings')
- class RaisingValidator(registration.UserValidator):
- def validate(self, user_info):
- raise ValidationError('test', 'just a little whoopsie-diddle')
- def test_doesnt_register_user_if_validator_fails_with_ValidationError(mocker):
- repo = mocker.Mock(UserRepository)
- service = registration.RegistrationService([RaisingValidator()], repo)
- with pytest.raises(StopValidation):
- service.register(
- UserRegistrationInfo(
- username='fred',
- password='lol',
- email='fred@fred.fred',
- language='fredspeak',
- group=4
- )
- )
- repo.add.assert_not_called()
- def test_gathers_up_all_errors_during_registration(mocker):
- repo = mocker.Mock(UserRepository)
- service = registration.RegistrationService([
- RaisingValidator(), RaisingValidator()
- ], repo)
- with pytest.raises(StopValidation) as excinfo:
- service.register(
- UserRegistrationInfo(
- username='fred',
- password='lol',
- email='fred@fred.fred',
- language='fredspeak',
- group=4
- )
- )
- repo.add.assert_not_called()
- assert len(excinfo.value.reasons) == 2
- assert all(('test', 'just a little whoopsie-diddle') == r
- for r in excinfo.value.reasons)
- def test_registers_user_if_no_errors_occurs(mocker):
- repo = mocker.Mock(UserRepository)
- service = registration.RegistrationService([], repo)
- user_info = UserRegistrationInfo(
- username='fred',
- password='lol',
- email='fred@fred.fred',
- language='fredspeak',
- group=4
- )
- service.register(user_info)
- repo.add.assert_called_with(user_info)
|