"""Test get_labels_for_artist_id endpoint.""" import json from unittest.mock import patch import pytest from owsresponse import response from permissions import ( config, handlers, # noqa (handlers are imported for test client) ) from permissions.constants import constants @pytest.mark.parametrize( ('resource_type', 'status', 'expected'), [ ('ArtistInfo', 200, {'name': 'Labelle Entertainment', 'id': 123456}), ('LabelParticipant', 200, {'name': 'Labelle Entertainment', 'id': 123456}), ( 'artistinfo', 400, { 'code': 'validation_error', 'message': { 'resource_type': [ f"Must be one of: {', '.join(constants.TYPES_ASSOCIATED_WITH_LABEL)}." ] }, }, ), ( 'labelparticipant', 400, { 'code': 'validation_error', 'message': { 'resource_type': [ f"Must be one of: {', '.join(constants.TYPES_ASSOCIATED_WITH_LABEL)}." ] }, }, ), ( 'vendor', 400, { 'code': 'validation_error', 'message': { 'resource_type': [ f"Must be one of: {', '.join(constants.TYPES_ASSOCIATED_WITH_LABEL)}." ] }, }, ), ( 'subaccount', 400, { 'code': 'validation_error', 'message': { 'resource_type': [ f"Must be one of: {', '.join(constants.TYPES_ASSOCIATED_WITH_LABEL)}." ] }, }, ), ( 'profile', 400, { 'code': 'validation_error', 'message': { 'resource_type': [ f"Must be one of: {', '.join(constants.TYPES_ASSOCIATED_WITH_LABEL)}." ] }, }, ), ( 'dummy', 400, { 'code': 'validation_error', 'message': { 'resource_type': [ f"Must be one of: {', '.join(constants.TYPES_ASSOCIATED_WITH_LABEL)}." ] }, }, ), ], ) @patch( 'permissions.handlers.handlers.resource.get_labels_for_artist_id', return_value=response.Response({'name': 'Labelle Entertainment', 'id': 123456}), ) def test_get_labels_for_artist_id(monkeypatch, fixture_client, resource_type, status, expected): """Test get_labels_for_artist_id resource_type validations.""" url = f'/associated-labels/{resource_type}/4329304' monkeypatch.setattr(config, 'NEO4J_SETUP_READY', True) result = fixture_client.get(url, json={}, headers={'Content-Type': 'application/json'}) assert result.status_code == status json_result = json.loads(result.data.decode('utf-8')) assert json_result == expected