"""Lambda test module.""" import base64 import json from unittest.mock import patch from src import app as index def _to_msk_event(msg): return { 'records': { 'event': [{'value': base64.b64encode(json.dumps(msg).encode()).decode()}] } } def test_handler_update(kafka_mock, message_updated_full): """Test handler for an update.""" msk_event = _to_msk_event(message_updated_full) result = index.handler(msk_event, None) assert result.get('status') == 'OK' assert result.get('successful_subscription_crmids') == [ 'a0V0800000dG1zU', 'a0V0800000dG1zb' ] def test_handler_delete(kafka_mock, message_deleted): """Test handler for a delete.""" msk_event = _to_msk_event(message_deleted) result = index.handler(msk_event, None) assert result.get('status') == 'IGNORED' def test_handler_no_id(kafka_mock, message_no_fan_crmid): """Test handler for message without fan crmId is ignored.""" msk_event = _to_msk_event(message_no_fan_crmid) result = index.handler(msk_event, None) assert result.get('status') == 'IGNORED' def test_handler_no_subscription_id(kafka_mock, message_with_no_subscription_crmid): """Test handler for message without subscription crmId is ok.""" msk_event = _to_msk_event(message_with_no_subscription_crmid) result = index.handler(msk_event, None) assert result.get('status') == 'OK' assert result.get('successful_subscription_crmids') == [] def test_handler_some_missing_subscription_id(kafka_mock, message_some_missing_subscription_crmid): """Test handler for message without subscription.crmId for some items is ok.""" msk_event = _to_msk_event(message_some_missing_subscription_crmid) result = index.handler(msk_event, None) assert result.get('status') == 'OK' assert result.get('successful_subscription_crmids') == ['a0V0800000dG1zU'] @patch('src.app.logger') def test_handler_bad_data(mock_logger, message_updated_bad): """Test handler for bad message.""" msk_event = _to_msk_event(message_updated_bad) result = index.handler(msk_event, None) assert result.get('status') == 'OK' assert result.get('successful_subscription_crmids') == ['b0V0800000dG1bb'] assert mock_logger.error.call_count == 1 assert mock_logger.warning.call_count == 1 assert mock_logger.info.call_count == 1