Example #1
0
 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))
Example #2
0
    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)
Example #3
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")
Example #4
0
 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)
Example #5
0
    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()))
Example #6
0
 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()
Example #7
0
 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