From 6067fee3d44e6106217012ed9d7f029691e5d99f Mon Sep 17 00:00:00 2001 From: John Chilton Date: Fri, 3 Aug 2018 17:24:52 -0400 Subject: [PATCH] Remove unused dataset deserializer stuff. An unfinished thread left in the code base. It was a fine idea but I don't think anyone is left to pick it up and run with it. --- lib/galaxy/managers/datasets.py | 51 ---------- test/unit/managers/test_DatasetManager.py | 119 ---------------------- 2 files changed, 170 deletions(-) diff --git a/lib/galaxy/managers/datasets.py b/lib/galaxy/managers/datasets.py index c7cd192593f4..4b81260d8694 100644 --- a/lib/galaxy/managers/datasets.py +++ b/lib/galaxy/managers/datasets.py @@ -222,57 +222,6 @@ def serialize_permissions(self, dataset, key, user=None, **context): return permissions -class DatasetDeserializer(base.ModelDeserializer, deletable.PurgableDeserializerMixin): - model_manager_class = DatasetManager - - def __init__(self, app): - super(DatasetDeserializer, self).__init__(app) - # TODO: this manager may make more sense inside rbac_secured - self.role_manager = roles.RoleManager(app) - - def add_deserializers(self): - super(DatasetDeserializer, self).add_deserializers() - # not much to set here besides permissions and purged/deleted - deletable.PurgableDeserializerMixin.add_deserializers(self) - - self.deserializers.update({ - 'permissions' : self.deserialize_permissions, - }) - - def deserialize_permissions(self, dataset, key, permissions, user=None, **context): - """ - Create permissions for each list of encoded role ids in the (validated) - `permissions` dictionary, where `permissions` is in the form:: - - { 'manage': [ , ... ], 'access': [ , ... ] } - """ - self.manager.permissions.manage.error_unless_permitted(dataset, user) - self._validate_permissions(permissions, **context) - manage = self._list_of_roles_from_ids(permissions['manage']) - access = self._list_of_roles_from_ids(permissions['access']) - self.manager.permissions.set(dataset, manage, access, flush=False) - return permissions - - def _validate_permissions(self, permissions, **context): - self.validate.type('permissions', permissions, dict) - for permission_key in ('manage', 'access'): - if(not isinstance(permissions.get(permission_key, None), list)): - msg = 'permissions requires "{0}" as a list of role ids'.format(permission_key) - raise exceptions.RequestParameterInvalidException(msg) - - # TODO: push down into permissions? - manage_permissions = permissions['manage'] - if len(manage_permissions) < 1: - raise exceptions.RequestParameterInvalidException('At least one managing role is required') - - return permissions - - def _list_of_roles_from_ids(self, id_list): - # TODO: this may make more sense inside rbac_secured - # note: no checking of valid roles is made - return self.role_manager.by_ids([self.app.security.decode_id(id_) for id_ in id_list]) - - # ============================================================================= AKA DatasetInstanceManager class DatasetAssociationManager(base.ModelManager, secured.AccessibleManagerMixin, diff --git a/test/unit/managers/test_DatasetManager.py b/test/unit/managers/test_DatasetManager.py index d4e0571bc35f..aec1bd31a594 100644 --- a/test/unit/managers/test_DatasetManager.py +++ b/test/unit/managers/test_DatasetManager.py @@ -10,10 +10,8 @@ exceptions, model ) -from galaxy.managers import rbac_secured from galaxy.managers.base import SkipAttribute from galaxy.managers.datasets import ( - DatasetDeserializer, DatasetManager, DatasetSerializer ) @@ -317,123 +315,6 @@ def test_serializers(self): self.assertIsJsonifyable(serialized) -# ============================================================================= -class DatasetDeserializerTestCase(BaseTestCase): - - def set_up_managers(self): - super(DatasetDeserializerTestCase, self).set_up_managers() - self.dataset_manager = DatasetManager(self.app) - self.dataset_serializer = DatasetSerializer(self.app) - self.dataset_deserializer = DatasetDeserializer(self.app) - self.role_manager = RoleManager(self.app) - - def test_deserialize_delete(self): - dataset = self.dataset_manager.create() - - self.log('should raise when deserializing deleted from non-bool') - self.assertFalse(dataset.deleted) - self.assertRaises(exceptions.RequestParameterInvalidException, - self.dataset_deserializer.deserialize, dataset, data={'deleted': None}) - self.assertFalse(dataset.deleted) - self.log('should be able to deserialize deleted from True') - self.dataset_deserializer.deserialize(dataset, data={'deleted': True}) - self.assertTrue(dataset.deleted) - self.log('should be able to reverse by deserializing deleted from False') - self.dataset_deserializer.deserialize(dataset, data={'deleted': False}) - self.assertFalse(dataset.deleted) - - def test_deserialize_purge(self): - dataset = self.dataset_manager.create() - - self.log('should raise when deserializing purged from non-bool') - self.assertRaises(exceptions.RequestParameterInvalidException, - self.dataset_deserializer.deserialize, dataset, data={'purged': None}) - self.assertFalse(dataset.purged) - self.log('should be able to deserialize purged from True') - self.dataset_deserializer.deserialize(dataset, data={'purged': True}) - self.assertTrue(dataset.purged) - # TODO: should this raise an error? - self.log('should NOT be able to deserialize purged from False (will remain True)') - self.dataset_deserializer.deserialize(dataset, data={'purged': False}) - self.assertTrue(dataset.purged) - - def test_deserialize_permissions(self): - dataset = self.dataset_manager.create() - who_manages = self.user_manager.create(**user2_data) - self.dataset_manager.permissions.manage.grant(dataset, who_manages) - existing_permissions = self.dataset_serializer.serialize_permissions(dataset, 'permissions', user=who_manages) - existing_manage_permissions = existing_permissions['manage'] - - user3 = self.user_manager.create(**user3_data) - - self.log('deserializing permissions from a non-dictionary should error') - not_a_dict = [] - self.assertRaises(exceptions.RequestParameterInvalidException, self.dataset_deserializer.deserialize, - dataset, user=who_manages, data={'permissions': not_a_dict}) - - self.log('deserializing permissions from a malformed dictionary should error') - self.assertRaises(exceptions.RequestParameterInvalidException, self.dataset_deserializer.deserialize, - dataset, user=who_manages, data={'permissions': dict(nope=[], access=[])}) - - self.log('deserializing permissions with no manage roles should error') - self.assertRaises(exceptions.RequestParameterInvalidException, self.dataset_deserializer.deserialize, - dataset, user=who_manages, data={'permissions': dict(manage=[], access=[])}) - - self.log('deserializing permissions using a non-managing user should error') - self.assertRaises(rbac_secured.DatasetManagePermissionFailedException, self.dataset_deserializer.deserialize, - dataset, user=user3, data={'permissions': existing_permissions}) - - self.log('deserializing permissions using an anon user should error') - self.assertRaises(rbac_secured.DatasetManagePermissionFailedException, self.dataset_deserializer.deserialize, - dataset, user=None, data={'permissions': existing_permissions}) - - self.log('deserializing permissions with a single access should make the dataset private') - private_role = self.user_manager.private_role(who_manages) - private_role = private_role.to_dict(value_mapper={'id': self.app.security.encode_id}) - permissions = dict(manage=existing_manage_permissions, access=[private_role['id']]) - self.dataset_deserializer.deserialize(dataset, user=who_manages, data={ - 'permissions': permissions - }) - self.assertFalse(self.dataset_manager.is_accessible(dataset, user=user3)) - - self.log('deserializing permissions manage should make the permissions available') - self.assertRaises(SkipAttribute, self.dataset_serializer.serialize_permissions, - dataset, 'perms', user=user3) - # now, have who_manages give a manage permission to user3 - private_role = self.user_manager.private_role(user3) - new_manage_permissions = existing_manage_permissions + [self.app.security.encode_id(private_role.id)] - permissions = dict(manage=new_manage_permissions, access=[]) - self.dataset_deserializer.deserialize(dataset, user=who_manages, data={ - 'permissions': permissions - }) - - # deserializing for user3 shouldn't throw a skip bc they can manage - permissions = self.dataset_serializer.serialize_permissions(dataset, 'perms', user=who_manages) - self.assertEqual(new_manage_permissions, permissions['manage']) - - def test_deserialize_permissions_with_admin(self): - dataset = self.dataset_manager.create() - who_manages = self.user_manager.create(**user2_data) - self.dataset_manager.permissions.manage.grant(dataset, who_manages) - existing_permissions = self.dataset_serializer.serialize_permissions(dataset, 'permissions', user=who_manages) - existing_manage_permissions = existing_permissions['manage'] - - user3 = self.user_manager.create(**user3_data) - self.assertRaises(rbac_secured.DatasetManagePermissionFailedException, self.dataset_deserializer.deserialize, - dataset, user=user3, data={'permissions': existing_permissions}) - - self.log('deserializing permissions using an admin user should not error') - private_role = self.user_manager.private_role(who_manages) - private_role = private_role.to_dict(value_mapper={'id' : self.app.security.encode_id}) - permissions = dict(manage=existing_manage_permissions, access=[private_role['id']]) - self.dataset_deserializer.deserialize(dataset, user=who_manages, data={ - 'permissions': permissions - }) - - self.assertRaises(rbac_secured.DatasetManagePermissionFailedException, self.dataset_deserializer.deserialize, - dataset, user=user3, data={'permissions': existing_permissions}) - - # ============================================================================= # NOTE: that we test the DatasetAssociation* classes in either test_HDAManager or test_LDAManager # (as part of those subclasses):