"""Test module.""" from unittest.mock import ANY from unittest.mock import patch from src.script import _produce_message from src.script import backfill_from_csv from src.script import get_statuses_for_correlation_ids @patch('src.script.kafka_producer') def test__produce_message(kafka_producer_mock): """Test _produce_message function.""" _produce_message('test-data', 'test-key', 'test-topic') kafka_producer_mock.produce.assert_called_with( 'test-topic', 'test-key', 'test-data', ANY) @patch('src.script.kafka_producer') def test_set_owner(kafka_producer_mock): """Test _produce_message function.""" _produce_message('"owner":"test_owner"', 'test-key', 'test-topic') kafka_producer_mock.produce.assert_called_with( 'test-topic', 'test-key', '"owner":"test_owner"', ANY) @patch('src.script.kafka_producer') def test_backfill_from_csv_knr(kafka_producer_mock): """Test backfill_from_csv function for KNR.""" backfill_from_csv('/app/tests/backfill.csv', 'event.knrAccountCreation') # 5 rows in the csv file assert len(kafka_producer_mock.produce.mock_calls) == 5 # check the payload of the last call kafka_producer_mock.produce.assert_called_with( 'event.knrAccountCreation', 'DCI_5', '{"correlation_id": "DCI_5", "first_name": "Boris0115", "last_name": "Uvarov0114", ' '"vendor_id": "8245", "email": "buvarov+Boris0105@theorchard.com", "is_admin": "FALSE", ' '"master_contact": "FALSE", "send_email": false, "currency": null, "vendor_name": null, ' '"service_tier_uuid": null, ' '"owner": null}', ANY ) @patch('src.script.kafka_producer') def test_backfill_from_csv_awal_plus(kafka_producer_mock): """Test backfill_from_csv function for AWAL Plus.""" backfill_from_csv('/app/tests/backfill.csv', 'event.awalPlusAccountCreation') # 5 rows in the csv file assert len(kafka_producer_mock.produce.mock_calls) == 5 # check the payload of the last call kafka_producer_mock.produce.assert_called_with( 'event.awalPlusAccountCreation', 'DCI_5', '{"correlation_id": "DCI_5", "first_name": "Boris0115", "last_name": "Uvarov0114", ' '"vendor_id": "8245", "email": "buvarov+Boris0105@theorchard.com", ' '"is_admin": "FALSE", "master_contact": "FALSE", "send_email": false, ' '"roles": [], "currency": null, "vendor_name": null, "service_tier_uuid": null}', ANY ) @patch('src.script.kafka_producer') def test_backfill_from_csv_awal_plus_with_roles(kafka_producer_mock): """Test backfill_from_csv function for AWAL Plus with roles.""" backfill_from_csv('/app/tests/backfill_withroles.csv', 'event.awalPlusAccountCreation') # 5 rows in the csv file assert len(kafka_producer_mock.produce.mock_calls) == 3 # check the payload of the last call kafka_producer_mock.produce.assert_called_with( 'event.awalPlusAccountCreation', 'DCI_8', '{"correlation_id": "DCI_8", "first_name": "Boris0118", "last_name": "Uvarov0118", ' '"vendor_id": "8243", "email": "buvarov+Boris0108@theorchard.com", ' '"is_admin": "FALSE", "master_contact": "FALSE", "send_email": false, ' '"roles": ["payee_management", "marketing"], "currency": null, "vendor_name": null, ' '"service_tier_uuid": null}', ANY ) @patch('boto3.resource') def test_get_statuses_for_correlation_ids(boto3_mock): """Test get_statuses_for_correlation_ids function.""" boto3_mock.return_value.Table.return_value.get_item.side_effect = [ { 'Item': {'correlation_id': 'DCI_1'} }, {}, {}, {}, {} ] result = get_statuses_for_correlation_ids('/app/tests/backfill.csv') assert result['Successful CI'] == ['DCI_1'] assert result['Failed CI'] == ['DCI_2', 'DCI_3', 'DCI_4', 'DCI_5']