mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-05 19:03:30 -05: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):
|
||||
user = get_user_by_id(id)
|
||||
user.email_address = email_address
|
||||
db.session.add(user)
|
||||
db.session.commit()
|
||||
return user_api_client.update_user(user)
|
||||
|
||||
|
||||
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)
|
||||
|
||||
|
||||
@pytest.mark.skipif(True, reason='Database tests to move to api and ineraction tests done here')
|
||||
def test_get_user_by_email(db_, db_session):
|
||||
user = User(name='test_get_by_email',
|
||||
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
|
||||
def test_get_user_by_email_calls_api(db_, db_session, mock_active_user, mock_get_user_from_api):
|
||||
users_dao.get_user_by_email(mock_active_user.email_address)
|
||||
mock_get_user_from_api.assert_called_once_with(mock_active_user.email_address)
|
||||
|
||||
|
||||
@pytest.mark.skipif(True, reason='Database tests to move to api and ineraction tests done here')
|
||||
def test_get_all_users_returns_all_users(db_, db_session):
|
||||
user1 = User(name='test one',
|
||||
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]
|
||||
def test_get_all_users_calls_api(db_, db_session, mock_get_all_users_from_api):
|
||||
users_dao.get_all_users()
|
||||
assert mock_get_all_users_from_api.called
|
||||
|
||||
|
||||
@pytest.mark.skipif(True, reason='Database tests to move to api and ineraction tests done here')
|
||||
def test_increment_failed_lockout_count_should_increade_count_by_1(db_, db_session):
|
||||
user = User(name='cannot remember password',
|
||||
password='somepassword',
|
||||
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
|
||||
def test_increment_failed_login_count_should_increade_count_by_1(db_, db_session, mock_active_user, mock_get_user):
|
||||
assert mock_active_user.failed_login_count == 0
|
||||
users_dao.increment_failed_login_count(mock_active_user.id)
|
||||
assert mock_active_user.failed_login_count == 1
|
||||
|
||||
|
||||
@pytest.mark.skipif(True, reason='Database tests to move to api and ineraction tests done here')
|
||||
def test_user_is_locked_if_failed_login_count_is_10_or_greater(db_, db_session):
|
||||
user = User(name='cannot remember password',
|
||||
password='somepassword',
|
||||
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_user_is_active_is_false_if_state_is_inactive(db_, db_session, mock_active_user):
|
||||
assert mock_active_user.is_active() is True
|
||||
mock_active_user.state = 'inactive'
|
||||
assert mock_active_user.is_active() is False
|
||||
|
||||
|
||||
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)
|
||||
|
||||
|
||||
@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):
|
||||
user = User(name='Update Email',
|
||||
password='somepassword',
|
||||
email_address='test@it.gov.uk',
|
||||
mobile_number='+441234123412',
|
||||
role_id=1,
|
||||
state='inactive')
|
||||
users_dao.insert_user(user)
|
||||
def test_should_update_email_address(db_, db_session, mock_active_user, mock_get_user, mock_update_user_email_api):
|
||||
assert mock_active_user.email_address == 'test@user.gov.uk'
|
||||
users_dao.update_email_address(mock_active_user.id, 'new_email@testit.gov.uk')
|
||||
|
||||
saved = users_dao.get_user_by_id(user.id)
|
||||
assert saved.email_address == 'test@it.gov.uk'
|
||||
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'
|
||||
assert mock_active_user.email_address == 'new_email@testit.gov.uk'
|
||||
mock_update_user_email_api.assert_called_once_with(mock_active_user)
|
||||
|
||||
|
||||
@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')
|
||||
def mock_register_user(mocker, mock_api_user):
|
||||
|
||||
def _register(name, email_address, mobile_number, password):
|
||||
mock_api_user.name = name
|
||||
mock_api_user.email_address = email_address
|
||||
@@ -242,7 +241,6 @@ def mock_active_user(mocker, mock_api_user):
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def mock_activate_user(mocker):
|
||||
|
||||
def _activate(user):
|
||||
user.state = 'active'
|
||||
return user
|
||||
@@ -252,7 +250,6 @@ def mock_activate_user(mocker):
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def mock_get_user(mocker, mock_active_user):
|
||||
|
||||
def _get_user(id):
|
||||
return mock_active_user
|
||||
|
||||
@@ -261,7 +258,6 @@ def mock_get_user(mocker, mock_active_user):
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def mock_get_by_email(mocker, mock_api_user, mock_active_user, mock_get_user):
|
||||
|
||||
def _get_user(email_address):
|
||||
if email_address == 'notfound@example.gov.uk':
|
||||
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')
|
||||
def mock_user_checkpassword(mocker, mock_active_user):
|
||||
|
||||
def _check(mock_active_user, password):
|
||||
return True
|
||||
|
||||
@@ -290,7 +285,6 @@ def mock_user_checkpassword(mocker, mock_active_user):
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def mock_update_email(mocker, mock_active_user):
|
||||
|
||||
def _update(id, 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)
|
||||
|
||||
|
||||
@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')
|
||||
def mock_create_api_key(mocker):
|
||||
def _create(service_id, key_name):
|
||||
|
||||
Reference in New Issue
Block a user