-
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.
[Fixes #6261] Limited 'maps using this layer' to maps the user has pe…
…rmission to see (#6262)
- Loading branch information
1 parent
1ed63c7
commit c62ea18
Showing
3 changed files
with
67 additions
and
2 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 |
---|---|---|
|
@@ -63,6 +63,10 @@ | |
from geonode.layers.populate_layers_data import create_layer_data | ||
from geonode.layers import utils | ||
from geonode.layers.views import _resolve_layer | ||
from geonode.maps.models import Map, MapLayer | ||
from geonode.utils import DisableDjangoSignals | ||
from geonode.maps.tests_populate_maplayers import maplayers as ml | ||
from geonode.security.utils import remove_object_permissions | ||
|
||
logger = logging.getLogger(__name__) | ||
|
||
|
@@ -1351,3 +1355,62 @@ def test_geonode_rest_layer_uploader(self): | |
_l.delete() | ||
finally: | ||
Layer.objects.all().delete() | ||
|
||
|
||
class TestLayerDetailMapViewRights(GeoNodeBaseTestSupport): | ||
def setUp(self): | ||
super(TestLayerDetailMapViewRights, self).setUp() | ||
create_layer_data() | ||
self.user = get_user_model().objects.create(username='dybala', email='[email protected]') | ||
self.user.set_password('very-secret') | ||
admin = get_user_model().objects.get(username='admin') | ||
self.map = Map.objects.create(owner=admin, title='test', is_approved=True, zoom=0, center_x=0.0, center_y=0.0) | ||
|
||
self.layer = Layer.objects.all().first() | ||
with DisableDjangoSignals(): | ||
self.map_layer = MapLayer.objects.create( | ||
fixed=ml[0]['fixed'], | ||
group=ml[0]['group'], | ||
name=self.layer.alternate, | ||
layer_params=ml[0]['layer_params'], | ||
map=self.map, | ||
source_params=ml[0]['source_params'], | ||
stack_order=ml[0]['stack_order'], | ||
opacity=ml[0]['opacity'], | ||
transparent=True, | ||
visibility=True | ||
) | ||
|
||
def test_that_authenticated_user_without_permissions_cannot_view_map_in_layer_detail(self): | ||
""" | ||
Test that an authenticated user without permissions to view a map does not see the map under | ||
'Maps using this layer' in layer_detail when map is not viewable by 'anyone' | ||
""" | ||
remove_object_permissions(self.map.get_self_resource()) | ||
self.client.login(username='dybala', password='very-secret') | ||
response = self.client.get(reverse('layer_detail', args=(self.layer.alternate,))) | ||
self.assertEqual(response.context['map_layers'], []) | ||
|
||
def test_that_anonymous_user_can_view_map_available_to_anyone(self): | ||
""" | ||
Test that anonymous user can view map that has view permissions to 'anyone' | ||
""" | ||
response = self.client.get(reverse('layer_detail', args=(self.layer.alternate,))) | ||
self.assertEqual(response.context['map_layers'], [self.map_layer]) | ||
|
||
def test_that_anonymous_user_cannot_view_map_with_restricted_view(self): | ||
""" | ||
Test that anonymous user cannot view map that are not viewable by 'anyone' | ||
""" | ||
remove_object_permissions(self.map.get_self_resource()) | ||
response = self.client.get(reverse('layer_detail', args=(self.layer.alternate,))) | ||
self.assertEqual(response.context['map_layers'], []) | ||
|
||
def test_that_only_users_with_permissions_can_view_maps_in_layer_view(self): | ||
""" | ||
Test only users with view permissions to a map can view them in layer detail view | ||
""" | ||
remove_object_permissions(self.map.get_self_resource()) | ||
self.client.login(username='admin', password='admin') | ||
response = self.client.get(reverse('layer_detail', args=(self.layer.alternate,))) | ||
self.assertEqual(response.context['map_layers'], [self.map_layer]) |
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