Skip to content

Commit d34fdf2

Browse files
committed
extended json type server tests
not working because of the \n in the response
1 parent 4f55e9d commit d34fdf2

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

tests/src/python/test_qgsserver_wms.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,18 @@ class TestQgsServerWMSTestBase(QgsServerTestBase):
4848
# Set to True to re-generate reference files for this class
4949
regenerate_reference = False
5050

51-
def wms_request_compare(self, request, extra=None, reference_file=None, project='test_project.qgs', version='1.3.0'):
51+
def wms_request(self, request, extra=None, project='test_project.qgs', version='1.3.0'):
5252
project = self.testdata_path + project
5353
assert os.path.exists(project), "Project file not found: " + project
54-
5554
query_string = 'https://www.qgis.org/?MAP=%s&SERVICE=WMS&VERSION=%s&REQUEST=%s' % (urllib.parse.quote(project), version, request)
5655
if extra is not None:
5756
query_string += extra
5857
header, body = self._execute_request(query_string)
59-
response = header + body
58+
return (header, body, query_string)
59+
60+
def wms_request_compare(self, request, extra, reference_file=None, project='test_project.qgs', version='1.3.0'):
61+
response_header, response_body, query_string = self.wms_request(request, extra, project, version)
62+
response = response_header + response_body
6063
reference_path = self.testdata_path + (request.lower() if not reference_file else reference_file) + '.txt'
6164
self.store_reference(reference_path, response)
6265
f = open(reference_path, 'rb')

tests/src/python/test_qgsserver_wms_getfeatureinfo.py

+38
Original file line numberDiff line numberDiff line change
@@ -428,5 +428,43 @@ def testGetFeatureInfoPostgresTypes(self):
428428
'get_postgres_types_json_dict',
429429
'test_project_postgres_types.qgs')
430430

431+
#compare decoded json field list
432+
response_header, response_body, query_string = self.wms_request('GetFeatureInfo',
433+
'&layers=json' +
434+
'&info_format=text%2Fxml' +
435+
'&srs=EPSG%3A3857' +
436+
'&QUERY_LAYERS=json' +
437+
'&FILTER=json' + urllib.parse.quote(':"pk" = 1'),
438+
'test_project_postgres_types.qgs')
439+
root = ET.fromstring(response_body)
440+
for attribute in root.iter('Attribute'):
441+
if attribute.get('name') == 'jvalue':
442+
self.assertIsInstance(attribute.get('value'), list)
443+
self.assertEqual(attribute.get('value'), [1, 2, 3])
444+
self.assertEqual(attribute.get('value'), [1.0, 2.0, 3.0])
445+
if attribute.get('name') == 'jbvalue':
446+
self.assertIsInstance(attribute.get('value'), list)
447+
self.assertEqual(attribute.get('value'), [4, 5, 6])
448+
self.assertEqual(attribute.get('value'), [4.0, 5.0, 6.0])
449+
450+
#compare decoded json field dict
451+
response_header, response_body, query_string = self.wms_request('GetFeatureInfo',
452+
'&layers=json' +
453+
'&info_format=text%2Fxml' +
454+
'&srs=EPSG%3A3857' +
455+
'&QUERY_LAYERS=json' +
456+
'&FILTER=json' + urllib.parse.quote(':"pk" = 2'),
457+
'test_project_postgres_types.qgs')
458+
root = ET.fromstring(response_body)
459+
for attribute in root.iter('Attribute'):
460+
if attribute.get('name') == 'jvalue':
461+
self.assertIsInstance(attribute.get('value'), dict)
462+
self.assertEqual(attribute.get('value'), {'a': 1, 'b': 2})
463+
self.assertEqual(attribute.get('value'), {'a': 1.0, 'b': 2.0})
464+
if attribute.get('name') == 'jbvalue':
465+
self.assertIsInstance(attribute.get('value'), dict)
466+
self.assertEqual(attribute.get('value'), {'c': 4, 'd': 5})
467+
self.assertEqual(attribute.get('value'), {'c': 4.0, 'd': 5.0})
468+
431469
if __name__ == '__main__':
432470
unittest.main()

0 commit comments

Comments
 (0)