-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Backport 3.3.x][Fixes #8937] User with perms can edit approved and p…
…ublished resources when Advanced workflow is enabled (#8978) * - [Fixes #8937] User with perms can edit approved and published resources when Advanced workflow is enabled * - Add advanced workflow permissions test * - check if owner is group manager * - modify tests * - get resource group on getting obj_group_managers * - remove unused class and tests * - update assign_owner permissions * - Align test cases with master * - Align test cases with master * - Align test cases with master Co-authored-by: afabiani <[email protected]> Co-authored-by: afabiani <[email protected]>
- Loading branch information
1 parent
7804448
commit af6f7d9
Showing
10 changed files
with
327 additions
and
225 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -26,9 +26,9 @@ | |
from unittest.mock import patch, Mock | ||
from imagekit.cachefiles.backends import Simple | ||
|
||
from guardian.shortcuts import assign_perm, get_perms | ||
from guardian.shortcuts import assign_perm | ||
|
||
from geonode.base.utils import OwnerRightsRequestViewUtils, ManageResourceOwnerPermissions | ||
from geonode.base.utils import OwnerRightsRequestViewUtils | ||
from geonode.base.templatetags.base_tags import display_change_perms_button | ||
from geonode.documents.models import Document | ||
from geonode.layers.models import Layer | ||
|
@@ -664,75 +664,6 @@ def test_maintenance_true(self): | |
self.assertEqual(response.status_code, 503, 'User is allowed to get index page') | ||
|
||
|
||
class TestOwnerPermissionManagement(TestCase): | ||
""" | ||
Only Layers has custom permissions so this is the only model which is tested. | ||
Models are always treat in the same way | ||
""" | ||
|
||
def setUp(self): | ||
User = get_user_model() | ||
self.user = User.objects.create(username='test', email='[email protected]') | ||
self.la = Layer.objects.create(owner=self.user, title='test', is_approved=True) | ||
|
||
@override_settings(ADMIN_MODERATE_UPLOADS=True) | ||
def test_owner_has_no_permissions(self): | ||
l_manager = ManageResourceOwnerPermissions(self.la) | ||
l_manager.set_owner_permissions_according_to_workflow() | ||
|
||
self.assertEqual(self._retrieve_resource_perms_definition(self.la, ['read', 'download']).sort(), | ||
get_perms(self.user, self.la.get_self_resource()).sort() | ||
) | ||
|
||
@override_settings(ADMIN_MODERATE_UPLOADS=False) | ||
def test_user_has_own_permissions(self): | ||
l_manager = ManageResourceOwnerPermissions(self.la) | ||
l_manager.set_owner_permissions_according_to_workflow() | ||
|
||
self.assertEqual(self._retrieve_resource_perms_definition(self.la).sort(), | ||
get_perms(self.user, self.la.get_self_resource()).sort() | ||
) | ||
|
||
@override_settings(ADMIN_MODERATE_UPLOADS=True) | ||
def test_user_has_permissions_restored(self): | ||
self.la.is_approved = False | ||
self.la.save() | ||
l_manager = ManageResourceOwnerPermissions(self.la) | ||
l_manager.set_owner_permissions_according_to_workflow() | ||
|
||
self.assertEqual(self._retrieve_resource_perms_definition(self.la).sort(), | ||
get_perms(self.user, self.la.get_self_resource()).sort() | ||
) | ||
|
||
@override_settings(ADMIN_MODERATE_UPLOADS=True) | ||
def test_remove_and_add_perms(self): | ||
l_manager = ManageResourceOwnerPermissions(self.la) | ||
l_manager.set_owner_permissions_according_to_workflow() | ||
|
||
self.assertEqual(self._retrieve_resource_perms_definition(self.la, ['read', 'download']).sort(), | ||
get_perms(self.user, self.la.get_self_resource()).sort() | ||
) | ||
|
||
self.la.is_approved = False | ||
self.la.save() | ||
|
||
l_manager.set_owner_permissions_according_to_workflow() | ||
|
||
self.assertEqual(self._retrieve_resource_perms_definition(self.la).sort(), | ||
get_perms(self.user, self.la.get_self_resource()).sort() | ||
) | ||
|
||
def _retrieve_resource_perms_definition(self, resource, perm_key_bundle=[]): | ||
ret = [] | ||
if perm_key_bundle: | ||
for key in perm_key_bundle: | ||
ret.extend(resource.BASE_PERMISSIONS.get(key, [])) | ||
ret.extend(resource.PERMISSIONS.get(key, [])) | ||
else: | ||
[ret.extend(r) for r in list(resource.BASE_PERMISSIONS.values()) + list(resource.PERMISSIONS.values())] | ||
return ret | ||
|
||
|
||
class TestOwnerRightsRequestUtils(TestCase): | ||
|
||
def setUp(self): | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.