23
23
import importlib
24
24
25
25
from requests .auth import HTTPBasicAuth
26
- from urllib .request import urlopen , Request
27
26
from tastypie .test import ResourceTestCaseMixin
28
27
29
28
from django .db .models import Q
47
46
from geonode .tests .utils import check_dataset
48
47
from geonode .decorators import on_ogc_backend
49
48
from geonode .geoserver .helpers import gs_slurp
50
- from geonode .people .utils import get_valid_user
51
49
from geonode .resource .manager import resource_manager
52
50
from geonode .tests .base import GeoNodeBaseTestSupport
53
51
from geonode .groups .models import Group , GroupProfile
@@ -667,7 +665,7 @@ def test_perm_specs_synchronization(self):
667
665
668
666
self .assertTrue ('limits' in rule )
669
667
rule_limits = rule ['limits' ]
670
- self .assertEqual (rule_limits ['allowedArea' ], 'MULTIPOLYGON (((145.8046418749977 -42.49606500060302, \
668
+ self .assertEqual (rule_limits ['allowedArea' ], 'SRID=4326; MULTIPOLYGON (((145.8046418749977 -42.49606500060302, \
671
669
146.7000276171853 -42.53655428642583, 146.7110139453067 -43.07256577359489, \
672
670
145.9804231249952 -43.05651288026286, 145.8046418749977 -42.49606500060302)))' )
673
671
self .assertEqual (rule_limits ['catalogMode' ], 'MIXED' )
@@ -707,7 +705,7 @@ def test_perm_specs_synchronization(self):
707
705
708
706
self .assertTrue ('limits' in rule )
709
707
rule_limits = rule ['limits' ]
710
- self .assertEqual (rule_limits ['allowedArea' ], 'MULTIPOLYGON (((145.8046418749977 -42.49606500060302, \
708
+ self .assertEqual (rule_limits ['allowedArea' ], 'SRID=4326; MULTIPOLYGON (((145.8046418749977 -42.49606500060302, \
711
709
146.7000276171853 -42.53655428642583, 146.7110139453067 -43.07256577359489, \
712
710
145.9804231249952 -43.05651288026286, 145.8046418749977 -42.49606500060302)))' )
713
711
self .assertEqual (rule_limits ['catalogMode' ], 'MIXED' )
@@ -743,7 +741,7 @@ def test_perm_specs_synchronization(self):
743
741
self .assertTrue ('limits' in rule )
744
742
rule_limits = rule ['limits' ]
745
743
self .assertEqual (
746
- rule_limits ['allowedArea' ], 'MULTIPOLYGON (((145.8046418749977 -42.49606500060302, 146.7000276171853 \
744
+ rule_limits ['allowedArea' ], 'SRID=4326; MULTIPOLYGON (((145.8046418749977 -42.49606500060302, 146.7000276171853 \
747
745
-42.53655428642583, 146.7110139453067 -43.07256577359489, 145.9804231249952 \
748
746
-43.05651288026286, 145.8046418749977 -42.49606500060302)))' )
749
747
self .assertEqual (rule_limits ['catalogMode' ], 'MIXED' )
@@ -979,59 +977,39 @@ def test_dataset_upload_with_time(self):
979
977
def test_dataset_permissions (self ):
980
978
# Test permissions on a layer
981
979
bobby = get_user_model ().objects .get (username = "bobby" )
982
- layer = create_single_dataset ('san_andres_y_providencia_poi.shp ' )
980
+ layer = create_single_dataset ('san_andres_y_providencia_poi' )
983
981
layer = resource_manager .update (
984
982
layer .uuid ,
985
983
instance = layer ,
986
984
notify = False ,
987
985
vals = dict (
988
- owner = bobby
986
+ owner = bobby ,
987
+ workspace = settings .DEFAULT_WORKSPACE
989
988
))
990
989
991
990
self .assertIsNotNone (layer )
992
991
self .assertIsNotNone (layer .ows_url )
993
992
self .assertIsNotNone (layer .ptype )
994
993
self .assertIsNotNone (layer .sourcetype )
994
+ self .assertEqual (layer .alternate , 'geonode:san_andres_y_providencia_poi' )
995
995
996
996
# Reset GeoFence Rules
997
997
purge_geofence_all ()
998
998
geofence_rules_count = get_geofence_rules_count ()
999
- self .assertTrue (geofence_rules_count == 0 )
1000
-
1001
- ignore_errors = True
1002
- skip_unadvertised = False
1003
- skip_geonode_registered = False
1004
- remove_deleted = True
1005
- verbosity = 2
1006
- owner = get_valid_user ('admin' )
1007
- workspace = 'geonode'
1008
- filter = None
1009
- store = None
1010
- permissions = {'users' : {"admin" : ['change_dataset_data' ]}, 'groups' : []}
1011
- gs_slurp (
1012
- ignore_errors = ignore_errors ,
1013
- verbosity = verbosity ,
1014
- owner = owner ,
1015
- console = StreamToLogger (logger , logging .INFO ),
1016
- workspace = workspace ,
1017
- store = store ,
1018
- filter = filter ,
1019
- skip_unadvertised = skip_unadvertised ,
1020
- skip_geonode_registered = skip_geonode_registered ,
1021
- remove_deleted = remove_deleted ,
1022
- permissions = permissions ,
1023
- execute_signals = True )
999
+ self .assertEqual (geofence_rules_count , 0 )
1024
1000
1025
- layer = Dataset .objects .get (name = 'san_andres_y_providencia_poi.shp' )
1001
+ layer = Dataset .objects .get (name = 'san_andres_y_providencia_poi' )
1002
+ layer .set_default_permissions (owner = bobby )
1026
1003
check_dataset (layer )
1027
1004
geofence_rules_count = get_geofence_rules_count ()
1028
1005
_log (f"0. geofence_rules_count: { geofence_rules_count } " )
1029
- self .assertTrue (geofence_rules_count >= 2 )
1006
+ self .assertGreaterEqual (geofence_rules_count , 4 )
1030
1007
1031
1008
# Set the layer private for not authenticated users
1032
- layer .set_permissions ({'users' : {'AnonymousUser' : []}, 'groups' : []})
1009
+ perm_spec = {'users' : {'AnonymousUser' : []}, 'groups' : []}
1010
+ layer .set_permissions (perm_spec )
1033
1011
1034
- url = f'{ settings .GEOSERVER_LOCATION } geonode /ows?' \
1012
+ url = f'{ settings .SITEURL } gs /ows?' \
1035
1013
'LAYERS=geonode%3Asan_andres_y_providencia_poi&STYLES=' \
1036
1014
'&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap' \
1037
1015
'&SRS=EPSG%3A4326' \
@@ -1040,44 +1018,28 @@ def test_dataset_permissions(self):
1040
1018
'&WIDTH=217&HEIGHT=512'
1041
1019
1042
1020
# test view_resourcebase permission on anonymous user
1043
- request = Request (url )
1044
- response = urlopen (request )
1045
- _content_type = response .getheader ('Content-Type' ).lower ()
1021
+ response = requests .get (url )
1022
+ self .assertTrue (response .status_code , 404 )
1046
1023
self .assertEqual (
1047
- _content_type ,
1048
- 'application/vnd.ogc.se_xml;charset=utf -8'
1024
+ response . headers . get ( 'Content-Type' ) ,
1025
+ 'application/vnd.ogc.se_xml;charset=UTF -8'
1049
1026
)
1050
1027
1051
- # test WMS with authenticated user that has not view_resourcebase:
1052
- # the layer must be not accessible (response is xml)
1053
- request = Request (url )
1054
- basic_auth = base64 .b64encode (b'bobby:bob' )
1055
- request .add_header ("Authorization" , f"Basic { basic_auth .decode ('utf-8' )} " )
1056
- response = urlopen (request )
1057
- _content_type = response .getheader ('Content-Type' ).lower ()
1028
+ # test WMS with authenticated user that has access to the Layer
1029
+ response = requests .get (url , auth = HTTPBasicAuth (username = settings .OGC_SERVER ['default' ]['USER' ], password = settings .OGC_SERVER ['default' ]['PASSWORD' ]))
1030
+ self .assertTrue (response .status_code , 200 )
1058
1031
self .assertEqual (
1059
- _content_type ,
1060
- 'application/vnd.ogc.se_xml;charset=utf-8 '
1032
+ response . headers . get ( 'Content-Type' ) ,
1033
+ 'image/png '
1061
1034
)
1062
1035
1063
- # test WMS with authenticated user that has view_resourcebase: the layer
1064
- # must be accessible (response is image)
1065
- perm_spec = {
1066
- 'users' : {
1067
- 'bobby' : ['view_resourcebase' ,
1068
- 'download_resourcebase' ]
1069
- },
1070
- 'groups' : []
1071
- }
1072
- layer .set_permissions (perm_spec )
1073
- request = Request (url )
1074
- basic_auth = base64 .b64encode (b'bobby:bob' )
1075
- request .add_header ("Authorization" , f"Basic { basic_auth .decode ('utf-8' )} " )
1076
- response = urlopen (request )
1077
- _content_type = response .getheader ('Content-Type' ).lower ()
1036
+ # test WMS with authenticated user that has no view_resourcebase:
1037
+ # the layer should be not accessible
1038
+ response = requests .get (url , auth = HTTPBasicAuth (username = 'norman' , password = 'norman' ))
1039
+ self .assertTrue (response .status_code , 404 )
1078
1040
self .assertEqual (
1079
- _content_type ,
1080
- 'application/vnd.ogc.se_xml ;charset=utf-8'
1041
+ response . headers . get ( 'Content-Type' ) ,
1042
+ 'text/html ;charset=utf-8'
1081
1043
)
1082
1044
1083
1045
# test change_dataset_style
0 commit comments