mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-24 08:16:51 -04:00
Working tests, hopefully all code changes done.
This commit is contained in:
@@ -1,26 +0,0 @@
|
||||
import pytest
|
||||
import sqlalchemy
|
||||
|
||||
from app.models import Roles
|
||||
from app.main.dao import roles_dao
|
||||
|
||||
|
||||
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)
|
||||
|
||||
saved_role = roles_dao.get_role_by_id(role.id)
|
||||
assert saved_role == role
|
||||
|
||||
|
||||
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
|
||||
|
||||
role = Roles(id=1, role='cannot create a duplicate')
|
||||
|
||||
with pytest.raises(sqlalchemy.orm.exc.FlushError) as error:
|
||||
roles_dao.insert_role(role)
|
||||
assert 'conflicts with persistent instance' in str(error.value)
|
||||
@@ -3,20 +3,16 @@ import sqlalchemy
|
||||
from app.main.dao import services_dao
|
||||
|
||||
|
||||
def test_can_insert_new_service(db_,
|
||||
db_session,
|
||||
mock_api_user,
|
||||
def test_can_insert_new_service(api_user_active,
|
||||
mock_create_service,
|
||||
mock_user_dao_get_by_email):
|
||||
service_name = 'testing service'
|
||||
id_ = services_dao.insert_new_service(service_name, mock_api_user.id)
|
||||
id_ = services_dao.insert_new_service(service_name, api_user_active.id)
|
||||
mock_create_service.assert_called_once_with(
|
||||
service_name, False, 1000, True, mock_api_user.id)
|
||||
service_name, False, 1000, True, api_user_active.id)
|
||||
|
||||
|
||||
def test_unrestrict_service_updates_the_service(db_,
|
||||
db_session,
|
||||
mock_get_service,
|
||||
def test_unrestrict_service_updates_the_service(mock_get_service,
|
||||
mock_update_service,
|
||||
mock_user_dao_get_by_email):
|
||||
service_one = mock_get_service.side_effect(123)['data']
|
||||
@@ -29,9 +25,7 @@ def test_unrestrict_service_updates_the_service(db_,
|
||||
service_one['users'])
|
||||
|
||||
|
||||
def test_activate_service_update_service(db_,
|
||||
db_session,
|
||||
mock_api_user,
|
||||
def test_activate_service_update_service(api_user_active,
|
||||
mock_get_service,
|
||||
mock_update_service,
|
||||
mock_user_dao_get_by_email):
|
||||
@@ -45,20 +39,20 @@ def test_activate_service_update_service(db_,
|
||||
service_one['users'])
|
||||
|
||||
|
||||
def test_get_service_returns_none_if_service_does_not_exist(db_, db_session, mock_get_service):
|
||||
def test_get_service_returns_none_if_service_does_not_exist(mock_get_service):
|
||||
mock_get_service.side_effect = lambda x: None
|
||||
service = services_dao.get_service_by_id(1)
|
||||
assert service is None
|
||||
|
||||
|
||||
def test_find_by_service_name_returns_right_service(db_, db_session, mock_get_services):
|
||||
def test_find_by_service_name_returns_right_service(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_return_list_of_service_names(db_, db_session, mock_get_services):
|
||||
def test_should_return_list_of_service_names(mock_get_services):
|
||||
expected = ['service_one', 'service_two']
|
||||
actual = services_dao.find_all_service_names()
|
||||
assert mock_get_services.called
|
||||
|
||||
@@ -2,17 +2,18 @@ from datetime import datetime
|
||||
import pytest
|
||||
import sqlalchemy
|
||||
from app.main.encryption import check_hash
|
||||
from app.models import User
|
||||
from app.main.dao import users_dao
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Tests will be moved to api')
|
||||
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',
|
||||
role_id=1)
|
||||
def test_insert_user_should_add_user():
|
||||
# user = User(name='test insert',
|
||||
# password='somepassword',
|
||||
# email_address='test@insert.gov.uk',
|
||||
# mobile_number='+441234123412',
|
||||
# role_id=1)
|
||||
|
||||
user = None
|
||||
|
||||
users_dao.insert_user(user)
|
||||
saved_user = users_dao.get_user_by_id(user.id)
|
||||
@@ -20,24 +21,28 @@ def test_insert_user_should_add_user(db_, db_session):
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Tests will be moved to api')
|
||||
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',
|
||||
role_id=100)
|
||||
def test_insert_user_with_role_that_does_not_exist_fails():
|
||||
# user = User(name='role does not exist',
|
||||
# password='somepassword',
|
||||
# email_address='test@insert.gov.uk',
|
||||
# mobile_number='+441234123412',
|
||||
# role_id=100)
|
||||
|
||||
user = None
|
||||
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)
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Not implemented yet on api client')
|
||||
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)
|
||||
def test_get_user_by_email():
|
||||
# user = User(name='test_get_by_email',
|
||||
# password='somepassword',
|
||||
# email_address='email@example.gov.uk',
|
||||
# mobile_number='+441234153412',
|
||||
# role_id=1)
|
||||
|
||||
user = None
|
||||
|
||||
users_dao.insert_user(user)
|
||||
retrieved = users_dao.get_user_by_email(user.email_address)
|
||||
@@ -45,22 +50,26 @@ def test_get_user_by_email(db_, db_session):
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Not implemented yet on api client')
|
||||
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)
|
||||
def test_get_all_users_returns_all_users():
|
||||
# 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)
|
||||
|
||||
user1 = None
|
||||
user2 = None
|
||||
user3 = None
|
||||
|
||||
users_dao.insert_user(user1)
|
||||
users_dao.insert_user(user2)
|
||||
@@ -71,12 +80,13 @@ def test_get_all_users_returns_all_users(db_, db_session):
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Not implemented yet on api client')
|
||||
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)
|
||||
def test_increment_failed_lockout_count_should_increade_count_by_1():
|
||||
# user = User(name='cannot remember password',
|
||||
# password='somepassword',
|
||||
# email_address='test1@get_all.gov.uk',
|
||||
# mobile_number='+441234123412',
|
||||
# role_id=1)
|
||||
user = None
|
||||
users_dao.insert_user(user)
|
||||
|
||||
savedUser = users_dao.get_user_by_id(user.id)
|
||||
@@ -86,12 +96,13 @@ def test_increment_failed_lockout_count_should_increade_count_by_1(db_, db_sessi
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Not implemented yet on api client')
|
||||
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)
|
||||
def test_user_is_locked_if_failed_login_count_is_10_or_greater():
|
||||
# user = User(name='cannot remember password',
|
||||
# password='somepassword',
|
||||
# email_address='test1@get_all.gov.uk',
|
||||
# mobile_number='+441234123412',
|
||||
# role_id=1)
|
||||
user = None
|
||||
users_dao.insert_user(user)
|
||||
saved_user = users_dao.get_user_by_id(user.id)
|
||||
assert saved_user.is_locked() is False
|
||||
@@ -105,13 +116,14 @@ def test_user_is_locked_if_failed_login_count_is_10_or_greater(db_, db_session):
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Not implemented yet on api client')
|
||||
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')
|
||||
def test_user_is_active_is_false_if_state_is_inactive():
|
||||
# user = User(name='inactive user',
|
||||
# password='somepassword',
|
||||
# email_address='test1@get_all.gov.uk',
|
||||
# mobile_number='+441234123412',
|
||||
# role_id=1,
|
||||
# state='inactive')
|
||||
user = None
|
||||
users_dao.insert_user(user)
|
||||
|
||||
saved_user = users_dao.get_user_by_id(user.id)
|
||||
@@ -132,20 +144,21 @@ def test_should_update_user_to_active(mock_activate_user):
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Not implemented yet on api client')
|
||||
def test_should_throws_error_when_id_does_not_exist(db_, db_session):
|
||||
def test_should_throws_error_when_id_does_not_exist():
|
||||
with pytest.raises(AttributeError) as error:
|
||||
users_dao.activate_user(123)
|
||||
assert '''object has no attribute 'state''''' in str(error.value)
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Not implemented yet on api client')
|
||||
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')
|
||||
def test_should_update_email_address():
|
||||
# user = User(name='Update Email',
|
||||
# password='somepassword',
|
||||
# email_address='test@it.gov.uk',
|
||||
# mobile_number='+441234123412',
|
||||
# role_id=1,
|
||||
# state='inactive')
|
||||
user = None
|
||||
users_dao.insert_user(user)
|
||||
|
||||
saved = users_dao.get_user_by_id(user.id)
|
||||
@@ -156,13 +169,14 @@ def test_should_update_email_address(db_, db_session):
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Not implemented yet on api client')
|
||||
def test_should_update_password(db_, db_session):
|
||||
user = User(name='Update Email',
|
||||
password='somepassword',
|
||||
email_address='test@it.gov.uk',
|
||||
mobile_number='+441234123412',
|
||||
role_id=1,
|
||||
state='active')
|
||||
def test_should_update_password():
|
||||
# user = User(name='Update Email',
|
||||
# password='somepassword',
|
||||
# email_address='test@it.gov.uk',
|
||||
# mobile_number='+441234123412',
|
||||
# role_id=1,
|
||||
# state='active')
|
||||
user = None
|
||||
start = datetime.now()
|
||||
users_dao.insert_user(user)
|
||||
|
||||
@@ -177,19 +191,21 @@ def test_should_update_password(db_, db_session):
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Not implemented yet on api client')
|
||||
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',
|
||||
role_id=1,
|
||||
state='active')
|
||||
second = User(name='Second Person',
|
||||
password='somepassword',
|
||||
email_address='second@it.gov.uk',
|
||||
mobile_number='+441234123412',
|
||||
role_id=1,
|
||||
state='active')
|
||||
def test_should_return_list_of_all_email_addresses():
|
||||
# first = User(name='First Person',
|
||||
# password='somepassword',
|
||||
# email_address='first@it.gov.uk',
|
||||
# mobile_number='+441234123412',
|
||||
# role_id=1,
|
||||
# state='active')
|
||||
first = None
|
||||
# second = User(name='Second Person',
|
||||
# password='somepassword',
|
||||
# email_address='second@it.gov.uk',
|
||||
# mobile_number='+441234123412',
|
||||
# role_id=1,
|
||||
# state='active')
|
||||
second = None
|
||||
users_dao.insert_user(first)
|
||||
users_dao.insert_user(second)
|
||||
|
||||
@@ -199,13 +215,14 @@ def test_should_return_list_of_all_email_addresses(db_, db_session):
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Not implemented yet on api client')
|
||||
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',
|
||||
role_id=1,
|
||||
state='active')
|
||||
def test_should_update_state_to_request_password_reset():
|
||||
# user = User(name='Requesting Password Resest',
|
||||
# password='somepassword',
|
||||
# email_address='request@new_password.gov.uk',
|
||||
# mobile_number='+441234123412',
|
||||
# role_id=1,
|
||||
# state='active')
|
||||
user = None
|
||||
users_dao.insert_user(user)
|
||||
users_dao.request_password_reset(user.email_address)
|
||||
saved = users_dao.get_user_by_email(user.email_address)
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
import sqlalchemy
|
||||
from pytest import fail
|
||||
|
||||
from app.main.dao import verify_codes_dao
|
||||
from app.main.encryption import check_hash
|
||||
|
||||
|
||||
def test_insert_new_code_and_get_it_back(app_, db_, db_session):
|
||||
|
||||
verify_codes_dao.add_code(user_id=1, code='12345', code_type='email')
|
||||
saved_codes = verify_codes_dao.get_codes(user_id=1, code_type='email')
|
||||
assert len(saved_codes) == 1
|
||||
saved_code = saved_codes[0]
|
||||
assert saved_code.user_id == 1
|
||||
assert check_hash('12345', saved_code.code)
|
||||
assert saved_code.code_type == 'email'
|
||||
assert saved_code.code_used is False
|
||||
|
||||
|
||||
def test_insert_new_code_should_thrw_exception_when_type_does_not_exist(app_,
|
||||
db_,
|
||||
db_session):
|
||||
try:
|
||||
verify_codes_dao.add_code(user_id=1, code='23545', code_type='not_real')
|
||||
fail('Should have thrown an exception')
|
||||
except sqlalchemy.exc.DataError as e:
|
||||
assert 'invalid input value for enum verify_code_types: "not_real"' in e.orig.pgerror
|
||||
|
||||
|
||||
def test_should_return_none_if_code_is_used(app_,
|
||||
db_,
|
||||
db_session):
|
||||
|
||||
code = verify_codes_dao.add_code(user_id=1, code='12345', code_type='email')
|
||||
verify_codes_dao.use_code(code.id)
|
||||
saved_code = verify_codes_dao.get_code_by_code(user_id=1, code_type='email', code='12345')
|
||||
assert not saved_code
|
||||
Reference in New Issue
Block a user