mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-07 12:48:24 -04:00
Re introduced some tests. Moved update email from db to api.
This commit is contained in:
@@ -51,8 +51,7 @@ def activate_user(user):
|
|||||||
def update_email_address(id, email_address):
|
def update_email_address(id, email_address):
|
||||||
user = get_user_by_id(id)
|
user = get_user_by_id(id)
|
||||||
user.email_address = email_address
|
user.email_address = email_address
|
||||||
db.session.add(user)
|
return user_api_client.update_user(user)
|
||||||
db.session.commit()
|
|
||||||
|
|
||||||
|
|
||||||
def update_mobile_number(id, mobile_number):
|
def update_mobile_number(id, mobile_number):
|
||||||
|
|||||||
@@ -31,91 +31,26 @@ def test_insert_user_with_role_that_does_not_exist_fails(db_, db_session):
|
|||||||
assert 'insert or update on table "users" violates foreign key constraint "users_role_id_fkey"' in str(error.value)
|
assert 'insert or update on table "users" violates foreign key constraint "users_role_id_fkey"' in str(error.value)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(True, reason='Database tests to move to api and ineraction tests done here')
|
def test_get_user_by_email_calls_api(db_, db_session, mock_active_user, mock_get_user_from_api):
|
||||||
def test_get_user_by_email(db_, db_session):
|
users_dao.get_user_by_email(mock_active_user.email_address)
|
||||||
user = User(name='test_get_by_email',
|
mock_get_user_from_api.assert_called_once_with(mock_active_user.email_address)
|
||||||
password='somepassword',
|
|
||||||
email_address='email@example.gov.uk',
|
|
||||||
mobile_number='+441234153412',
|
|
||||||
role_id=1)
|
|
||||||
|
|
||||||
users_dao.insert_user(user)
|
|
||||||
retrieved = users_dao.get_user_by_email(user.email_address)
|
|
||||||
assert retrieved == user
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(True, reason='Database tests to move to api and ineraction tests done here')
|
def test_get_all_users_calls_api(db_, db_session, mock_get_all_users_from_api):
|
||||||
def test_get_all_users_returns_all_users(db_, db_session):
|
users_dao.get_all_users()
|
||||||
user1 = User(name='test one',
|
assert mock_get_all_users_from_api.called
|
||||||
password='somepassword',
|
|
||||||
email_address='test1@get_all.gov.uk',
|
|
||||||
mobile_number='+441234123412',
|
|
||||||
role_id=1)
|
|
||||||
user2 = User(name='test two',
|
|
||||||
password='some2ndpassword',
|
|
||||||
email_address='test2@get_all.gov.uk',
|
|
||||||
mobile_number='+441234123412',
|
|
||||||
role_id=1)
|
|
||||||
user3 = User(name='test three',
|
|
||||||
password='some2ndpassword',
|
|
||||||
email_address='test3@get_all.gov.uk',
|
|
||||||
mobile_number='+441234123412',
|
|
||||||
role_id=1)
|
|
||||||
|
|
||||||
users_dao.insert_user(user1)
|
|
||||||
users_dao.insert_user(user2)
|
|
||||||
users_dao.insert_user(user3)
|
|
||||||
users = users_dao.get_all_users()
|
|
||||||
assert len(users) == 3
|
|
||||||
assert users == [user1, user2, user3]
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(True, reason='Database tests to move to api and ineraction tests done here')
|
def test_increment_failed_login_count_should_increade_count_by_1(db_, db_session, mock_active_user, mock_get_user):
|
||||||
def test_increment_failed_lockout_count_should_increade_count_by_1(db_, db_session):
|
assert mock_active_user.failed_login_count == 0
|
||||||
user = User(name='cannot remember password',
|
users_dao.increment_failed_login_count(mock_active_user.id)
|
||||||
password='somepassword',
|
assert mock_active_user.failed_login_count == 1
|
||||||
email_address='test1@get_all.gov.uk',
|
|
||||||
mobile_number='+441234123412',
|
|
||||||
role_id=1)
|
|
||||||
users_dao.insert_user(user)
|
|
||||||
|
|
||||||
savedUser = users_dao.get_user_by_id(user.id)
|
|
||||||
assert savedUser.failed_login_count == 0
|
|
||||||
users_dao.increment_failed_login_count(user.id)
|
|
||||||
assert users_dao.get_user_by_id(user.id).failed_login_count == 1
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(True, reason='Database tests to move to api and ineraction tests done here')
|
def test_user_is_active_is_false_if_state_is_inactive(db_, db_session, mock_active_user):
|
||||||
def test_user_is_locked_if_failed_login_count_is_10_or_greater(db_, db_session):
|
assert mock_active_user.is_active() is True
|
||||||
user = User(name='cannot remember password',
|
mock_active_user.state = 'inactive'
|
||||||
password='somepassword',
|
assert mock_active_user.is_active() is False
|
||||||
email_address='test1@get_all.gov.uk',
|
|
||||||
mobile_number='+441234123412',
|
|
||||||
role_id=1)
|
|
||||||
users_dao.insert_user(user)
|
|
||||||
saved_user = users_dao.get_user_by_id(user.id)
|
|
||||||
assert saved_user.is_locked() is False
|
|
||||||
|
|
||||||
for _ in range(10):
|
|
||||||
users_dao.increment_failed_login_count(user.id)
|
|
||||||
|
|
||||||
saved_user = users_dao.get_user_by_id(user.id)
|
|
||||||
assert saved_user.failed_login_count == 10
|
|
||||||
assert saved_user.is_locked() is True
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(True, reason='Database tests to move to api and ineraction tests done here')
|
|
||||||
def test_user_is_active_is_false_if_state_is_inactive(db_, db_session):
|
|
||||||
user = User(name='inactive user',
|
|
||||||
password='somepassword',
|
|
||||||
email_address='test1@get_all.gov.uk',
|
|
||||||
mobile_number='+441234123412',
|
|
||||||
role_id=1,
|
|
||||||
state='inactive')
|
|
||||||
users_dao.insert_user(user)
|
|
||||||
|
|
||||||
saved_user = users_dao.get_user_by_id(user.id)
|
|
||||||
assert saved_user.is_active() is False
|
|
||||||
|
|
||||||
|
|
||||||
def test_should_update_user_to_active(mock_activate_user):
|
def test_should_update_user_to_active(mock_activate_user):
|
||||||
@@ -138,21 +73,12 @@ def test_should_throws_error_when_id_does_not_exist(db_, db_session):
|
|||||||
assert '''object has no attribute 'state''''' in str(error.value)
|
assert '''object has no attribute 'state''''' in str(error.value)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(True, reason='Database tests to move to api and ineraction tests done here')
|
def test_should_update_email_address(db_, db_session, mock_active_user, mock_get_user, mock_update_user_email_api):
|
||||||
def test_should_update_email_address(db_, db_session):
|
assert mock_active_user.email_address == 'test@user.gov.uk'
|
||||||
user = User(name='Update Email',
|
users_dao.update_email_address(mock_active_user.id, 'new_email@testit.gov.uk')
|
||||||
password='somepassword',
|
|
||||||
email_address='test@it.gov.uk',
|
|
||||||
mobile_number='+441234123412',
|
|
||||||
role_id=1,
|
|
||||||
state='inactive')
|
|
||||||
users_dao.insert_user(user)
|
|
||||||
|
|
||||||
saved = users_dao.get_user_by_id(user.id)
|
assert mock_active_user.email_address == 'new_email@testit.gov.uk'
|
||||||
assert saved.email_address == 'test@it.gov.uk'
|
mock_update_user_email_api.assert_called_once_with(mock_active_user)
|
||||||
users_dao.update_email_address(user.id, 'new_email@testit.gov.uk')
|
|
||||||
updated = users_dao.get_user_by_id(user.id)
|
|
||||||
assert updated.email_address == 'new_email@testit.gov.uk'
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(True, reason='Database tests to move to api and ineraction tests done here')
|
@pytest.mark.skipif(True, reason='Database tests to move to api and ineraction tests done here')
|
||||||
|
|||||||
@@ -223,7 +223,6 @@ def mock_api_user(mocker):
|
|||||||
|
|
||||||
@pytest.fixture(scope='function')
|
@pytest.fixture(scope='function')
|
||||||
def mock_register_user(mocker, mock_api_user):
|
def mock_register_user(mocker, mock_api_user):
|
||||||
|
|
||||||
def _register(name, email_address, mobile_number, password):
|
def _register(name, email_address, mobile_number, password):
|
||||||
mock_api_user.name = name
|
mock_api_user.name = name
|
||||||
mock_api_user.email_address = email_address
|
mock_api_user.email_address = email_address
|
||||||
@@ -242,7 +241,6 @@ def mock_active_user(mocker, mock_api_user):
|
|||||||
|
|
||||||
@pytest.fixture(scope='function')
|
@pytest.fixture(scope='function')
|
||||||
def mock_activate_user(mocker):
|
def mock_activate_user(mocker):
|
||||||
|
|
||||||
def _activate(user):
|
def _activate(user):
|
||||||
user.state = 'active'
|
user.state = 'active'
|
||||||
return user
|
return user
|
||||||
@@ -252,7 +250,6 @@ def mock_activate_user(mocker):
|
|||||||
|
|
||||||
@pytest.fixture(scope='function')
|
@pytest.fixture(scope='function')
|
||||||
def mock_get_user(mocker, mock_active_user):
|
def mock_get_user(mocker, mock_active_user):
|
||||||
|
|
||||||
def _get_user(id):
|
def _get_user(id):
|
||||||
return mock_active_user
|
return mock_active_user
|
||||||
|
|
||||||
@@ -261,7 +258,6 @@ def mock_get_user(mocker, mock_active_user):
|
|||||||
|
|
||||||
@pytest.fixture(scope='function')
|
@pytest.fixture(scope='function')
|
||||||
def mock_get_by_email(mocker, mock_api_user, mock_active_user, mock_get_user):
|
def mock_get_by_email(mocker, mock_api_user, mock_active_user, mock_get_user):
|
||||||
|
|
||||||
def _get_user(email_address):
|
def _get_user(email_address):
|
||||||
if email_address == 'notfound@example.gov.uk':
|
if email_address == 'notfound@example.gov.uk':
|
||||||
return None
|
return None
|
||||||
@@ -281,7 +277,6 @@ def mock_get_by_email(mocker, mock_api_user, mock_active_user, mock_get_user):
|
|||||||
|
|
||||||
@pytest.fixture(scope='function')
|
@pytest.fixture(scope='function')
|
||||||
def mock_user_checkpassword(mocker, mock_active_user):
|
def mock_user_checkpassword(mocker, mock_active_user):
|
||||||
|
|
||||||
def _check(mock_active_user, password):
|
def _check(mock_active_user, password):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -290,7 +285,6 @@ def mock_user_checkpassword(mocker, mock_active_user):
|
|||||||
|
|
||||||
@pytest.fixture(scope='function')
|
@pytest.fixture(scope='function')
|
||||||
def mock_update_email(mocker, mock_active_user):
|
def mock_update_email(mocker, mock_active_user):
|
||||||
|
|
||||||
def _update(id, email_address):
|
def _update(id, email_address):
|
||||||
mock_active_user.email_address = email_address
|
mock_active_user.email_address = email_address
|
||||||
|
|
||||||
@@ -315,6 +309,25 @@ def mock_password_reset(mocker, mock_active_user):
|
|||||||
return mocker.patch('app.main.dao.users_dao.request_password_reset', side_effect=_reset)
|
return mocker.patch('app.main.dao.users_dao.request_password_reset', side_effect=_reset)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='function')
|
||||||
|
def mock_get_user_from_api(mocker, mock_active_user):
|
||||||
|
def _get_user(email_address):
|
||||||
|
return mock_active_user
|
||||||
|
return mocker.patch('app.main.dao.users_dao.user_api_client.get_user_by_email', side_effect=_get_user)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='function')
|
||||||
|
def mock_get_all_users_from_api(mocker):
|
||||||
|
return mocker.patch('app.main.dao.users_dao.user_api_client.get_users')
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='function')
|
||||||
|
def mock_update_user_email_api(mocker):
|
||||||
|
def _update(user):
|
||||||
|
return user
|
||||||
|
return mocker.patch('app.main.dao.users_dao.user_api_client.update_user', side_effect=_update)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='function')
|
@pytest.fixture(scope='function')
|
||||||
def mock_create_api_key(mocker):
|
def mock_create_api_key(mocker):
|
||||||
def _create(service_id, key_name):
|
def _create(service_id, key_name):
|
||||||
|
|||||||
Reference in New Issue
Block a user