mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-24 16:24:08 -04:00
Tests added for dao.
This commit is contained in:
@@ -5,7 +5,7 @@ from app.models import Roles
|
||||
from app.main.dao import roles_dao
|
||||
|
||||
|
||||
def test_insert_role_should_be_able_to_get_role(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
def test_insert_role_should_be_able_to_get_role(app_, db_, db_session):
|
||||
role = Roles(id=1000, role='some role for test')
|
||||
roles_dao.insert_role(role)
|
||||
|
||||
@@ -13,9 +13,9 @@ def test_insert_role_should_be_able_to_get_role(notifications_admin, notificatio
|
||||
assert saved_role == role
|
||||
|
||||
|
||||
def test_insert_role_will_throw_error_if_role_already_exists(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
def test_insert_role_will_throw_error_if_role_already_exists(app_,
|
||||
db_,
|
||||
db_session):
|
||||
role1 = roles_dao.get_role_by_id(1)
|
||||
assert role1.id == 1
|
||||
|
||||
|
||||
@@ -1,73 +1,63 @@
|
||||
import pytest
|
||||
import sqlalchemy
|
||||
|
||||
from app.main.dao import services_dao
|
||||
from tests.app.main import create_test_user
|
||||
|
||||
|
||||
def test_can_insert_and_retrieve_new_service(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
user = create_test_user('active')
|
||||
id = services_dao.insert_new_service('testing service', user)
|
||||
saved_service = services_dao.get_service_by_id(id)
|
||||
assert id == saved_service.id
|
||||
assert saved_service.users == [user]
|
||||
assert saved_service.name == 'testing service'
|
||||
def test_can_insert_new_service(db_,
|
||||
db_session,
|
||||
active_user,
|
||||
mock_create_service):
|
||||
service_name = 'testing service'
|
||||
id_ = services_dao.insert_new_service(service_name, active_user.id)
|
||||
mock_create_service.assert_called_once_with(
|
||||
service_name, False, 1000, True, active_user.id)
|
||||
|
||||
|
||||
def test_unrestrict_service_updates_the_service(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
user = create_test_user('active')
|
||||
id = services_dao.insert_new_service('unrestricted service', user)
|
||||
saved_service = services_dao.get_service_by_id(id)
|
||||
assert saved_service.restricted is True
|
||||
services_dao.unrestrict_service(id)
|
||||
unrestricted_service = services_dao.get_service_by_id(id)
|
||||
assert unrestricted_service.restricted is False
|
||||
def test_unrestrict_service_updates_the_service(db_,
|
||||
db_session,
|
||||
mock_get_service,
|
||||
mock_update_service,
|
||||
service_one):
|
||||
mock_get_service.return_value = {'data': service_one}
|
||||
services_dao.unrestrict_service(service_one['id'])
|
||||
mock_update_service.assert_called_once_with(service_one['id'],
|
||||
service_one['name'],
|
||||
service_one['active'],
|
||||
service_one['limit'],
|
||||
False,
|
||||
service_one['users'])
|
||||
|
||||
|
||||
def test_activate_service_update_service(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
user = create_test_user('active')
|
||||
id = services_dao.insert_new_service('activated service', user)
|
||||
service = services_dao.get_service_by_id(id)
|
||||
assert service.active is False
|
||||
services_dao.activate_service(id)
|
||||
activated_service = services_dao.get_service_by_id(id)
|
||||
assert activated_service.active is True
|
||||
def test_activate_service_update_service(db_,
|
||||
db_session,
|
||||
mock_get_service,
|
||||
mock_update_service,
|
||||
service_one):
|
||||
mock_get_service.return_value = {'data': service_one}
|
||||
services_dao.activate_service(service_one['id'])
|
||||
mock_update_service.assert_called_once_with(service_one['id'],
|
||||
service_one['name'],
|
||||
True,
|
||||
service_one['limit'],
|
||||
service_one['restricted'],
|
||||
service_one['users'])
|
||||
|
||||
|
||||
def test_get_service_returns_none_if_service_does_not_exist(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
def test_get_service_returns_none_if_service_does_not_exist(db_, db_session, mock_get_service):
|
||||
mock_get_service.return_value = None
|
||||
service = services_dao.get_service_by_id(1)
|
||||
assert service is None
|
||||
|
||||
|
||||
def test_find_by_service_name_returns_right_service(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
user = create_test_user('active')
|
||||
id = services_dao.insert_new_service('testing service', user)
|
||||
another = services_dao.insert_new_service('Testing the Service', user)
|
||||
found = services_dao.find_service_by_service_name('testing service')
|
||||
assert found.id == id
|
||||
assert found.name == 'testing service'
|
||||
found_another = services_dao.find_service_by_service_name('Testing the Service')
|
||||
assert found_another == services_dao.get_service_by_id(another)
|
||||
def test_find_by_service_name_returns_right_service(db_, db_session, mock_get_services):
|
||||
service_name = "service_one"
|
||||
service = services_dao.find_service_by_service_name(service_name)
|
||||
assert mock_get_services.called
|
||||
assert service['name'] == service_name
|
||||
|
||||
|
||||
def test_should_not_allow_two_services_of_the_same_name(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
user = create_test_user('active')
|
||||
services_dao.insert_new_service('duplicate service', user)
|
||||
with pytest.raises(sqlalchemy.exc.IntegrityError) as error:
|
||||
services_dao.insert_new_service('duplicate service', user)
|
||||
assert 'duplicate key value violates unique constraint "services_name_key' in error.value
|
||||
|
||||
|
||||
def test_should_return_list_of_service_names(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
user = create_test_user('active')
|
||||
services_dao.insert_new_service('first service', user)
|
||||
services_dao.insert_new_service('second service', user)
|
||||
services_dao.insert_new_service('third service', user)
|
||||
expected = ['first service', 'second service', 'third service']
|
||||
|
||||
def test_should_return_list_of_service_names(db_, db_session, mock_get_services):
|
||||
expected = ['service_one', 'service_two']
|
||||
actual = services_dao.find_all_service_names()
|
||||
assert mock_get_services.called
|
||||
assert actual == expected
|
||||
|
||||
@@ -6,12 +6,11 @@ from app.models import User
|
||||
from app.main.dao import users_dao
|
||||
|
||||
|
||||
def test_insert_user_should_add_user(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
def test_insert_user_should_add_user(db_, db_session):
|
||||
user = User(name='test insert',
|
||||
password='somepassword',
|
||||
email_address='test@insert.gov.uk',
|
||||
mobile_number='+441234123412',
|
||||
created_at=datetime.now(),
|
||||
role_id=1)
|
||||
|
||||
users_dao.insert_user(user)
|
||||
@@ -19,26 +18,22 @@ def test_insert_user_should_add_user(notifications_admin, notifications_admin_db
|
||||
assert saved_user == user
|
||||
|
||||
|
||||
def test_insert_user_with_role_that_does_not_exist_fails(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
def test_insert_user_with_role_that_does_not_exist_fails(db_, db_session):
|
||||
user = User(name='role does not exist',
|
||||
password='somepassword',
|
||||
email_address='test@insert.gov.uk',
|
||||
mobile_number='+441234123412',
|
||||
created_at=datetime.now(),
|
||||
role_id=100)
|
||||
with pytest.raises(sqlalchemy.exc.IntegrityError) as error:
|
||||
users_dao.insert_user(user)
|
||||
assert 'insert or update on table "users" violates foreign key constraint "users_role_id_fkey"' in str(error.value)
|
||||
|
||||
|
||||
def test_get_user_by_email(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
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',
|
||||
created_at=datetime.now(),
|
||||
role_id=1)
|
||||
|
||||
users_dao.insert_user(user)
|
||||
@@ -46,24 +41,21 @@ def test_get_user_by_email(notifications_admin, notifications_admin_db, notify_d
|
||||
assert retrieved == user
|
||||
|
||||
|
||||
def test_get_all_users_returns_all_users(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
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',
|
||||
created_at=datetime.now(),
|
||||
role_id=1)
|
||||
user2 = User(name='test two',
|
||||
password='some2ndpassword',
|
||||
email_address='test2@get_all.gov.uk',
|
||||
mobile_number='+441234123412',
|
||||
created_at=datetime.now(),
|
||||
role_id=1)
|
||||
user3 = User(name='test three',
|
||||
password='some2ndpassword',
|
||||
email_address='test3@get_all.gov.uk',
|
||||
mobile_number='+441234123412',
|
||||
created_at=datetime.now(),
|
||||
role_id=1)
|
||||
|
||||
users_dao.insert_user(user1)
|
||||
@@ -74,14 +66,11 @@ def test_get_all_users_returns_all_users(notifications_admin, notifications_admi
|
||||
assert users == [user1, user2, user3]
|
||||
|
||||
|
||||
def test_increment_failed_lockout_count_should_increade_count_by_1(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
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',
|
||||
created_at=datetime.now(),
|
||||
role_id=1)
|
||||
users_dao.insert_user(user)
|
||||
|
||||
@@ -91,13 +80,11 @@ def test_increment_failed_lockout_count_should_increade_count_by_1(notifications
|
||||
assert users_dao.get_user_by_id(user.id).failed_login_count == 1
|
||||
|
||||
|
||||
def test_user_is_locked_if_failed_login_count_is_10_or_greater(notifications_admin,
|
||||
notifications_admin_db, notify_db_session):
|
||||
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',
|
||||
created_at=datetime.now(),
|
||||
role_id=1)
|
||||
users_dao.insert_user(user)
|
||||
saved_user = users_dao.get_user_by_id(user.id)
|
||||
@@ -111,12 +98,11 @@ def test_user_is_locked_if_failed_login_count_is_10_or_greater(notifications_adm
|
||||
assert saved_user.is_locked() is True
|
||||
|
||||
|
||||
def test_user_is_active_is_false_if_state_is_inactive(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
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',
|
||||
created_at=datetime.now(),
|
||||
role_id=1,
|
||||
state='inactive')
|
||||
users_dao.insert_user(user)
|
||||
@@ -125,12 +111,11 @@ def test_user_is_active_is_false_if_state_is_inactive(notifications_admin, notif
|
||||
assert saved_user.is_active() is False
|
||||
|
||||
|
||||
def test_should_update_user_to_active(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
def test_should_update_user_to_active(db_, db_session):
|
||||
user = User(name='Make user active',
|
||||
password='somepassword',
|
||||
email_address='activate@user.gov.uk',
|
||||
mobile_number='+441234123412',
|
||||
created_at=datetime.now(),
|
||||
role_id=1,
|
||||
state='pending')
|
||||
users_dao.insert_user(user)
|
||||
@@ -139,18 +124,17 @@ def test_should_update_user_to_active(notifications_admin, notifications_admin_d
|
||||
assert updated_user.state == 'active'
|
||||
|
||||
|
||||
def test_should_throws_error_when_id_does_not_exist(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
def test_should_throws_error_when_id_does_not_exist(db_, db_session):
|
||||
with pytest.raises(AttributeError) as error:
|
||||
users_dao.activate_user(123)
|
||||
assert '''object has no attribute 'state''''' in str(error.value)
|
||||
|
||||
|
||||
def test_should_update_email_address(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
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',
|
||||
created_at=datetime.now(),
|
||||
role_id=1,
|
||||
state='inactive')
|
||||
users_dao.insert_user(user)
|
||||
@@ -162,12 +146,11 @@ def test_should_update_email_address(notifications_admin, notifications_admin_db
|
||||
assert updated.email_address == 'new_email@testit.gov.uk'
|
||||
|
||||
|
||||
def test_should_update_password(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
def test_should_update_password(db_, db_session):
|
||||
user = User(name='Update Email',
|
||||
password='somepassword',
|
||||
email_address='test@it.gov.uk',
|
||||
mobile_number='+441234123412',
|
||||
created_at=datetime.now(),
|
||||
role_id=1,
|
||||
state='active')
|
||||
start = datetime.now()
|
||||
@@ -183,19 +166,17 @@ def test_should_update_password(notifications_admin, notifications_admin_db, not
|
||||
assert updated.password_changed_at > start
|
||||
|
||||
|
||||
def test_should_return_list_of_all_email_addresses(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
def test_should_return_list_of_all_email_addresses(db_, db_session):
|
||||
first = User(name='First Person',
|
||||
password='somepassword',
|
||||
email_address='first@it.gov.uk',
|
||||
mobile_number='+441234123412',
|
||||
created_at=datetime.now(),
|
||||
role_id=1,
|
||||
state='active')
|
||||
second = User(name='Second Person',
|
||||
password='somepassword',
|
||||
email_address='second@it.gov.uk',
|
||||
mobile_number='+441234123412',
|
||||
created_at=datetime.now(),
|
||||
role_id=1,
|
||||
state='active')
|
||||
users_dao.insert_user(first)
|
||||
@@ -206,12 +187,11 @@ def test_should_return_list_of_all_email_addresses(notifications_admin, notifica
|
||||
assert expected == [x.email_address for x in email_addresses]
|
||||
|
||||
|
||||
def test_should_update_state_to_request_password_reset(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
def test_should_update_state_to_request_password_reset(db_, db_session):
|
||||
user = User(name='Requesting Password Resest',
|
||||
password='somepassword',
|
||||
email_address='request@new_password.gov.uk',
|
||||
mobile_number='+441234123412',
|
||||
created_at=datetime.now(),
|
||||
role_id=1,
|
||||
state='active')
|
||||
users_dao.insert_user(user)
|
||||
|
||||
@@ -6,7 +6,7 @@ from app.main.encryption import check_hash
|
||||
from tests.app.main import create_test_user, create_another_test_user
|
||||
|
||||
|
||||
def test_insert_new_code_and_get_it_back(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
def test_insert_new_code_and_get_it_back(app_, db_, db_session):
|
||||
user = create_test_user('pending')
|
||||
|
||||
verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='email')
|
||||
@@ -19,9 +19,9 @@ def test_insert_new_code_and_get_it_back(notifications_admin, notifications_admi
|
||||
assert saved_code.code_used is False
|
||||
|
||||
|
||||
def test_insert_new_code_should_thrw_exception_when_type_does_not_exist(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
def test_insert_new_code_should_thrw_exception_when_type_does_not_exist(app_,
|
||||
db_,
|
||||
db_session):
|
||||
user = create_test_user('pending')
|
||||
try:
|
||||
verify_codes_dao.add_code(user_id=user.id, code='23545', code_type='not_real')
|
||||
@@ -30,9 +30,9 @@ def test_insert_new_code_should_thrw_exception_when_type_does_not_exist(notifica
|
||||
assert 'invalid input value for enum verify_code_types: "not_real"' in e.orig.pgerror
|
||||
|
||||
|
||||
def test_should_throw_exception_when_user_does_not_exist(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
def test_should_throw_exception_when_user_does_not_exist(app_,
|
||||
db_,
|
||||
db_session):
|
||||
try:
|
||||
verify_codes_dao.add_code(user_id=1, code='12345', code_type='email')
|
||||
fail('Should throw exception')
|
||||
@@ -41,9 +41,9 @@ def test_should_throw_exception_when_user_does_not_exist(notifications_admin,
|
||||
'foreign key constraint "verify_codes_user_id_fkey"' in e.orig.pgerror
|
||||
|
||||
|
||||
def test_should_return_none_if_code_is_used(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
def test_should_return_none_if_code_is_used(app_,
|
||||
db_,
|
||||
db_session):
|
||||
user = create_test_user('pending')
|
||||
|
||||
verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='email')
|
||||
@@ -52,9 +52,9 @@ def test_should_return_none_if_code_is_used(notifications_admin,
|
||||
assert saved_code.code_used is True
|
||||
|
||||
|
||||
def test_should_return_none_if_code_is_used(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
def test_should_return_none_if_code_is_used(app_,
|
||||
db_,
|
||||
db_session):
|
||||
user = create_test_user('pending')
|
||||
|
||||
verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='sms')
|
||||
@@ -64,9 +64,9 @@ def test_should_return_none_if_code_is_used(notifications_admin,
|
||||
assert used_code == []
|
||||
|
||||
|
||||
def test_should_return_all_unused_code_when_there_are_many(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
def test_should_return_all_unused_code_when_there_are_many(app_,
|
||||
db_,
|
||||
db_session):
|
||||
user = create_test_user('pending')
|
||||
another_user = create_another_test_user('active')
|
||||
verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='sms')
|
||||
|
||||
Reference in New Issue
Block a user