def test_remove_permissions(self): with self.settings(DEFAULT_ANONYMOUS_VIEW_PERMISSION=True): dt = create_single_dataset("test_dataset") map = create_single_map("test_exec_map") self.assertFalse(self.rm.remove_permissions("invalid", instance=None)) self.assertTrue(self.rm.remove_permissions(map.uuid, instance=map)) self.assertTrue(self.rm.remove_permissions(dt.uuid, instance=dt))
def test_delete(self): doc = create_single_doc("test_delete_doc") dt = create_single_dataset("test_delete_dataset") map = create_single_map("test_delete_dataset") Service.objects.create( base_url="http://fake_test", owner=self.user) # Add dataset to a map MapLayer.objects.create(map=map, name=dt.alternate, stack_order=1).save() # Create the rating for dataset OverallRating.objects.create( category=2, object_id=dt.id, content_type=ContentType.objects.get(model='dataset'), rating=3) create_dataset_data(dt.resourcebase_ptr_id) res = self.rm.delete(doc.uuid, instance=doc) self.assertTrue(res) # Before dataset delete self.assertEqual(MapLayer.objects.filter(name='geonode:test_delete_dataset').count(), 1) self.assertEqual(OverallRating.objects.filter(object_id=dt.id).count(), 1) # try deleting with no default style, havest_job withalternate as resource_id, with uploads # TODO res = self.rm.delete(dt.uuid, instance=dt) self.assertTrue(res) # After dataset delete self.assertEqual(MapLayer.objects.filter(name='geonode:test_delete_dataset').count(), 0) self.assertEqual(OverallRating.objects.filter(object_id=dt.id).count(), 0)
def test_validate_resource(self): doc = create_single_doc("test_delete_doc") dt = create_single_dataset("test_delete_dataset") map = create_single_map("test_delete_dataset") with self.assertRaises(Exception): # append is for only datasets self.rm._validate_resource(doc, action_type="append") self.assertTrue(self.rm._validate_resource(doc, action_type="replace")) self.assertTrue(self.rm._validate_resource(dt, action_type="replace")) self.assertTrue(self.rm._validate_resource(map, action_type="replace")) with self.assertRaises(ObjectDoesNotExist): # TODO In function rais this only when object is not found self.rm._validate_resource(dt, action_type="invalid")
def test_exec(self): map = create_single_map("test_exec_map") self.assertIsNone(self.rm.exec("set_style", None, instance=None)) self.assertEqual(self.rm.exec("set_style", map.uuid, instance=map), map)
def test_set_permissions(self): norman = get_user_model().objects.get(username="******") anonymous = get_user_model().objects.get(username="******") doc = create_single_doc("test_delete_doc") map = create_single_map("test_delete_dataset") dt = create_single_dataset("test_delete_dataset") public_group, _public_created = GroupProfile.objects.get_or_create( slug='public_group', title='public_group', access='public') private_group, _private_created = GroupProfile.objects.get_or_create( slug='private_group', title='private_group', access='private') perm_spec = { "users": { "AnonymousUser": ['change_dataset_style', 'view_resourcebase'], "norman": ['view_resourcebase', 'change_dataset_style'], }, "groups": { "public_group": ['view_resourcebase'], "private_group": ['view_resourcebase', 'change_resourcebase'] } } self.assertTrue( self.rm.set_permissions(dt.uuid, instance=dt, permissions=perm_spec)) self.assertFalse( self.rm.set_permissions("invalid_uuid", instance=None, permissions=perm_spec)) # Test permissions assigned self.assertTrue(norman.has_perm('change_dataset_style', dt)) self.assertFalse( norman.has_perm('change_resourcebase', dt.get_self_resource())) # Test with no specified permissions with patch( 'geonode.security.utils.skip_registered_members_common_group' ) as mock_v: mock_v.return_value = True with self.settings(DEFAULT_ANONYMOUS_DOWNLOAD_PERMISSION=False, DEFAULT_ANONYMOUS_VIEW_PERMISSION=False): self.assertTrue( self.rm.remove_permissions(dt.uuid, instance=dt)) self.assertFalse( anonymous.has_perm('view_resourcebase', dt.get_self_resource())) self.assertFalse( anonymous.has_perm('download_resourcebase', dt.get_self_resource())) # Test "download" permissions retention policy perm_spec = { "users": { "AnonymousUser": ['view_resourcebase', 'download_resourcebase'], "norman": ['view_resourcebase', 'download_resourcebase'], }, "groups": { "public_group": ['view_resourcebase', 'download_resourcebase'], "private_group": [ 'view_resourcebase', 'download_resourcebase', 'change_resourcebase' ] } } # 1. "download" permissions are allowed on "Datasets" self.assertTrue( self.rm.set_permissions(dt.uuid, instance=dt, permissions=perm_spec)) self.assertTrue( norman.has_perm('download_resourcebase', dt.get_self_resource())) # 2. "download" permissions are allowed on "Documents" self.assertTrue( self.rm.set_permissions(doc.uuid, instance=doc, permissions=perm_spec)) self.assertTrue( norman.has_perm('download_resourcebase', doc.get_self_resource())) # 3. "download" permissions are NOT allowed on "Maps" self.assertTrue( self.rm.set_permissions(map.uuid, instance=map, permissions=perm_spec)) self.assertFalse( norman.has_perm('download_resourcebase', map.get_self_resource()))
def setUp(self): self.layer = create_single_dataset("dataset_name") self.map = create_single_map("map_name") self.doc = create_single_doc("doc_name") self.request = self.__request_factory()
def setUp(self) -> None: self.user = get_user_model().objects.get(username='******') self.map = create_single_map("single_map", owner=self.user) self.sut = MapForm