"""Integration test for notifications.""" import pytest @pytest.mark.parametrize('sqs_message_fixture_name, expected_files, expected_message', ( pytest.param('sqs_object_two_users', 2, ( 'qa-reports@theorchard.com', 'Hey you', 'Obi One', 'Wheeler Walker Jr.' ), id='sqs_object_two_users'), pytest.param('sqs_object_one_user', 1, ( 'qa-reports@theorchard.com', 'Hey you', 'Obi One', 'Wheeler Walker Jr.' ), id='sqs_object_one_user'), pytest.param('sqs_object_sub_account_user', 1, ( 'qa-reports@theorchard.com', 'Hey you', 'Obi One', 'Wheeler Walker Jr.' ), id='sqs_object_sub_account_user'), pytest.param('sqs_object_no_ows_users', 1, ( 'qa-reports@theorchard.com', 'notification@test.theorchard.io', ), id='sqs_object_no_ows_users'), pytest.param('sqs_object_one_user_de', 1, ( 'qa-reports@theorchard.com', 'LETZTE WOCHE' ), id='sqs_object_one_user_de'), pytest.param('sqs_object_one_user_es', 1, ( 'qa-reports@theorchard.com', 'Comportamiento semanal de' ), id='sqs_object_one_user_es'), pytest.param('sqs_object_one_user_invalid', 0, (), id='sqs_object_one_user_invalid'), pytest.param('sqs_object_no_user', 0, (), id='sqs_object_no_user'), pytest.param('sqs_object_deleted_user', 0, (), id='sqs_object_deleted_user'), pytest.param('sqs_object_no_deezer', 1, ( 'deezer', '-' ), id='sqs_object_no_deezer'), pytest.param('sqs_object_0_deezer', 1, ( 'deezer', '0%' ), id='sqs_object_0_deezer'), pytest.param('sqs_object_spike_user', 1, ( 'From: The Orchard Notifications ', 'Subject: =?UTF-8?Q?[qa]_Spike_Detection:_3_Tracks_on_June_30_=F0=9F=93=88?=' ), id='sqs_object_spike_user'), pytest.param('sqs_object_spike_multiple_users', 2, ( 'From: The Orchard Notifications ', 'Subject: =?UTF-8?Q?[qa]_Spike_Detection:_3_Tracks_on_June_30_=F0=9F=93=88?=' ), id='sqs_object_spike_multiple_users'), pytest.param('sqs_object_spike_sub_account_user', 1, ( 'From: The Orchard Notifications ', 'Subject: =?UTF-8?Q?[qa]_Spike_Detection:_3_Tracks_on_June_30_=F0=9F=93=88?=' ), id='sqs_object_spike_sub_account_user'), )) def test_notifications( sqs_message_fixture_name, expected_files, expected_message, sqs_client, s3_client, request ): """Test notifications flow.""" sqs_message = request.getfixturevalue(sqs_message_fixture_name) response = sqs_client.send_encoded_message(sqs_message) assert response['ResponseMetadata']['HTTPStatusCode'] == 200 listed_files = s3_client.wait_for_files(expected_files) assert len(listed_files) == expected_files for key in listed_files: message = s3_client.get_file(key) for piece in expected_message: assert piece in message