"""Lambda test module.""" import pytest from lambdacommon import lambda_exceptions from lambdacommon import util @pytest.fixture def lambda_event(): """Fixture for testing extract event util.""" return { 'bucket': 'dev-orcd-asset-transcoder-input', 'key': 'e8d982d1_28b7_4ae3_a893_8f561b5c8d86.wav', 'file_type': 'wav', 'config': { 'output_bucket_name': 'dev-orcd-podcast-output-assets', 'preview_bucket_name': 'dev-orcd-podcast-output-assets', 'elastic_transcoder_id': '1581101525157-xjcv85' } } @pytest.fixture def lambda_encoding_route_event(): """Fixture for testing extract event util.""" return { 'bucket': 'dev-orcd-asset-transcoder-input', 'key': 'e8d982d1_28b7_4ae3_a893_8f561b5c8d86.wav', 'config': { 'output_bucket_name': 'dev-orcd-podcast-output-assets', 'preview_bucket_name': 'dev-orcd-podcast-output-assets', 'elastic_transcoder_id': '1581101525157-xjcv85' } } def test_extract_triggered_key(): """Test extract_triggered_key function.""" test_bucket = 'test_bucket' test_key = 'test_key' event_mock = {'detail': { 'requestParameters': { 'bucketName': test_bucket, 'key': test_key } }} bucket, key = util.extract_triggered_key(event_mock) assert bucket == test_bucket assert key == test_key def test_extract_triggered_key_with_invalid_params(): """Test extract_triggered_key function.""" event_mock = {'detail': { 'requestParameters': { 'event_arg': None, } }} with pytest.raises(lambda_exceptions.CloudwatchEventError): util.extract_triggered_key(event_mock) def test_extract_lambda_event(lambda_event): """Test extract_lambda_event function.""" bucket, key, config, file_type = util.extract_event(lambda_event) assert bucket == 'dev-orcd-asset-transcoder-input' assert key == 'e8d982d1_28b7_4ae3_a893_8f561b5c8d86.wav' assert file_type == 'wav' assert config == { 'output_bucket_name': 'dev-orcd-podcast-output-assets', 'preview_bucket_name': 'dev-orcd-podcast-output-assets', 'elastic_transcoder_id': '1581101525157-xjcv85' } def test_extract_encoding_route_event(lambda_event): """Test extract_lambda_event function.""" bucket, key, config = util.extract_encoding_route_event(lambda_event) assert bucket == 'dev-orcd-asset-transcoder-input' assert key == 'e8d982d1_28b7_4ae3_a893_8f561b5c8d86.wav' assert config == { 'output_bucket_name': 'dev-orcd-podcast-output-assets', 'preview_bucket_name': 'dev-orcd-podcast-output-assets', 'elastic_transcoder_id': '1581101525157-xjcv85' } def test_extract_lambda_event_partial_error(lambda_encoding_route_event): """Test extract_lambda_event raises error for not partial.""" with pytest.raises(lambda_exceptions.LambdaEventError) as err: util.extract_event(lambda_encoding_route_event) assert err.value.error_code == 'lambda_event_error' assert err.value.errors == { 'lambda_event_error': 'Lambda event from previous step is invalid. {"file_type": ["Missing data for required field."]}'}