Compare commits

..

21 Commits

Author SHA1 Message Date
Nicolas Roche ecc80ea82c toulouse-maelis: [functests] adding tests on capacities (#77634)
gitea/passerelle/pipeline/head There was a failure building this commit Details
2023-06-23 08:14:19 +02:00
Nicolas Roche c618d20d5d toulouse-maelis: [functests] update invoice test on extrasco (#77634) 2023-06-23 08:14:19 +02:00
Nicolas Roche 13c783debd toulouse-maelis: [functests] update loisirs basket tests (#77634) 2023-06-23 08:14:19 +02:00
Nicolas Roche 6e37b31671 toulouse-maelis: [functests] include ban zipcode into test (#77634) 2023-06-23 08:14:19 +02:00
Nicolas Roche 52f240d7bd toulouse-maelis: [functests] add subscriptions out from Toulouse (#77634) 2023-06-23 08:14:19 +02:00
Nicolas Roche 0053be2249 toulouse-maelis: [functests] re-enabling tests on extra-sco (#77634) 2023-06-23 08:14:19 +02:00
Nicolas Roche 963351d430 toulouse-maelis: [functests] re-enabling tests on loisirs (#77634) 2023-06-23 08:14:19 +02:00
Nicolas Roche b5b57b5d97 toulouse-maelis: [functests] add test for adultes on perisco (#77634) 2023-06-23 08:14:19 +02:00
Nicolas Roche 59a63d266f toulouse-maelis: [functests] re-enable test on pericso (#77634) 2023-06-23 08:14:19 +02:00
Nicolas Roche 7c49ada962 toulouse-maelis: [functests] improve tests on scolaire (#77634) 2023-06-23 08:14:19 +02:00
Nicolas Roche f53fe92ea7 toulouse-maelis: [functests] re-enabling tests on ape (#77634) 2023-06-23 08:14:19 +02:00
Nicolas Roche fa198d85fd toulouse-maelis: [functests] flagCom correction (#77634) 2023-06-23 08:14:18 +02:00
Nicolas Roche ec363d3d6b toulouse-maelis: [functests] locate test family into Toulouse (#77634) 2023-06-23 08:14:18 +02:00
Nicolas Roche 2ecc216acd toulouse-maelis: [functests] update referentials (#77634) 2023-06-23 08:14:18 +02:00
Nicolas Roche e96ccbffe0 toulouse-maelis: [functests] rename test families (#77634) 2023-06-23 08:14:18 +02:00
Nicolas Roche a6e3844f98 toulouse-maelis: [functests] complete tests on school subscription (#77634) 2023-06-23 08:14:18 +02:00
Nicolas Roche b206faec40 toulouse-maelis: [functests] add visa date to supplied documents (#77634) 2023-06-23 08:14:18 +02:00
Nicolas Roche 549b287c0b toulouse-maelis: [tools] correct tools (#77634) 2023-06-23 08:14:18 +02:00
Nicolas Roche 1951597cb1 toulouse-maelis: [tools] set quantity on booking (#77634) 2023-06-23 08:14:18 +02:00
Lauréline Guérin fb01b9a9ec mdel: fix status endpoint with incorrect zipfile (#78917)
gitea/passerelle/pipeline/head There was a failure building this commit Details
2023-06-23 08:02:23 +02:00
Lauréline Guérin 468e5309a9
opengis: fix features endpoint with bad json response (#78901)
gitea/passerelle/pipeline/head Build queued... Details
2023-06-22 15:55:31 +02:00
4 changed files with 46 additions and 3 deletions

View File

@ -16,6 +16,7 @@
import json
import os
import zipfile
from django.db import models
from django.utils.translation import gettext_lazy as _
@ -417,7 +418,10 @@ class Demand(models.Model):
path = os.path.join(self.resource.output_dir, zip_file)
content = get_file_content_from_zip(path, 'message.xml')
try:
content = get_file_content_from_zip(path, 'message.xml')
except zipfile.BadZipFile:
raise APIError('zipfile error')
element = mdel.etree.fromstring(content)
majs = element.findall('ns2:Body/*/*/*/ns2:Maj', namespace)

View File

@ -215,12 +215,16 @@ class OpenGIS(BaseResource):
response = self.requests.get(self.wfs_service_url, params=params)
data = []
try:
response = response.json()
json_response = response.json()
except ValueError:
self.handle_opengis_error(response)
# if handle_opengis_error did not raise an error, we raise a generic one
raise APIError('OpenGIS Error: unparsable error', data={'content': repr(response.content[:1024])})
for feature in response['features']:
if not isinstance(json_response, dict) or 'features' not in json_response:
raise APIError(
'OpenGIS Error: bad result format', data={'content': repr(response.content[:1024])}
)
for feature in json_response['features']:
feature['text'] = feature['properties'].get(property_name)
data.append(feature)
return {'data': data}

View File

@ -551,6 +551,13 @@ def test_get_status(app, setup):
assert data['comment'] == 'Dossier accepté'
assert Demand.objects.get(demand_id='102-2-AEC-LA').status == 'accepted'
# bad zipfile
filepath = os.path.join(get_resource_base_dir(), 'test', 'outputs', '102-2-aec-la--4.zip')
with open(filepath, 'w') as f:
f.write(' ')
resp = app.get('/mdel/test/status', params={'demand_id': '102-2-AEC-LA'}, status=200)
assert resp.json['err_desc'] == 'zipfile error'
def test_get_status_unknown_demand(app, setup):
resp = app.get('/mdel/test/status', params={'demand_id': '1-14-ILE-LA'})

View File

@ -585,6 +585,34 @@ def test_get_feature_error2(mocked_get, app, connector):
assert '<ows:' in result['data']['content']
@mock.patch('passerelle.utils.Request.get')
def test_get_feature_bad_result(mocked_get, app, connector):
def keyerror(url, **kwargs):
if kwargs['params'].get('request') == 'GetCapabilities':
assert kwargs['params'].get('service')
return tests.utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES)
return tests.utils.FakedResponse(status_code=200, content=json.dumps({}))
endpoint = tests.utils.generic_endpoint_url('opengis', 'features', slug=connector.slug)
mocked_get.side_effect = keyerror
resp = app.get(endpoint, params={'type_names': 'ref_metro_limites_communales', 'property_name': 'nom'})
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'OpenGIS Error: bad result format'
assert resp.json['data'] == {'content': "'{}'"}
def typeerror(url, **kwargs):
if kwargs['params'].get('request') == 'GetCapabilities':
assert kwargs['params'].get('service')
return tests.utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES)
return tests.utils.FakedResponse(status_code=200, content=json.dumps([]))
mocked_get.side_effect = typeerror
resp = app.get(endpoint, params={'type_names': 'ref_metro_limites_communales', 'property_name': 'nom'})
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'OpenGIS Error: bad result format'
assert resp.json['data'] == {'content': "'[]'"}
@pytest.mark.parametrize(
"server_responses, version, typename_label",
[(geoserver_responses_v1_0_0, '1.0.0', 'typename'), (geoserver_responses, '2.0.0', 'typenames')],