"""Integration tests.""" import json def construct_event(bucket, key): """Construct event payload.""" return json.dumps({ 'bucket': f'{bucket}', 'key': f'{key}' }).encode() def upload_file(s3_client, test_workspace, ddex_xml): """Upload file.""" target_s3_key = f'{test_workspace.key}/{ddex_xml}' s3_client.upload_file( Filename=f'{test_workspace.data_directory}/{ddex_xml}', Bucket=test_workspace.bucket, Key=target_s3_key ) return target_s3_key def test_ddex_single(test_workspace, s3_client, lambda_client, lambda_name): """Test invoking the lambda with a ddex single.""" ddex_xml = 'ddex-single.xml' target_s3_key = upload_file(s3_client, test_workspace, ddex_xml) response = lambda_client.invoke( FunctionName=lambda_name, InvocationType='RequestResponse', Payload=construct_event( test_workspace.bucket, target_s3_key ) ) context = json.loads(response.get('Payload').read()) assert context['update_indicator'] == 'OriginalMessage' assert context['message_thread_id'] == 'G010001997343X_XXX' assert context['message_id'] == '236757' assert context['product']['product_name'] == 'Scandinavian Woods' assert context['product']['upc'] == '191773767129' assert context['product']['release_reference'] == 'R0' assert context['product']['release_type'] == 'Album' assert context['product']['display_artist_name'] == 'Scandi Girls' assert context['product']['catalog_number'] == 'G010001997343X' assert context['product']['grid'] == 'A10301A0001997343X' assert context['product']['original_release_date'] == '2015-01-06' assert len(context['tracks']) == 1 assert context['tracks'][0]['release_reference'] == 'R1' assert context['tracks'][0]['isrc'] == 'QM7281702754'