import pytest from marshmallow.exceptions import ValidationError from lemur.tests.factories import RoleFactory def test_get_object_attribute(): from lemur.schemas import get_object_attribute with pytest.raises(ValidationError): get_object_attribute({}) with pytest.raises(ValidationError): get_object_attribute([{}], many=True) with pytest.raises(ValidationError): get_object_attribute([{}, {'id': 1}], many=True) with pytest.raises(ValidationError): get_object_attribute([{}, {'name': 'test'}], many=True) assert get_object_attribute({'name': 'test'}) == 'name' assert get_object_attribute({'id': 1}) == 'id' assert get_object_attribute([{'name': 'test'}], many=True) == 'name' assert get_object_attribute([{'id': 1}], many=True) == 'id' def test_fetch_objects(session): from lemur.roles.models import Role from lemur.schemas import fetch_objects role = RoleFactory() role1 = RoleFactory() session.commit() data = {'id': role.id} found_role = fetch_objects(Role, data) assert found_role == role data = {'name': role.name} found_role = fetch_objects(Role, data) assert found_role == role data = [{'id': role.id}, {'id': role1.id}] found_roles = fetch_objects(Role, data, many=True) assert found_roles == [role, role1] data = [{'name': role.name}, {'name': role1.name}] found_roles = fetch_objects(Role, data, many=True) assert found_roles == [role, role1] with pytest.raises(ValidationError): data = [{'name': 'blah'}, {'name': role1.name}] fetch_objects(Role, data, many=True) with pytest.raises(ValidationError): data = {'name': 'nah'} fetch_objects(Role, data)