Re introduced some tests. Moved update email from db to api.

This commit is contained in:
Adam Shimali
2016-01-24 15:00:50 +00:00
parent 4674bd6b68
commit 3d14296ae0
3 changed files with 39 additions and 101 deletions

View File

@@ -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):

View File

@@ -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')

View File

@@ -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):