solis: do not crash on unlinked name_id (#19438)

This commit is contained in:
Thomas NOËL 2017-10-13 17:02:34 +02:00
parent 25daecbd0c
commit 2027118345
2 changed files with 22 additions and 3 deletions

View File

@ -100,7 +100,10 @@ class Solis(BaseResource):
return {'data': {'deleted': True}}
def apa_infos(self, endpoint, name_id):
apa_link = SolisAPALink.objects.get(resource=self, name_id=name_id)
try:
apa_link = SolisAPALink.objects.get(resource=self, name_id=name_id)
except SolisAPALink.DoesNotExist:
raise APIError('unlinked name_id')
token = self.get_apa_token(apa_link.user_id, apa_link.code)
endpoint = 'asg/apa/' + endpoint + '/' + token
response = self.request(endpoint)

View File

@ -144,6 +144,14 @@ def test_solis_link_infos_unlink(app, solis):
assert not resp.json['data']
assert resp.json['err_desc'].startswith('unknown error status:500')
# unlinked name_id
endpoint = utils.generic_endpoint_url('solis', apa_endpoint, slug=solis.slug)
endpoint += '?name_id=unlinked'
resp = app.get(endpoint, status=200)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'unlinked name_id'
assert resp.json['data'] is None
# unlink
endpoint = utils.generic_endpoint_url('solis', 'apa-unlink', slug=solis.slug)
resp = app.get(endpoint, status=400) # missing name_id
@ -155,8 +163,16 @@ def test_solis_link_infos_unlink(app, solis):
assert resp.json['data'] == {'deleted': True}
assert SolisAPALink.objects.count() == 0
# get informations from unlinked user
# unlink again, no trouble
resp = app.get(endpoint, status=200)
assert resp.json['err'] == 0
assert resp.json['data'] == {'deleted': True}
assert SolisAPALink.objects.count() == 0
# can not get informations from unlinked user
endpoint = utils.generic_endpoint_url('solis', 'apa-user-info', slug=solis.slug)
endpoint += '?name_id=%s' % NAMEID
resp = app.get(endpoint, status=404)
resp = app.get(endpoint, status=200)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'unlinked name_id'
assert resp.json['data'] is None