"""Lambda test module.""" import json import pytest import util def test_util(): """Test util.say_hello function.""" util.say_hello() assert True, 'Something terrible has happened.' @pytest.fixture def fixture_job_status_message(): """Fixture to return transcoding job status message.""" return { 'transcoding_job_id': 10, 'status': 'some_status', 'status_description': 'some_description', 'output_bucket': 'bucket', 'output_key': 'filename', 'duration': 10000 } @pytest.fixture def fixture_sns_transcoding_event_event(fixture_job_status_message): """Fixture to return SNS event object.""" return { 'Records': [ { 'EventVersion': '1.0', 'EventSubscriptionArn': 'eventsubscriptionarn', 'EventSource': 'aws:sns', 'Sns': { 'Type': 'Notification', 'MessageId': '22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324', 'TopicArn': 'arn:aws:sns:us-west-2:123456789012:MyTopic', 'Message': json.dumps(fixture_job_status_message), 'Timestamp': '2012-05-02T00:54:06.655Z', 'SignatureVersion': '1', 'Signature': 'EXAMPLESIGNATURE', 'SigningCertURL': 'https://url/file.pem', 'UnsubscribeURL': 'https://url/?Action=Unsubscribe' } } ] } def test_get_general_status_details_success( fixture_job_status_message, fixture_sns_transcoding_event_event): """Test for successful extraction of status details.""" result = util.sns_event_get_transcoding_job_status_details( fixture_sns_transcoding_event_event) job_id, status, description, output_bucket, output_key, duration = result assert job_id == fixture_job_status_message[ 'transcoding_job_id'] assert status == fixture_job_status_message['status'] assert description == fixture_job_status_message['status_description'] assert output_bucket == fixture_job_status_message['output_bucket'] assert output_key == fixture_job_status_message['output_key'] assert duration == fixture_job_status_message['duration'] def test_get_general_status_details_no_duration(fixture_job_status_message): """Test that duration defaults to null if it is not in the message.""" del(fixture_job_status_message['duration']) event_with_no_duration = fixture_sns_transcoding_event_event( fixture_job_status_message ) result = util.sns_event_get_transcoding_job_status_details( event_with_no_duration ) duration = result[5] assert duration is None def test_get_general_status_details_missing_message_failure( fixture_sns_transcoding_event_event): """Test for fail extraction of status details with missing message.""" data = fixture_sns_transcoding_event_event del data['Records'][0]['Sns']['Message'] with pytest.raises(Exception): util.sns_event_get_transcoding_job_status_details(data) def test_get_general_status_details_not_json_message_failure( fixture_sns_transcoding_event_event): """Test for fail extraction of status details with not json message.""" data = fixture_sns_transcoding_event_event data['Records'][0]['Sns']['Message'] = '123' with pytest.raises(Exception): util.sns_event_get_transcoding_job_status_details(data)