import json from unittest import TestCase, mock from slz_notification.entities import Message, Metadata from slz_notification.sqs_service import SQSNotificationService class SQSServiceTestCase(TestCase): def setUp(self): self.sqs_client = mock.Mock() self.logger = mock.Mock() self.metadata = Metadata( version='1.0.0', queues=[ 'arn-1', ], message=Message( uow_id='uow-id', unit_of_work_id=123, compressed_path='s3://sme-archive/sme/v1/report.txt.gz', decompressed_paths='s3://sme-decompressed/sme/v1/report.txt', content_name='content-name', context='US', optional_config={}, ) ) def test_push(self): client = SQSNotificationService(self.logger, self.sqs_client) result, err = client.push(self.metadata) self.assertTrue(result) self.sqs_client.send_message.assert_called_once_with( QueueUrl='arn-1', MessageBody=json.dumps( { 'UoWID': 'uow-id', 'unit_of_work_id': 123, 'Context': 'US', 'ContentName': 'content-name', 'CompressedPath': 's3://sme-archive/sme/v1/report.txt.gz', 'DecompressedPaths': 's3://sme-decompressed/sme/v1/report.txt', 'OptionalConfig': {}, } ), ) def test_push_multiple_queues(self): client = SQSNotificationService(self.logger, self.sqs_client) self.metadata.queues = ['arn-1', 'arn_2'] result, err = client.push(self.metadata) self.assertTrue(result) self.assertEqual(self.sqs_client.send_message.call_count, 2) def test_push_no_queues(self): client = SQSNotificationService(self.logger, self.sqs_client) self.metadata.queues = None result, err = client.push(self.metadata) self.assertFalse(result) self.sqs_client.send_message.assert_not_called()