diff --git a/app/clients/sms/aws_sns.py b/app/clients/sms/aws_sns.py index 8b5d6c963..86b212e8e 100644 --- a/app/clients/sms/aws_sns.py +++ b/app/clients/sms/aws_sns.py @@ -1,11 +1,14 @@ +import datetime import os import re from time import monotonic +from unittest.mock import MagicMock import botocore import phonenumbers from boto3 import client +from app.celery.tasks import __total_sending_limits_for_job_exceeded from app.clients import AWS_CLIENT_CONFIG from app.clients.sms import SmsClient from app.cloudfoundry_config import cloud_config @@ -95,3 +98,27 @@ class AwsSnsClient(SmsClient): if not matched: self.current_app.logger.error("No valid numbers found in {}".format(to)) raise ValueError("No valid numbers found for SMS delivery") + + def test_total_sending_limits_exceeded(mocker): + mock_service = MagicMock() + mock_service.total_message_limit = 1000 + mock_job = MagicMock() + mock_job.notification_count = 300 + job_id = "test_job_id" + + mock_check_service_limit = mocker.patch( + "app.clients.sms.aws_sns.check_service_over_total_message_limit" + ) + mock_check_service_limit.return_value = 800 + + mock_utc_now = mocker.patch("app.clients.sms.aws_sns.utc_now") + mock_utc_now.return_value = datetime(2024, 11, 10, 12, 0, 0) + + mock_dao_update_job = mocker.patch("app.clients.sms.aws_sns.dao_update_job") + + result = __total_sending_limits_for_job_exceeded(mock_service, mock_job, job_id) + assert result is True + + assert mock_job.job_status == "sensding limits exceeded" + assert mock_job.processing_finished == datetime(2024, 11, 10, 12, 0, 0) + mock_dao_update_job.assert_called_once_with(mock_job)