From 39bce943bd0b6a20b4745c471773adbcdae792ee Mon Sep 17 00:00:00 2001 From: Blottiere Paul Date: Thu, 9 Nov 2017 09:39:13 +0000 Subject: [PATCH 1/2] Fixes #17400 by returning an empty response if a layer is ignored due to configuration --- src/server/services/wms/qgswmsrenderer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/services/wms/qgswmsrenderer.cpp b/src/server/services/wms/qgswmsrenderer.cpp index 9ea5fbce932..ca0d12a21bb 100644 --- a/src/server/services/wms/qgswmsrenderer.cpp +++ b/src/server/services/wms/qgswmsrenderer.cpp @@ -1341,7 +1341,7 @@ namespace QgsWms } } - if ( !validLayer ) + if ( !validLayer && !mNicknameLayers.contains( queryLayer ) ) { QString msg = QObject::tr( "Layer '%1' not found" ).arg( queryLayer ); throw QgsBadRequestException( QStringLiteral( "LayerNotDefined" ), msg ); From 534e1e811ead948c143fcdb321d41cdcc9666786 Mon Sep 17 00:00:00 2001 From: Blottiere Paul Date: Thu, 9 Nov 2017 09:40:35 +0000 Subject: [PATCH 2/2] Add test --- tests/src/python/test_qgsserver_wms.py | 19 +- .../test_project_scalevisibility.qgs | 626 ++++++++++++++++++ .../wms_getfeatureinfo_notvisible.txt | 12 + 3 files changed, 655 insertions(+), 2 deletions(-) create mode 100644 tests/testdata/qgis_server/test_project_scalevisibility.qgs create mode 100644 tests/testdata/qgis_server/wms_getfeatureinfo_notvisible.txt diff --git a/tests/src/python/test_qgsserver_wms.py b/tests/src/python/test_qgsserver_wms.py index 939738c7602..8a427117809 100644 --- a/tests/src/python/test_qgsserver_wms.py +++ b/tests/src/python/test_qgsserver_wms.py @@ -46,8 +46,8 @@ class TestQgsServerWMS(QgsServerTestBase): # Set to True to re-generate reference files for this class regenerate_reference = False - def wms_request_compare(self, request, extra=None, reference_file=None): - project = self.testdata_path + "test_project.qgs" + def wms_request_compare(self, request, extra=None, reference_file=None, project='test_project.qgs'): + project = self.testdata_path + project assert os.path.exists(project), "Project file not found: " + project query_string = 'https://www.qgis.org/?MAP=%s&SERVICE=WMS&VERSION=1.3&REQUEST=%s' % (urllib.parse.quote(project), request) @@ -217,6 +217,21 @@ class TestQgsServerWMS(QgsServerTestBase): 'query_layers=testlayer+%C3%A8%C3%A9&X=190&Y=320', 'wms_getfeatureinfo-text-xml') + # layer1 is a clone of layer0 but with a scale visibility. Thus, + # GetFeatureInfo response contains only a feature for layer0 and layer1 + # is ignored for the required bbox. Without the scale visibility option, + # the feature for layer1 would have been in the response too. + mypath = self.testdata_path + "test_project_scalevisibility.qgs" + self.wms_request_compare('GetFeatureInfo', + '&layers=layer0,layer1&styles=&' + + 'VERSION=1.1.0&' + + 'info_format=text%2Fxml&' + + 'width=500&height=500&srs=EPSG%3A4326' + + '&bbox=8.1976,44.8998,8.2100,44.9027&' + + 'query_layers=layer0,layer1&X=235&Y=243', + 'wms_getfeatureinfo_notvisible', + 'test_project_scalevisibility.qgs') + def test_describelayer(self): # Test DescribeLayer self.wms_request_compare('DescribeLayer', diff --git a/tests/testdata/qgis_server/test_project_scalevisibility.qgs b/tests/testdata/qgis_server/test_project_scalevisibility.qgs new file mode 100644 index 00000000000..6fbd1fc283a --- /dev/null +++ b/tests/testdata/qgis_server/test_project_scalevisibility.qgs @@ -0,0 +1,626 @@ + + + QGIS Test Project + + + + + + + + + + + + testlayer20150528120452665 + layer0_119a7843_4041_45ec_87f9_09e9c2ec99b1 + + + + + + + + + + + degrees + + 8.2031776049190217 + 44.90114119073537324 + 8.20391417535903322 + 44.90187776117541318 + + 0 + + + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + WGS84 + true + + + 0 + + + + + + + + + + + + + + + + + + + 8.20345930703634352 + 44.90139483904469131 + 8.20354699399348775 + 44.90148252600183554 + + layer0_119a7843_4041_45ec_87f9_09e9c2ec99b1 + ./testlayer.shp + A test vector layer + A test vector layer with unicode òà + + + + layer1 + + + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + WGS84 + true + + + ogr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ../../../../../../../.. + + 0 + ../../../../../../../.. + + 0 + generatedlayout + + + + + + + name + [% 'Name: ' || "name" %] + + + + 8.20345930703634352 + 44.90139483904469131 + 8.20354699399348775 + 44.90148252600183554 + + testlayer20150528120452665 + ./testlayer.shp + A test vector layer + A test vector layer with unicode òà + + + + layer0 + + + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + WGS84 + true + + + ogr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ../../../../../../../.. + + 0 + ../../../../../../../.. + + 0 + generatedlayout + + + + + + + name + [% 'Name: ' || "name" %] + + + + + + + + + testlayer20150528120452665 + + + + + + + 8 + + + WGS84 + + + elpaso@itopen.it + + + None + conditions unknown + false + + + + + + + EPSG:4326 + 1 + 3452 + +proj=longlat +datum=WGS84 +no_defs + + + 1 + true + 255 + + + + + + + 255 + 255 + 0 + 255 + 255 + 255 + 255 + + + true + 2 + D + + true + + + + + 4 + + 8.20315414376310059 + 44.901236559338642 + 8.204164917965862 + 44.90159838674664172 + + QGIS TestProject + Alessandro Pasotti + + + current_layer + + + off + + + 2 + + 0 + + Some UTF8 text èòù + QGIS dev team + + false + false + true + 50 + 30 + true + 0 + 16 + false + + + + + + testlayer20150528120452665 + + + testlayer20150528120452665 + + + testlayer20150528120452665 + + + + + false + + 90 + + false + + false + false + + m2 + meters + + + + + true + + + + + diff --git a/tests/testdata/qgis_server/wms_getfeatureinfo_notvisible.txt b/tests/testdata/qgis_server/wms_getfeatureinfo_notvisible.txt new file mode 100644 index 00000000000..7ebff84ed96 --- /dev/null +++ b/tests/testdata/qgis_server/wms_getfeatureinfo_notvisible.txt @@ -0,0 +1,12 @@ +***** +Content-Type: text/xml; charset=utf-8 + + + + + + + + + +