Files
notifications-admin/tests/app/models/test_user.py
Chris Hill-Scott a1b846e159 Move user model test to model folder
This is consistent with where tests for other models are kept.
2019-06-05 11:13:41 +01:00

43 lines
1.4 KiB
Python

import pytest
from app.models.user import User
def test_user(app_):
user_data = {'id': 1,
'name': 'Test User',
'email_address': 'test@user.gov.uk',
'mobile_number': '+4412341234',
'state': 'pending',
'failed_login_count': 0
}
user = User(user_data)
assert user.id == 1
assert user.name == 'Test User'
assert user.email_address == 'test@user.gov.uk'
assert user.mobile_number == '+4412341234'
assert user.state == 'pending'
# user has ten failed logins before being locked
assert user.max_failed_login_count == app_.config['MAX_FAILED_LOGIN_COUNT'] == 10
assert user.failed_login_count == 0
assert user.locked is False
# set failed logins to threshold
user.failed_login_count = app_.config['MAX_FAILED_LOGIN_COUNT']
assert user.locked is True
with pytest.raises(TypeError):
user.has_permissions('to_do_bad_things')
def test_activate_user(app_, api_user_pending, mock_activate_user):
assert User(api_user_pending).activate() == User(api_user_pending)
mock_activate_user.assert_called_once_with(api_user_pending['id'])
def test_activate_user_already_active(app_, api_user_active, mock_activate_user):
assert User(api_user_active).activate() == User(api_user_active)
assert mock_activate_user.called is False