"""Tests for status module.""" from unittest.mock import patch import pytest import status @patch('status.sns') @pytest.mark.parametrize( 'send_failure_status_args', [ { 'function': 'function', 'status': 'success_status', 'key': 'filename.ext', 'error_code': None, 'error_description': None, 'bucket': None}, { 'function': 'function', 'status': 'error_status', 'key': 'filename.ext', 'error_code': 'code', 'error_description': None, 'bucket': None }, { 'function': 'function', 'status': 'error_status', 'key': 'filename.ext', 'error_code': 'code', 'error_description': ['Some error_description'], 'bucket': None }, { 'function': 'function', 'status': 'error_status', 'key': 'filename.ext', 'error_code': 'code', 'error_description': ['Some error_description'], 'bucket': 'bucket_name' } ] ) def test_send_failure_status( sns, send_failure_status_args): """Test sending failure status.""" # test function call status.send_failure_status( *send_failure_status_args.values()) # checking message = sns.send_notification.call_args[0][1] # check s3_object content for key, value in message['s3_object'].items(): assert value == send_failure_status_args[key] del message['s3_object'] # check root level content for key, value in message.items(): if key == 'error_description': send_failure_status_args[key] = ( '; '.join(send_failure_status_args[key])) assert value == send_failure_status_args[key]