mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-04 18:31:13 -05:00
replace utcnow with timezone naive utc call
This commit is contained in:
14
app/utils.py
14
app/utils.py
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import datetime, timedelta, timezone
|
||||
|
||||
from flask import url_for
|
||||
from sqlalchemy import func
|
||||
@@ -132,3 +132,15 @@ def hilite(message):
|
||||
ansi_green = "\033[32m"
|
||||
ansi_reset = "\033[0m"
|
||||
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()
|
||||
|
||||
@@ -8,10 +8,11 @@ Create Date: 2020-12-04 15:06:22.544803
|
||||
|
||||
import sqlalchemy as sa
|
||||
from alembic import op
|
||||
from notifications_utils.template import BroadcastMessageTemplate
|
||||
from sqlalchemy.dialects import postgresql
|
||||
from sqlalchemy.orm.session import Session
|
||||
|
||||
from notifications_utils.template import BroadcastMessageTemplate
|
||||
|
||||
revision = "0336_broadcast_msg_content_2"
|
||||
down_revision = "0335_broadcast_msg_content"
|
||||
|
||||
|
||||
@@ -17,9 +17,7 @@ from notifications_utils.formatters import (
|
||||
strip_and_remove_obscure_whitespace,
|
||||
)
|
||||
from notifications_utils.insensitive_dict import InsensitiveDict
|
||||
from notifications_utils.international_billing_rates import (
|
||||
INTERNATIONAL_BILLING_RATES,
|
||||
)
|
||||
from notifications_utils.international_billing_rates import INTERNATIONAL_BILLING_RATES
|
||||
from notifications_utils.postal_address import (
|
||||
address_line_7_key,
|
||||
address_lines_1_to_6_and_postcode_keys,
|
||||
|
||||
@@ -43,10 +43,7 @@ from notifications_utils.markdown import (
|
||||
notify_letter_preview_markdown,
|
||||
notify_plain_text_email_markdown,
|
||||
)
|
||||
from notifications_utils.postal_address import (
|
||||
PostalAddress,
|
||||
address_lines_1_to_7_keys,
|
||||
)
|
||||
from notifications_utils.postal_address import PostalAddress, address_lines_1_to_7_keys
|
||||
from notifications_utils.sanitise_text import SanitiseSMS
|
||||
from notifications_utils.take import Take
|
||||
from notifications_utils.template_change import TemplateChange
|
||||
|
||||
@@ -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.enums import AuthType, CodeType
|
||||
from app.models import Notification, User, VerifyCode
|
||||
from app.utils import utc_now
|
||||
from tests import create_admin_authorization_header
|
||||
|
||||
|
||||
@freeze_time("2016-01-01T12:00:00")
|
||||
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 sample_sms_code.user.current_session_id is None
|
||||
data = json.dumps(
|
||||
@@ -31,8 +32,8 @@ 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.logged_in_at == utc_now()
|
||||
assert sample_sms_code.user.email_access_validated_at != utc_now()
|
||||
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")
|
||||
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
|
||||
data = json.dumps({"password": "password"})
|
||||
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(
|
||||
code_type=CodeType.SMS,
|
||||
_code=12345,
|
||||
created_at=datetime.utcnow() - timedelta(minutes=10),
|
||||
expiry_datetime=datetime.utcnow() + timedelta(minutes=40),
|
||||
created_at=utc_now() - timedelta(minutes=10),
|
||||
expiry_datetime=utc_now() + timedelta(minutes=40),
|
||||
user=sample_user,
|
||||
)
|
||||
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
|
||||
@pytest.mark.parametrize("auth_type", AuthType)
|
||||
def test_user_verify_email_code(admin_request, sample_user, auth_type):
|
||||
sample_user.logged_in_at = datetime.utcnow() - timedelta(days=1)
|
||||
sample_user.email_access_validated_at = datetime.utcnow() - timedelta(days=1)
|
||||
sample_user.logged_in_at = utc_now() - timedelta(days=1)
|
||||
sample_user.email_access_validated_at = utc_now() - timedelta(days=1)
|
||||
sample_user.auth_type = auth_type
|
||||
magic_code = str(uuid.uuid4())
|
||||
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 sample_user.logged_in_at == datetime.utcnow()
|
||||
assert sample_user.email_access_validated_at == datetime.utcnow()
|
||||
assert sample_user.logged_in_at == utc_now()
|
||||
assert sample_user.email_access_validated_at == utc_now()
|
||||
assert sample_user.current_session_id is not None
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user