"""Tests for processing module.""" import json from mock import MagicMock, Mock, patch import pytest from switchboard_consumer.constants import entity_type, message_type from switchboard_consumer.constants.system import ORCHARD, SONY from switchboard_consumer.logic import processing from switchboard_consumer.logic.processing import ReturnCode @pytest.mark.parametrize('message,return_value', [ ( { 'entityType': 'FAKE_ENTITY', 'messageType': message_type.METADATA_UPDATE, 'sendingSystem': SONY, }, processing.ReturnCode.UNKNOWN_MESSAGE_TYPE ), ( { 'entityType': entity_type.PROJECT, 'messageType': 'FAKE_MESSAGE_TYPE', 'sendingSystem': SONY, }, processing.ReturnCode.UNKNOWN_MESSAGE_TYPE ), ( { 'entityType': 'FAKE_ENTITY', 'messageType': 'FAKE_MESSAGE_TYPE', 'sendingSystem': SONY }, processing.ReturnCode.UNKNOWN_MESSAGE_TYPE ), ( { 'entityType': entity_type.PROJECT, 'messageType': message_type.METADATA_UPDATE, 'sendingSystem': ORCHARD }, processing.ReturnCode.INCORRECT_SENDING_SYSTEM ) ]) def test_invalid_messages(message, return_value): """Test invalid messages.""" swb_client = Mock() orchard_client = Mock() json_message = json.dumps(message) result_response = processing.process(json_message, swb_client, orchard_client) assert result_response is return_value @patch('switchboard_consumer.logic.processing.log_central') def test_bad_message_is_skipped(mock_loggly): """Test that a non-JSON message is ignored.""" swb_client = Mock() orchard_client = Mock() mock_logger = Mock() mock_logger.warning = MagicMock() mock_loggly.get_current_logger.return_value = mock_logger bad_message = 'not json' response = processing.process(bad_message, swb_client, orchard_client) assert response is processing.ReturnCode.BAD_MESSAGE_FORMAT mock_logger.warning.assert_called_once() @patch('switchboard_consumer.logic.processing.setup_datadog_tags') def test_datadog_setup_called(mock_datadog): """Test that Datadog setup is called.""" swb_client = Mock() orchard_client = Mock() message = { 'sendingSystem': SONY, 'entityType': 'FAKE_ENTITY', 'messageType': message_type.METADATA_UPDATE, } json_message = json.dumps(message) processing.process(json_message, swb_client, orchard_client) assert mock_datadog.call_count == 1 def test_return_code_is_false(): """Test ReturnCode evaluates to False.""" assert bool(ReturnCode.BAD_MESSAGE_FORMAT) is False