"""Lambda test module.""" from unittest.mock import patch import pytest import index # noqa @pytest.fixture def correct_lambda_event_object(): """Return correct lambda event object.""" return { 'Records': [ { 'Sns': { 'Message': '{}', 'Timestamp': 'timestamp' } } ] } @patch('util.sns_event_get_transcoding_job_status_details') @patch('index.post_job_status') def test_handler_success( post_status, get_status, correct_lambda_event_object): """Test index.handler function success.""" duration = 12345 get_status.return_value = ( 10, 'completed', 'description', 'bucket', 'filename', duration) post_status.return_value = True result = index.handler(correct_lambda_event_object, None) post_status.assert_called_with( 10, 'completed', status_description='description', output_bucket='bucket', output_key='filename', duration=duration ) assert result is True @patch('util.sns_event_get_transcoding_job_status_details') @patch('index.post_job_status') def test_handler_message_parsing_error( post_status, get_status, correct_lambda_event_object): """Test index.handler function event parse error.""" error_text = 'parse_error' get_status.side_effect = Exception(error_text) post_status.return_value = True with pytest.raises(Exception) as exc_info: index.handler(correct_lambda_event_object, None) assert exc_info.value.args[0] == error_text @patch('util.sns_event_get_transcoding_job_status_details') @patch('index.post_job_status') def test_handler_post_status_exception( post_status, get_status, correct_lambda_event_object): """Test index.handler function post status error.""" error_text = 'post_job_status_error' get_status.return_value = ( 10, 'completed', 'description', 'bucket', 'filename', 12345) post_status.side_effect = Exception(error_text) with pytest.raises(Exception) as exc_info: index.handler(correct_lambda_event_object, None) assert exc_info.value.args[0] == error_text