greco: raise api error if token are not availables (#51629)
This commit is contained in:
parent
8b80662854
commit
019ed6a61d
|
@ -94,7 +94,13 @@ class Greco(BaseResource):
|
|||
data={'grant_type': 'client_credentials'},
|
||||
verify=self.verify_cert,
|
||||
timeout=60,
|
||||
).json()
|
||||
)
|
||||
if resp.status_code >= 400:
|
||||
raise APIError(
|
||||
'HTTP Transport Error %s' % resp.status_code,
|
||||
err_code='transport-error-%s' % resp.status_code,
|
||||
)
|
||||
resp = resp.json()
|
||||
token = '%s %s' % (resp.get('token_type'), resp.get('access_token'))
|
||||
timeout = int(resp.get('expires_in'))
|
||||
cache.set(cache_key, token, timeout)
|
||||
|
|
|
@ -58,6 +58,7 @@ TOKEN = utils.FakedResponse(
|
|||
status_code=200,
|
||||
headers={'Content-Type': 'application/json'},
|
||||
)
|
||||
RESP_503 = utils.FakedResponse(content='Service Unavailable', status_code=503)
|
||||
PING = fake_xml_response('ping')
|
||||
CREATE_OK = fake_xml_response('create_ok')
|
||||
CREATE_KO = fake_xml_response('create_ko')
|
||||
|
@ -125,20 +126,31 @@ def conn():
|
|||
return connector
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.post', side_effect=(RESP_503,))
|
||||
def test_greco_no_api_key(mocked_post, app, conn):
|
||||
url = reverse('generic-endpoint', kwargs={'connector': 'greco', 'endpoint': 'ping', 'slug': conn.slug})
|
||||
app.get(url, status=403)
|
||||
assert mocked_post.call_count == 0
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.post', side_effect=(RESP_503,))
|
||||
def test_greco_no_token(mocked_post, app, conn):
|
||||
url = reverse('generic-endpoint', kwargs={'connector': 'greco', 'endpoint': 'ping', 'slug': conn.slug})
|
||||
url += '?apikey=grecokey'
|
||||
resp = app.get(url).json
|
||||
assert mocked_post.call_count == 1 # token (-> 503)
|
||||
assert resp['err'] == 'transport-error-503'
|
||||
|
||||
|
||||
def post_effect_503(url, *args, **kwargs):
|
||||
if url == 'http://greco.example.net/token':
|
||||
return utils.FakedResponse(
|
||||
content='{"token_type": "tt", "access_token": "at", "expires_in": "600"}', status_code=200
|
||||
)
|
||||
return utils.FakedResponse(content='Service Unavailable', status_code=503)
|
||||
return TOKEN
|
||||
return RESP_503
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.post', side_effect=post_effect_503)
|
||||
def test_greco_ping(mocked_post, app, conn):
|
||||
url = reverse('generic-endpoint', kwargs={'connector': 'greco', 'endpoint': 'ping', 'slug': conn.slug})
|
||||
app.get(url, status=403)
|
||||
assert mocked_post.call_count == 0
|
||||
|
||||
url += '?apikey=grecokey'
|
||||
resp = app.get(url).json
|
||||
assert mocked_post.call_count == 2 # token + communcationTest (ping -> 503)
|
||||
|
|
Loading…
Reference in New Issue