|
67 | 67 | from geonode.base.models import TopicCategory, License, Region, Link
|
68 | 68 | from geonode.utils import check_ogc_backend, set_resource_default_links
|
69 | 69 | from geonode.layers.metadata import convert_keyword, set_metadata, parse_metadata
|
| 70 | +from geonode.groups.models import GroupProfile |
70 | 71 |
|
71 | 72 | from geonode.layers.utils import (
|
72 | 73 | is_sld_upload_only,
|
@@ -925,6 +926,50 @@ def test_assign_remove_permissions(self):
|
925 | 926 | # "norman" has no permissions
|
926 | 927 | self.assertEqual(_c, 0)
|
927 | 928 |
|
| 929 | + @on_ogc_backend(geoserver.BACKEND_PACKAGE) |
| 930 | + def test_assign_remove_permissions_for_groups(self): |
| 931 | + # Assing |
| 932 | + layer = Dataset.objects.all().first() |
| 933 | + perm_spec = layer.get_all_level_info() |
| 934 | + group_profile = GroupProfile.objects.create(slug="group1", title="group1", access="public") |
| 935 | + self.assertNotIn(group_profile, perm_spec["groups"]) |
| 936 | + |
| 937 | + # giving manage permissions to the group |
| 938 | + utils.set_datasets_permissions("manage", resources_names=[layer.name], groups_names=["group1"], delete_flag=False, verbose=True) |
| 939 | + perm_spec = layer.get_all_level_info() |
| 940 | + expected = { |
| 941 | + 'change_dataset_data', 'change_dataset_style', 'change_resourcebase', |
| 942 | + 'change_resourcebase_metadata', 'change_resourcebase_permissions', |
| 943 | + 'delete_resourcebase', 'download_resourcebase', 'publish_resourcebase', |
| 944 | + 'view_resourcebase' |
| 945 | + } |
| 946 | + # checking the perms list |
| 947 | + self.assertSetEqual( |
| 948 | + expected, |
| 949 | + set(perm_spec['groups'][group_profile.group]) |
| 950 | + ) |
| 951 | + |
| 952 | + # Chaning perms to the group from manage to read |
| 953 | + utils.set_datasets_permissions("view", resources_names=[layer.name], groups_names=["group1"], delete_flag=False, verbose=True) |
| 954 | + perm_spec = layer.get_all_level_info() |
| 955 | + expected = { |
| 956 | + 'view_resourcebase' |
| 957 | + } |
| 958 | + # checking the perms list |
| 959 | + self.assertSetEqual( |
| 960 | + expected, |
| 961 | + set(perm_spec['groups'][group_profile.group]) |
| 962 | + ) |
| 963 | + |
| 964 | + # Chaning perms to the group from manage to read |
| 965 | + utils.set_datasets_permissions("view", resources_names=[layer.name], groups_names=["group1"], delete_flag=True, verbose=True) |
| 966 | + perm_spec = layer.get_all_level_info() |
| 967 | + # checking the perms list |
| 968 | + self.assertTrue(group_profile.group not in perm_spec['groups']) |
| 969 | + |
| 970 | + if group_profile: |
| 971 | + group_profile.delete() |
| 972 | + |
928 | 973 | def test_xml_form_without_files_should_raise_500(self):
|
929 | 974 | files = dict()
|
930 | 975 | files['permissions'] = '{}'
|
|
0 commit comments