from unittest.mock import Mock import pytest from ytownership import config from ytownership.validation.ownership import validate_sqs_message @pytest.fixture def valid_sqs_message(): return { 'content_owner_id': 'theorchardmusic', 'isrc': 'GBJVC1500004', 'territories': ['list', 'of', 'carve in', 'territories'] } @pytest.fixture def valid_sqs_message_test_isrc(): return { 'content_owner_id': 'theorchardmusic', 'isrc': config.TEST_ISRCS[0], 'territories': ['list', 'of', 'carve in', 'territories'] } @pytest.fixture def invalid_sqs_message_territories(): return { 'content_owner_id': 'theorchardmusic', 'isrc': 'GBJVC1500004', 'territories': 'CA' } @pytest.fixture def invalid_sqs_message_no_field(): return { 'isrc': 'GBJVC1500004', 'territories': ['list', 'of', 'carve in', 'territories'] } @pytest.fixture def disable_restrict_api_config(monkeypatch): from ytownership import config monkeypatch.setattr(config, 'RESTRICT_API_ACCESS', False) def test_validate_sqs_message_true( valid_sqs_message, disable_restrict_api_config): message = Mock() message.get_body.return_value = valid_sqs_message assert validate_sqs_message(message) def test_validate_sqs_message_false_territories( invalid_sqs_message_territories, disable_restrict_api_config): message = Mock() message.get_body.return_value = invalid_sqs_message_territories assert not validate_sqs_message(message) def test_validate_sqs_message_no_field( invalid_sqs_message_no_field, disable_restrict_api_config): message = Mock() message.get_body.return_value = invalid_sqs_message_no_field assert not validate_sqs_message(message) def test_validate_sqs_message_restrict_api_access(valid_sqs_message): message = Mock() message.get_body.return_value = valid_sqs_message assert not validate_sqs_message(message) def test_validate_sqs_message_restrict_api_access_pass( valid_sqs_message_test_isrc): message = Mock() message.get_body.return_value = valid_sqs_message_test_isrc assert validate_sqs_message(message) def test_validate_sqs_message_missing_correlation_id( valid_sqs_message_test_isrc): message = Mock() message.get_body.return_value = valid_sqs_message_test_isrc message.correlation_id = None assert not validate_sqs_message(message) def test_validate_sqs_message_correct_correlation_id( valid_sqs_message_test_isrc): message = Mock() message.get_body.return_value = valid_sqs_message_test_isrc message.correlation_id = 'test-id' assert validate_sqs_message(message)