diff --git a/app/main/views/two_factor.py b/app/main/views/two_factor.py index 26bc0ff10..20816a81c 100644 --- a/app/main/views/two_factor.py +++ b/app/main/views/two_factor.py @@ -1,5 +1,4 @@ import json -from datetime import datetime from flask import ( current_app, @@ -17,7 +16,7 @@ from app import user_api_client from app.main import main from app.main.forms import TwoFactorForm from app.models.user import User -from app.utils import redirect_to_sign_in +from app.utils import is_less_than_90_days_ago, redirect_to_sign_in @main.route('/two-factor-email-sent', methods=['GET']) @@ -66,9 +65,7 @@ def two_factor(): form = TwoFactorForm(_check_code) if form.validate_on_submit(): - if (datetime.utcnow() - datetime.strptime( - user.email_access_validated_at, '%a, %d %b %Y %X %Z' - )).days < 90: + if is_less_than_90_days_ago(user.email_access_validated_at): return log_in_user(user_id) else: user_api_client.send_verify_code(user.id, 'email', None, request.args.get('next')) diff --git a/app/utils.py b/app/utils.py index 54de4903d..e178c2dbb 100644 --- a/app/utils.py +++ b/app/utils.py @@ -676,3 +676,9 @@ def format_thousands(value): if value is None: return '' return value + + +def is_less_than_90_days_ago(date_from_db): + return (datetime.utcnow() - datetime.strptime( + date_from_db, '%a, %d %b %Y %X %Z' + )).days < 90 diff --git a/tests/app/test_utils.py b/tests/app/test_utils.py index 4de340324..ce87009cc 100644 --- a/tests/app/test_utils.py +++ b/tests/app/test_utils.py @@ -18,6 +18,7 @@ from app.utils import ( get_letter_printing_statement, get_letter_validation_error, get_logo_cdn_domain, + is_less_than_90_days_ago, printing_today_or_tomorrow, ) from tests.conftest import fake_uuid @@ -506,3 +507,12 @@ def test_get_letter_validation_error_for_known_errors( if summary.select_one('a'): assert summary.select_one('a')['href'] == url_for('.letter_spec') assert summary.select_one('a')['target'] == '_blank' + + +@pytest.mark.parametrize("date_from_db, expected_result", [ + ('Sun, 17 Nov 2019 11:28:25 GMT', True), + ('Sun, 16 Nov 2019 11:28:25 GMT', False), +]) +@freeze_time('2020-02-14T12:00:00') +def test_is_less_than_90_days_ago(date_from_db, expected_result): + assert is_less_than_90_days_ago(date_from_db) == expected_result