From efe902444226c499c8c93e8c70b2e5e3f079c09a Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 28 Jan 2025 12:11:37 -0800 Subject: [PATCH] add tests --- .ds.baseline | 4 ++-- app/notifications/validators.py | 13 ++++++++++++- tests/app/service/test_rest.py | 24 +++++++++++++++++++++++- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/.ds.baseline b/.ds.baseline index 18fb40388..1a39bc074 100644 --- a/.ds.baseline +++ b/.ds.baseline @@ -305,7 +305,7 @@ "filename": "tests/app/service/test_rest.py", "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", "is_verified": false, - "line_number": 1285, + "line_number": 1286, "is_secret": false } ], @@ -384,5 +384,5 @@ } ] }, - "generated_at": "2025-01-23T21:46:22Z" + "generated_at": "2025-01-28T20:11:33Z" } diff --git a/app/notifications/validators.py b/app/notifications/validators.py index 9ec572e8b..38d8263c7 100644 --- a/app/notifications/validators.py +++ b/app/notifications/validators.py @@ -1,3 +1,6 @@ +from datetime import datetime +from zoneinfo import ZoneInfo + from flask import current_app from sqlalchemy.orm.exc import NoResultFound @@ -31,9 +34,17 @@ def check_service_over_total_message_limit(key_type, service): # TODO # For now we are using calendar year # Switch to using service agreement dates when the Agreement model is ready + # If the service stat has never been set before, compute the remaining seconds for 2025 + # and set it (all services) to expire on 12/31/2025. if service_stats is None: + now_et = datetime.now(ZoneInfo("America/New_York")) + target_time = datetime( + 2025, 12, 31, 23, 59, 59, tzinfo=ZoneInfo("America/New_York") + ) + time_difference = target_time - now_et + seconds_difference = int(time_difference.total_seconds()) service_stats = 0 - redis_store.set(cache_key, service_stats, ex=365 * 24 * 60 * 60) + redis_store.set(cache_key, service_stats, ex=seconds_difference) return service_stats # TODO CHANGE THIS BACK TO SERVICE TOTAL MESSAGE LIMIT if int(service_stats) >= 5: diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index 6dd488ab9..a88f8e21e 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -1,7 +1,7 @@ import json import uuid from datetime import date, datetime, timedelta -from unittest.mock import ANY +from unittest.mock import ANY, MagicMock import pytest from flask import current_app, url_for @@ -38,6 +38,7 @@ from app.models import ( ServiceSmsSender, User, ) +from app.service.rest import check_request_args from app.utils import utc_now from tests import create_admin_authorization_header from tests.app.db import ( @@ -3712,3 +3713,24 @@ def test_get_service_notification_statistics_by_day( assert mock_get_service_statistics_for_specific_days.assert_called_once assert response == mock_data + + +def test_valid_request(): + request = MagicMock() + request.args = { + "service_id": "123", + "name": "Test Name", + "email_from": "test@example.com", + } + result = check_request_args(request) + assert result == ("123", "Test Name", "test@example.com") + + +def test_missing_service_id(): + request = MagicMock() + request.args = {"name": "Test Name", "email_from": "test@example.com"} + try: + check_request_args(request) + except Exception as e: + assert e.status_code == 400 + assert {"service_id": ["Can't be empty"] in e.errors}