12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import pytest
- from flaskbb.auth.services import activation
- from flaskbb.core.exceptions import ValidationError
- from flaskbb.core.tokens import Token, TokenActions, TokenError
- from flaskbb.user.models import User
- pytestmark = pytest.mark.usefixtures('default_settings')
- class TestAccountActivationInitiateActivation(object):
- def test_raises_if_user_doesnt_exist(self, Fred, token_serializer):
- service = activation.AccountActivator(token_serializer, User)
- with pytest.raises(ValidationError) as excinfo:
- service.initiate_account_activation('does@not.exist')
- assert excinfo.value.reason == "Entered email doesn't exist"
- def test_raises_if_user_is_already_active(self, Fred, token_serializer):
- service = activation.AccountActivator(token_serializer, User)
- with pytest.raises(ValidationError) as excinfo:
- service.initiate_account_activation(Fred.email)
- assert excinfo.value.reason == "Account is already activated"
- def test_calls_send_activation_token_successfully_if_user_exists(
- self, mocker, unactivated_user, token_serializer
- ):
- service = activation.AccountActivator(token_serializer, User)
- mock = mocker.MagicMock()
- with mocker.patch(
- 'flaskbb.auth.services.activation.send_activation_token.delay',
- mock):
- service.initiate_account_activation(unactivated_user.email)
- token = token_serializer.dumps(
- Token(
- user_id=unactivated_user.id,
- operation=TokenActions.ACTIVATE_ACCOUNT
- )
- )
- mock.assert_called_once_with(
- token=token,
- username=unactivated_user.username,
- email=unactivated_user.email
- )
- class TestAccountActivationActivateAccount(object):
- def test_raises_if_token_operation_isnt_activate(self, token_serializer):
- service = activation.AccountActivator(token_serializer, User)
- token = token_serializer.dumps(
- Token(user_id=1, operation=TokenActions.RESET_PASSWORD)
- )
- with pytest.raises(TokenError):
- service.activate_account(token)
- def test_raises_if_user_is_already_active(self, Fred, token_serializer):
- service = activation.AccountActivator(token_serializer, User)
- token = token_serializer.dumps(
- Token(user_id=Fred.id, operation=TokenActions.ACTIVATE_ACCOUNT)
- )
- with pytest.raises(ValidationError) as excinfo:
- service.activate_account(token)
- assert excinfo.value.reason == 'Account is already activated'
- def test_activates_user_successfully(
- self, unactivated_user, token_serializer
- ):
- service = activation.AccountActivator(token_serializer, User)
- token = token_serializer.dumps(
- Token(
- user_id=unactivated_user.id,
- operation=TokenActions.ACTIVATE_ACCOUNT
- )
- )
- service.activate_account(token)
- assert unactivated_user.activated
|