@@ -314,6 +314,30 @@ def test_data_permissions(self):
314
314
self .assertEqual (len (parse ("$.roles[?(@.role=='admin')].permissions.data_datasets[?(@.name=='qwc_demo.edit_polygons' & @.deletable)]" ).find (perm )), 0 )
315
315
self .assertEqual (len (parse ("$.roles[?(@.role=='admin')].permissions.data_datasets[?(@.name=='qwc_demo.edit_polygons')].attributes[?(@=='description')]" ).find (perm )), 1 )
316
316
317
+
318
+ # Check that dataset is readable/creatable if only data_create is set
319
+ self .cursor .execute (f"""
320
+ DELETE FROM qwc_config.permissions;
321
+ DELETE FROM qwc_config.resources;
322
+ INSERT INTO qwc_config.resources (id, parent_id, type, name)
323
+ VALUES
324
+ (1, NULL, 'map', 'qwc_demo'),
325
+ (2, 1, 'data_create', 'edit_points');
326
+ INSERT INTO qwc_config.permissions (id, role_id, resource_id, priority, write)
327
+ VALUES
328
+ (1, { ROLE_PUBLIC } , 1, 0, FALSE),
329
+ (2, { ROLE_PUBLIC } , 2, 0, FALSE);
330
+ """ )
331
+ PermissionsTests .conn .commit ()
332
+
333
+ perm = self .__run_config_generator ({})
334
+ self .assertEqual (len (parse ("$.roles[?(@.role=='public')].permissions.data_datasets[?(@.name=='qwc_demo.edit_points' & @.writable==false)]" ).find (perm )), 1 )
335
+ self .assertEqual (len (parse ("$.roles[?(@.role=='public')].permissions.data_datasets[?(@.name=='qwc_demo.edit_points' & @.creatable==true)]" ).find (perm )), 1 )
336
+ self .assertEqual (len (parse ("$.roles[?(@.role=='public')].permissions.data_datasets[?(@.name=='qwc_demo.edit_points' & @.readable==true)]" ).find (perm )), 1 )
337
+ self .assertEqual (len (parse ("$.roles[?(@.role=='public')].permissions.data_datasets[?(@.name=='qwc_demo.edit_points' & @.updatable==false)]" ).find (perm )), 1 )
338
+ self .assertEqual (len (parse ("$.roles[?(@.role=='public')].permissions.data_datasets[?(@.name=='qwc_demo.edit_points' & @.deletable==false)]" ).find (perm )), 1 )
339
+
340
+
317
341
def test_wfs_permissions (self ):
318
342
""" Test WFS permissions. """
319
343
@@ -386,6 +410,29 @@ def test_wfs_permissions(self):
386
410
self .assertEqual (len (parse ("$.roles[?(@.role=='public')].permissions.wfs_services[?(@.name=='scan/wfs_test')].layers[?(@.name=='ÖV-_Linien')].attributes[?(@=='beschreibung')]" ).find (perm )), 0 )
387
411
self .assertEqual (len (parse ("$.roles[?(@.role=='admin')].permissions.wfs_services[?(@.name=='scan/wfs_test')].layers[?(@.name=='ÖV-_Linien')].attributes[?(@=='beschreibung')]" ).find (perm )), 1 )
388
412
413
+ # Check that wfs_layer is readable/creatable if only data_create is set
414
+ self .cursor .execute (f"""
415
+ DELETE FROM qwc_config.permissions;
416
+ DELETE FROM qwc_config.resources;
417
+ INSERT INTO qwc_config.resources (id, parent_id, type, name)
418
+ VALUES
419
+ (1, NULL, 'wfs_service', 'scan/wfs_test'),
420
+ (2, 1, 'wfs_layer_create', 'ÖV: Haltestellen');
421
+ INSERT INTO qwc_config.permissions (id, role_id, resource_id, priority, write)
422
+ VALUES
423
+ (1, { ROLE_PUBLIC } , 1, 0, FALSE),
424
+ (2, { ROLE_PUBLIC } , 2, 0, FALSE);
425
+ """ )
426
+ PermissionsTests .conn .commit ()
427
+
428
+ perm = self .__run_config_generator ({})
429
+ self .assertEqual (len (parse ("$.roles[?(@.role=='public')].permissions.wfs_services[?(@.name=='scan/wfs_test')].layers[?(@.name=='ÖV-_Haltestellen' & @.writable==false)]" ).find (perm )), 1 )
430
+ self .assertEqual (len (parse ("$.roles[?(@.role=='public')].permissions.wfs_services[?(@.name=='scan/wfs_test')].layers[?(@.name=='ÖV-_Haltestellen' & @.creatable==true)]" ).find (perm )), 1 )
431
+ self .assertEqual (len (parse ("$.roles[?(@.role=='public')].permissions.wfs_services[?(@.name=='scan/wfs_test')].layers[?(@.name=='ÖV-_Haltestellen' & @.readable==true)]" ).find (perm )), 1 )
432
+ self .assertEqual (len (parse ("$.roles[?(@.role=='public')].permissions.wfs_services[?(@.name=='scan/wfs_test')].layers[?(@.name=='ÖV-_Haltestellen' & @.updatable==false)]" ).find (perm )), 1 )
433
+ self .assertEqual (len (parse ("$.roles[?(@.role=='public')].permissions.wfs_services[?(@.name=='scan/wfs_test')].layers[?(@.name=='ÖV-_Haltestellen' & @.deletable==false)]" ).find (perm )), 1 )
434
+
435
+
389
436
def test_public_permissions_default_restrict_no_permissions (self ):
390
437
""" Test permissions_default_allow=false and no permissions. """
391
438
0 commit comments