solis: improve response in case of solis error (#21476)
This commit is contained in:
parent
349ccad78c
commit
d3fddffb60
|
@ -82,12 +82,12 @@ class Solis(BaseResource):
|
|||
def ping(self, request):
|
||||
pong = self.request('main/isAlive')
|
||||
if pong.status_code != 200:
|
||||
raise APIError('error status:%s, content:%r' %
|
||||
(pong.status_code, pong.content))
|
||||
raise APIError('error status:%s %r, content:%r' %
|
||||
(pong.status_code, pong.reason, pong.content[:1024]))
|
||||
try:
|
||||
response = pong.json().get('response') or ''
|
||||
except (ValueError, AttributeError):
|
||||
raise APIError('invalid response: %r' % pong.content)
|
||||
raise APIError('invalid response: %r' % pong.content[:1024])
|
||||
if not response.startswith('Solis API'):
|
||||
raise APIError('response is %s' % response)
|
||||
return {'data': 'pong', 'response': response}
|
||||
|
@ -100,8 +100,8 @@ class Solis(BaseResource):
|
|||
if response.status_code == 403:
|
||||
raise APIError('invalid credentials')
|
||||
elif response.status_code != 200:
|
||||
raise APIError('error status:%s, content:%r' %
|
||||
(response.status_code, response.content))
|
||||
raise APIError('error status:%s %r, content:%r' %
|
||||
(response.status_code, response.reason, response.content[:1024]))
|
||||
return response.json().get('token')
|
||||
|
||||
def apa_get_information(self, information, user_id=None, code=None, token=None, index=None):
|
||||
|
@ -112,8 +112,14 @@ class Solis(BaseResource):
|
|||
endpoint += '/' + index
|
||||
response = self.request(endpoint)
|
||||
if response.status_code != 200:
|
||||
raise APIError('error status:%s, content:%r' %
|
||||
(response.status_code, response.content))
|
||||
try:
|
||||
json_content = response.json()
|
||||
except ValueError:
|
||||
json_content = None
|
||||
raise APIError('error status:%s %r, content:%r' %
|
||||
(response.status_code, response.reason, response.content[:1024]),
|
||||
data={'status_code': response.status_code,
|
||||
'json_content': json_content})
|
||||
return response.json()
|
||||
|
||||
@endpoint(name='apa-link', methods=['post'], perm='can_access',
|
||||
|
|
|
@ -264,8 +264,15 @@ def test_solis_link_infos_unlink(app, solis):
|
|||
assert requests_get.call_count == 2 # get informations
|
||||
assert ('/asg/apa/%s' % apa_endpoint) in requests_get.call_args[0][0]
|
||||
assert resp.json['err'] == 1
|
||||
assert not resp.json['data']
|
||||
assert resp.json['err_desc'].startswith('error status:500')
|
||||
assert resp.json['data'] == {'json_content': None, 'status_code': 500}
|
||||
|
||||
requests_get.return_value = utils.FakedResponse(content='{"error":"foobar"}',
|
||||
status_code=500)
|
||||
resp = app.get(endpoint, status=200)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'].startswith('error status:500')
|
||||
assert resp.json['data'] == {'json_content': {'error': 'foobar'}, 'status_code': 500}
|
||||
|
||||
# unknown name_id or user_id
|
||||
for qs in ('name_id=%s&user_id=XXX' % NAMEID, 'name_id=unlinked&user_id=53'):
|
||||
|
|
Loading…
Reference in New Issue