mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-08 20:53:11 -04:00
109898688: All codes are valid until one code is used, then they are all marked used.
Fixed the is_active() method on the Users model, if the user was pending they would come back as active, allowing a user to sign in before being active. There is still a problem with the validate_sms_code and validate_email_code method.
This commit is contained in:
@@ -6,7 +6,7 @@ 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()
|
||||
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
|
||||
@@ -15,7 +15,7 @@ def test_can_insert_and_retrieve_new_service(notifications_admin, notifications_
|
||||
|
||||
|
||||
def test_unrestrict_service_updates_the_service(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
user = create_test_user()
|
||||
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
|
||||
@@ -25,7 +25,7 @@ def test_unrestrict_service_updates_the_service(notifications_admin, notificatio
|
||||
|
||||
|
||||
def test_activate_service_update_service(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
user = create_test_user()
|
||||
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
|
||||
@@ -44,7 +44,7 @@ def test_get_service_returns_none_if_service_does_not_exist(notifications_admin,
|
||||
def test_find_by_service_name_returns_right_service(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
user = create_test_user()
|
||||
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')
|
||||
@@ -55,7 +55,7 @@ def test_find_by_service_name_returns_right_service(notifications_admin,
|
||||
|
||||
|
||||
def test_should_not_allow_two_services_of_the_same_name(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
user = create_test_user()
|
||||
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)
|
||||
|
||||
@@ -7,10 +7,12 @@ from tests.app.main import create_test_user
|
||||
|
||||
|
||||
def test_insert_new_code_and_get_it_back(notifications_admin, notifications_admin_db, notify_db_session):
|
||||
user = create_test_user()
|
||||
user = create_test_user('pending')
|
||||
|
||||
verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='email')
|
||||
saved_code = verify_codes_dao.get_code(user_id=user.id, code_type='email')
|
||||
saved_codes = verify_codes_dao.get_codes(user_id=user.id, code_type='email')
|
||||
assert len(saved_codes) == 1
|
||||
saved_code = saved_codes[0]
|
||||
assert saved_code.user_id == user.id
|
||||
assert check_hash('12345', saved_code.code)
|
||||
assert saved_code.code_type == 'email'
|
||||
@@ -20,7 +22,7 @@ def test_insert_new_code_and_get_it_back(notifications_admin, notifications_admi
|
||||
def test_insert_new_code_should_thrw_exception_when_type_does_not_exist(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
user = create_test_user()
|
||||
user = create_test_user('pending')
|
||||
try:
|
||||
verify_codes_dao.add_code(user_id=user.id, code='23545', code_type='not_real')
|
||||
fail('Should have thrown an exception')
|
||||
@@ -42,7 +44,7 @@ def test_should_throw_exception_when_user_does_not_exist(notifications_admin,
|
||||
def test_should_return_none_if_code_is_used(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
user = create_test_user()
|
||||
user = create_test_user('pending')
|
||||
|
||||
verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='email')
|
||||
verify_codes_dao.use_code(user_id=user.id, code='12345', code_type='email')
|
||||
@@ -53,10 +55,32 @@ def test_should_return_none_if_code_is_used(notifications_admin,
|
||||
def test_should_return_none_if_code_is_used(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
user = create_test_user()
|
||||
user = create_test_user('pending')
|
||||
|
||||
verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='sms')
|
||||
code = verify_codes_dao.get_code(user_id=user.id, code_type='sms')
|
||||
verify_codes_dao.use_code(code.id)
|
||||
code = verify_codes_dao.get_code(user_id=user.id, code_type='sms')
|
||||
assert code is None
|
||||
code = verify_codes_dao.get_codes(user_id=user.id, code_type='sms')
|
||||
verify_codes_dao.use_code(code[0].id)
|
||||
used_code = verify_codes_dao.get_codes(user_id=user.id, code_type='sms')
|
||||
assert used_code == []
|
||||
|
||||
|
||||
def test_should_return_all_unused_code_when_there_are_many(notifications_admin,
|
||||
notifications_admin_db,
|
||||
notify_db_session):
|
||||
user = create_test_user('pending')
|
||||
another_user = create_test_user('active')
|
||||
verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='sms')
|
||||
id = verify_codes_dao.add_code(user_id=user.id, code='09876', code_type='email')
|
||||
verify_codes_dao.use_code(id)
|
||||
verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='email')
|
||||
verify_codes_dao.add_code(user_id=user.id, code='23456', code_type='email')
|
||||
verify_codes_dao.add_code(user_id=another_user.id, code='12345', code_type='sms')
|
||||
verify_codes_dao.add_code(user_id=another_user.id, code='12345', code_type='email')
|
||||
|
||||
user_codes = verify_codes_dao.get_codes(user_id=user.id, code_type='email')
|
||||
assert len(user_codes) == 2
|
||||
s = sorted(user_codes, key=lambda r: r.expiry_datetime)
|
||||
assert check_hash('12345', s[0].code)
|
||||
assert check_hash('23456', s[1].code)
|
||||
assert [(code.code_used, code.code_type, code.user_id) for code in user_codes] == \
|
||||
[(False, 'email', user.id), (False, 'email', user.id)]
|
||||
|
||||
Reference in New Issue
Block a user