Merge pull request #2700 from alphagov/re-validate-user-email

Add email_access_valdiated_at field to user table, populate it
This commit is contained in:
Pea M. Tyczynska
2020-01-30 15:35:39 +00:00
committed by GitHub
10 changed files with 98 additions and 28 deletions

View File

@@ -227,7 +227,7 @@ def test_should_add_user_to_service(notify_db_session):
password='password',
mobile_number='+447700900986'
)
save_model_user(new_user)
save_model_user(new_user, validated_email_access=True)
dao_add_user_to_service(service, new_user)
assert new_user in Service.query.first().users
@@ -296,7 +296,7 @@ def test_should_remove_user_from_service(notify_db_session):
password='password',
mobile_number='+447700900986'
)
save_model_user(new_user)
save_model_user(new_user, validated_email_access=True)
dao_add_user_to_service(service, new_user)
assert new_user in Service.query.first().users
dao_remove_user_from_service(service, new_user)
@@ -397,7 +397,7 @@ def test_get_all_user_services_only_returns_services_user_has_access_to(notify_d
password='password',
mobile_number='+447700900986'
)
save_model_user(new_user)
save_model_user(new_user, validated_email_access=True)
dao_add_user_to_service(service_3, new_user)
assert len(dao_fetch_all_services_by_user(user.id)) == 3
assert dao_fetch_all_services_by_user(user.id)[0].name == 'service 1'
@@ -710,7 +710,7 @@ def test_add_existing_user_to_another_service_doesnot_change_old_permissions(not
password='password',
mobile_number='+447700900987'
)
save_model_user(other_user)
save_model_user(other_user, validated_email_access=True)
service_two = Service(name="service_two",
email_from="service_two",
message_limit=1000,

View File

@@ -29,6 +29,7 @@ from app.models import EMAIL_AUTH_TYPE, User, VerifyCode
from tests.app.db import create_permissions, create_service, create_template_folder, create_user
@freeze_time('2020-01-28T12:00:00')
@pytest.mark.parametrize('phone_number', [
'+447700900986',
'+1-800-555-5555',
@@ -42,12 +43,14 @@ def test_create_user(notify_db_session, phone_number):
'mobile_number': phone_number
}
user = User(**data)
save_model_user(user)
save_model_user(user, password='password', validated_email_access=True)
assert User.query.count() == 1
assert User.query.first().email_address == email
assert User.query.first().id == user.id
assert User.query.first().mobile_number == phone_number
assert not user.platform_admin
user_query = User.query.first()
assert user_query.email_address == email
assert user_query.id == user.id
assert user_query.mobile_number == phone_number
assert user_query.email_access_validated_at == datetime.utcnow()
assert not user_query.platform_admin
def test_get_all_users(notify_db_session):
@@ -148,11 +151,20 @@ def test_update_user_attribute(client, sample_user, user_attribute, user_value):
assert getattr(sample_user, user_attribute) == user_value
def test_update_user_password(notify_api, notify_db, notify_db_session, sample_user):
@freeze_time('2020-01-24T12:00:00')
@pytest.mark.parametrize('from_email', [True, False])
def test_update_user_password(notify_api, notify_db, notify_db_session, sample_user, from_email):
sample_user.password_changed_at = datetime.utcnow() - timedelta(days=1)
sample_user.email_access_validated_at = datetime.utcnow() - timedelta(days=1)
password = 'newpassword'
assert not sample_user.check_password(password)
update_user_password(sample_user, password)
update_user_password(sample_user, password, validated_email_access=from_email)
assert sample_user.check_password(password)
assert sample_user.password_changed_at == datetime.utcnow()
if from_email:
assert sample_user.email_access_validated_at == datetime.utcnow()
else:
assert sample_user.email_access_validated_at == datetime.utcnow() - timedelta(days=1)
def test_count_user_verify_codes(sample_user):

View File

@@ -82,7 +82,7 @@ def create_user(
user = User.query.filter_by(email_address=email).first()
if not user:
user = User(**data)
save_model_user(user)
save_model_user(user, validated_email_access=True)
return user

View File

@@ -1189,7 +1189,7 @@ def test_add_existing_user_to_another_service_with_all_permissions(
mobile_number='+4477123456'
)
# they must exist in db first
save_model_user(user_to_add)
save_model_user(user_to_add, validated_email_access=True)
data = {
"permissions": [
@@ -1253,7 +1253,7 @@ def test_add_existing_user_to_another_service_with_send_permissions(notify_api,
password='password',
mobile_number='+4477123456'
)
save_model_user(user_to_add)
save_model_user(user_to_add, validated_email_access=True)
data = {
"permissions": [
@@ -1301,7 +1301,7 @@ def test_add_existing_user_to_another_service_with_manage_permissions(notify_api
password='password',
mobile_number='+4477123456'
)
save_model_user(user_to_add)
save_model_user(user_to_add, validated_email_access=True)
data = {
"permissions": [
@@ -1348,7 +1348,7 @@ def test_add_existing_user_to_another_service_with_folder_permissions(notify_api
password='password',
mobile_number='+4477123456'
)
save_model_user(user_to_add)
save_model_user(user_to_add, validated_email_access=True)
folder_1 = create_template_folder(sample_service)
folder_2 = create_template_folder(sample_service)
@@ -1389,7 +1389,7 @@ def test_add_existing_user_to_another_service_with_manage_api_keys(notify_api,
password='password',
mobile_number='+4477123456'
)
save_model_user(user_to_add)
save_model_user(user_to_add, validated_email_access=True)
data = {"permissions": [{"permission": "manage_api_keys"}]}
@@ -1428,7 +1428,7 @@ def test_add_existing_user_to_non_existing_service_returns404(notify_api,
password='password',
mobile_number='+4477123456'
)
save_model_user(user_to_add)
save_model_user(user_to_add, validated_email_access=True)
incorrect_id = uuid.uuid4()

View File

@@ -40,6 +40,7 @@ def test_user_verify_sms_code(client, sample_sms_code):
assert resp.status_code == 204
assert VerifyCode.query.first().code_used
assert sample_sms_code.user.logged_in_at == datetime.utcnow()
assert sample_sms_code.user.email_access_validated_at != datetime.utcnow()
assert sample_sms_code.user.current_session_id is not None
@@ -417,6 +418,9 @@ def test_send_email_code_returns_404_for_bad_input_data(admin_request):
@freeze_time('2016-01-01T12:00:00')
def test_user_verify_email_code(admin_request, sample_user):
sample_user.logged_in_at = datetime.utcnow() - timedelta(days=1)
sample_user.email_access_validated_at = datetime.utcnow() - timedelta(days=1)
sample_user.auth_type = "email_auth"
magic_code = str(uuid.uuid4())
verify_code = create_user_code(sample_user, magic_code, EMAIL_TYPE)
@@ -434,6 +438,7 @@ def test_user_verify_email_code(admin_request, sample_user):
assert verify_code.code_used
assert sample_user.logged_in_at == datetime.utcnow()
assert sample_user.email_access_validated_at == datetime.utcnow()
assert sample_user.current_session_id is not None