Projet

Général

Profil

0001-opendatasoft-manage-error-returned-43223.patch

Nicolas Roche, 22 mai 2020 16:52

Télécharger (2,76 ko)

Voir les différences:

Subject: [PATCH 1/2] opendatasoft: manage error returned (#43223)

 passerelle/apps/opendatasoft/models.py |  3 +++
 tests/test_opendatasoft.py             | 13 +++++++++++++
 2 files changed, 16 insertions(+)
passerelle/apps/opendatasoft/models.py
69 69
            'q': query,
70 70
        }
71 71
        if self.api_key:
72 72
            params.update({'apikey': self.api_key})
73 73
        if limit:
74 74
            params.update({'rows': limit})
75 75

  
76 76
        result_response = self.requests.get(url, params=params)
77
        err_desc = result_response.json().get('error')
78
        if err_desc:
79
            return {'err': 1, 'err_desc': err_desc}
77 80

  
78 81
        result = []
79 82
        for record in result_response.json().get('records'):
80 83
            data = {}
81 84
            data['id'] = record.get('recordid')
82 85

  
83 86
            context = {}
84 87
            for key, value in record.get('fields').items():
tests/test_opendatasoft.py
180 180
    resp.form['name'] = 'my query'
181 181
    resp.form['slug'] = 'my-query'
182 182
    resp.form['dataset'] = 'my-dataset'
183 183
    resp = resp.form.submit()
184 184
    resp = resp.follow()
185 185
    assert resp.html.find('div', {'id': 'queries'}).ul.li.a.text == 'my query'
186 186

  
187 187

  
188
@mock.patch('passerelle.utils.Request.get')
189
def test_search_empty_contents(mocked_get, app, connector):
190
    endpoint = utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug)
191
    assert endpoint == '/opendatasoft/my_connector/search'
192

  
193
    # error returned by opendadasoft server
194
    json_response = json.dumps({'error': "The query is invalid : Field 00 doesn't exist"})
195
    mocked_get.return_value = utils.FakedResponse(content=json_response, status_code=200)
196
    resp = app.get(endpoint, status=200)
197
    assert resp.json['err']
198
    assert resp.json['err_desc'] == "The query is invalid : Field 00 doesn't exist"
199

  
200

  
188 201
@mock.patch('passerelle.utils.Request.get')
189 202
def test_search_using_q(mocked_get, app, connector):
190 203
    endpoint = utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug)
191 204
    assert endpoint == '/opendatasoft/my_connector/search'
192 205
    params = {
193 206
        'dataset': 'referentiel-adresse-test',
194 207
        'text_template': '{{numero}} {{nom_rue|safe}} {{nom_commun}}',
195 208
        'q': "rue de l'aubepine",
196
-