"""Test add_resource_to_profile.""" import pytest from marshmallow import ValidationError from permissions.constants import constants from permissions.validations.schemas.get_user_resources_for_admin import ( GetUserResourcesForAdminSchema, ) @pytest.mark.parametrize( 'schema', [ ( { 'identity_id': 'uuid', 'resource_type': 'LabelParticipant', } ), ( { 'identity_id': 'uuid', 'resource_type': 'Vendor', } ), ( { 'identity_id': 'uuid', 'resource_type': 'Subaccount', } ), # optional fields ( { 'identity_id': 'uuid', 'resource_type': 'LabelParticipant', 'limit': [10], 'offset': [2], } ), ], ) def test_load_success(schema): """Test load for GetUserResourcesForAdminSchema.""" actual = GetUserResourcesForAdminSchema().load(schema) assert actual == schema @pytest.mark.parametrize( ('schema', 'expected'), [ # missing required ( {}, { 'identity_id': ['Missing data for required field.'], 'resource_type': ['Missing data for required field.'], }, ), # type validation ( { 'identity_id': 'uuid', 'resource_type': 'Foo', }, { 'resource_type': [ f"Must be one of: {', '.join(constants.SETTINGS_SUPPORT_MAPPING['resourceTypes'])}." ] }, ), ( { 'identity_id': 12324, 'resource_type': 'Vendor', }, {'identity_id': ['Not a valid string.']}, ), ( { 'identity_id': 'uuid', 'resource_type': 'Vendor', 'limit': ['foo'], }, {'limit': {0: ['Not a valid integer.']}}, ), ], ) def test_load_errors(schema, expected): """Test load for GetUserResourcesForAdminSchema.""" try: GetUserResourcesForAdminSchema().load(schema) assert False except ValidationError as err: assert err.messages == expected