replace utcnow with timezone naive utc call

This commit is contained in:
Kenneth Kehl
2024-05-23 10:18:02 -07:00
parent 34b3a88884
commit 752a13fbd2
5 changed files with 28 additions and 19 deletions

View File

@@ -1,4 +1,4 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta, timezone
from flask import url_for from flask import url_for
from sqlalchemy import func from sqlalchemy import func
@@ -132,3 +132,15 @@ def hilite(message):
ansi_green = "\033[32m" ansi_green = "\033[32m"
ansi_reset = "\033[0m" ansi_reset = "\033[0m"
return f"{ansi_green}{message}{ansi_reset}" return f"{ansi_green}{message}{ansi_reset}"
def aware_utcnow():
return datetime.now(timezone.utc)
def naive_utcnow():
return aware_utcnow().replace(tzinfo=None)
def utc_now():
return naive_utcnow()

View File

@@ -8,10 +8,11 @@ Create Date: 2020-12-04 15:06:22.544803
import sqlalchemy as sa import sqlalchemy as sa
from alembic import op from alembic import op
from notifications_utils.template import BroadcastMessageTemplate
from sqlalchemy.dialects import postgresql from sqlalchemy.dialects import postgresql
from sqlalchemy.orm.session import Session from sqlalchemy.orm.session import Session
from notifications_utils.template import BroadcastMessageTemplate
revision = "0336_broadcast_msg_content_2" revision = "0336_broadcast_msg_content_2"
down_revision = "0335_broadcast_msg_content" down_revision = "0335_broadcast_msg_content"

View File

@@ -17,9 +17,7 @@ from notifications_utils.formatters import (
strip_and_remove_obscure_whitespace, strip_and_remove_obscure_whitespace,
) )
from notifications_utils.insensitive_dict import InsensitiveDict from notifications_utils.insensitive_dict import InsensitiveDict
from notifications_utils.international_billing_rates import ( from notifications_utils.international_billing_rates import INTERNATIONAL_BILLING_RATES
INTERNATIONAL_BILLING_RATES,
)
from notifications_utils.postal_address import ( from notifications_utils.postal_address import (
address_line_7_key, address_line_7_key,
address_lines_1_to_6_and_postcode_keys, address_lines_1_to_6_and_postcode_keys,

View File

@@ -43,10 +43,7 @@ from notifications_utils.markdown import (
notify_letter_preview_markdown, notify_letter_preview_markdown,
notify_plain_text_email_markdown, notify_plain_text_email_markdown,
) )
from notifications_utils.postal_address import ( from notifications_utils.postal_address import PostalAddress, address_lines_1_to_7_keys
PostalAddress,
address_lines_1_to_7_keys,
)
from notifications_utils.sanitise_text import SanitiseSMS from notifications_utils.sanitise_text import SanitiseSMS
from notifications_utils.take import Take from notifications_utils.take import Take
from notifications_utils.template_change import TemplateChange from notifications_utils.template_change import TemplateChange

View File

@@ -12,12 +12,13 @@ from app.dao.services_dao import dao_fetch_service_by_id
from app.dao.users_dao import create_user_code from app.dao.users_dao import create_user_code
from app.enums import AuthType, CodeType from app.enums import AuthType, CodeType
from app.models import Notification, User, VerifyCode from app.models import Notification, User, VerifyCode
from app.utils import utc_now
from tests import create_admin_authorization_header from tests import create_admin_authorization_header
@freeze_time("2016-01-01T12:00:00") @freeze_time("2016-01-01T12:00:00")
def test_user_verify_sms_code(client, sample_sms_code): def test_user_verify_sms_code(client, sample_sms_code):
sample_sms_code.user.logged_in_at = datetime.utcnow() - timedelta(days=1) sample_sms_code.user.logged_in_at = utc_now() - timedelta(days=1)
assert not VerifyCode.query.first().code_used assert not VerifyCode.query.first().code_used
assert sample_sms_code.user.current_session_id is None assert sample_sms_code.user.current_session_id is None
data = json.dumps( data = json.dumps(
@@ -31,8 +32,8 @@ def test_user_verify_sms_code(client, sample_sms_code):
) )
assert resp.status_code == 204 assert resp.status_code == 204
assert VerifyCode.query.first().code_used assert VerifyCode.query.first().code_used
assert sample_sms_code.user.logged_in_at == datetime.utcnow() assert sample_sms_code.user.logged_in_at == utc_now()
assert sample_sms_code.user.email_access_validated_at != datetime.utcnow() assert sample_sms_code.user.email_access_validated_at != utc_now()
assert sample_sms_code.user.current_session_id is not None assert sample_sms_code.user.current_session_id is not None
@@ -122,7 +123,7 @@ def test_user_verify_code_expired_code_and_increments_failed_login_count(
@freeze_time("2016-01-01 10:00:00.000000") @freeze_time("2016-01-01 10:00:00.000000")
def test_user_verify_password(client, sample_user): def test_user_verify_password(client, sample_user):
yesterday = datetime.utcnow() - timedelta(days=1) yesterday = utc_now() - timedelta(days=1)
sample_user.logged_in_at = yesterday sample_user.logged_in_at = yesterday
data = json.dumps({"password": "password"}) data = json.dumps({"password": "password"})
auth_header = create_admin_authorization_header() auth_header = create_admin_authorization_header()
@@ -288,8 +289,8 @@ def test_send_sms_code_returns_204_when_too_many_codes_already_created(
verify_code = VerifyCode( verify_code = VerifyCode(
code_type=CodeType.SMS, code_type=CodeType.SMS,
_code=12345, _code=12345,
created_at=datetime.utcnow() - timedelta(minutes=10), created_at=utc_now() - timedelta(minutes=10),
expiry_datetime=datetime.utcnow() + timedelta(minutes=40), expiry_datetime=utc_now() + timedelta(minutes=40),
user=sample_user, user=sample_user,
) )
db.session.add(verify_code) db.session.add(verify_code)
@@ -537,8 +538,8 @@ def test_send_email_code_returns_404_for_bad_input_data(admin_request):
# we send iAuthType.SMS and AuthType.WEBAUTHN users email code to validate their email access # we send iAuthType.SMS and AuthType.WEBAUTHN users email code to validate their email access
@pytest.mark.parametrize("auth_type", AuthType) @pytest.mark.parametrize("auth_type", AuthType)
def test_user_verify_email_code(admin_request, sample_user, auth_type): def test_user_verify_email_code(admin_request, sample_user, auth_type):
sample_user.logged_in_at = datetime.utcnow() - timedelta(days=1) sample_user.logged_in_at = utc_now() - timedelta(days=1)
sample_user.email_access_validated_at = datetime.utcnow() - timedelta(days=1) sample_user.email_access_validated_at = utc_now() - timedelta(days=1)
sample_user.auth_type = auth_type sample_user.auth_type = auth_type
magic_code = str(uuid.uuid4()) magic_code = str(uuid.uuid4())
verify_code = create_user_code(sample_user, magic_code, CodeType.EMAIL) verify_code = create_user_code(sample_user, magic_code, CodeType.EMAIL)
@@ -553,8 +554,8 @@ def test_user_verify_email_code(admin_request, sample_user, auth_type):
) )
assert verify_code.code_used assert verify_code.code_used
assert sample_user.logged_in_at == datetime.utcnow() assert sample_user.logged_in_at == utc_now()
assert sample_user.email_access_validated_at == datetime.utcnow() assert sample_user.email_access_validated_at == utc_now()
assert sample_user.current_session_id is not None assert sample_user.current_session_id is not None