@@ -256,3 +256,89 @@ def test_request_token_auth_in_setter_scope():
256
256
assert responses .calls [0 ].request .headers .get ('Authorization' ) is None
257
257
assert responses .calls [0 ].response .text == response
258
258
assert 'scope=john+snow' in responses .calls [0 ].response .request .body
259
+
260
+ @responses .activate
261
+ def test_get_refresh_token ():
262
+ iam_url = "https://iam.cloud.ibm.com/identity/token"
263
+ access_token_str = get_access_token ()
264
+ response = """{
265
+ "access_token": "%s",
266
+ "token_type": "Bearer",
267
+ "expires_in": 3600,
268
+ "expiration": 1524167011,
269
+ "refresh_token": "jy4gl91BQ"
270
+ }""" % (access_token_str )
271
+ responses .add (responses .POST , url = iam_url , body = response , status = 200 )
272
+
273
+ token_manager = IAMTokenManager ("iam_apikey" )
274
+ token_manager .get_token ()
275
+
276
+ assert len (responses .calls ) == 2
277
+ assert token_manager .refresh_token == "jy4gl91BQ"
278
+
279
+ # In order to test with a live IAM server, create file "iamtest.env" in the project root.
280
+ # It should look like this:
281
+
282
+ # IAMTEST1_AUTH_URL=<url> e.g. https://iam.cloud.ibm.com
283
+ # IAMTEST1_AUTH_TYPE=iam
284
+ # IAMTEST1_APIKEY=<apikey>
285
+
286
+ # IAMTEST2_AUTH_URL=<url> e.g. https://iam.test.cloud.ibm.com/identity/token
287
+ # IAMTEST2_AUTH_TYPE=iam
288
+ # IAMTEST2_APIKEY=<apikey>
289
+ # IAMTEST2_CLIENT_ID=<client id>
290
+ # IAMTEST2_CLIENT_SECRET=<client secret>
291
+
292
+ # Then uncomment the function below and run this command:
293
+ # python3 -m pytest test -k "test_iam_live_token_server"
294
+
295
+ # import os
296
+ # from ibm_cloud_sdk_core import get_authenticator_from_environment
297
+
298
+ # def test_iam_live_token_server():
299
+ # # Get two iam authenticators from the environment.
300
+ # # "iamtest1" uses username/password
301
+ # # "iamtest2" uses username/apikey
302
+ # os.environ['IBM_CREDENTIALS_FILE'] = "iamtest.env"
303
+
304
+
305
+ # # Test "iamtest1" service
306
+ # auth1 = get_authenticator_from_environment("iamtest1")
307
+ # assert auth1 is not None
308
+ # assert auth1.token_manager is not None
309
+ # assert auth1.token_manager.url is not None
310
+
311
+ # request = {'method': "GET"}
312
+ # request["url"] = ""
313
+ # request["headers"] = {}
314
+
315
+ # assert auth1.token_manager.refresh_token is None
316
+
317
+ # auth1.authenticate(request)
318
+
319
+ # assert auth1.token_manager.refresh_token is not None
320
+
321
+ # assert request.get("headers") is not None
322
+ # assert request["headers"].get("Authorization") is not None
323
+ # assert "Bearer " in request["headers"].get("Authorization")
324
+
325
+
326
+ # # Test "iamtest2" service
327
+ # auth2 = get_authenticator_from_environment("iamtest2")
328
+ # assert auth2 is not None
329
+ # assert auth2.token_manager is not None
330
+ # assert auth2.token_manager.url is not None
331
+
332
+ # request = {'method': "GET"}
333
+ # request["url"] = ""
334
+ # request["headers"] = {}
335
+
336
+ # assert auth2.token_manager.refresh_token is None
337
+
338
+ # auth2.authenticate(request)
339
+
340
+ # assert auth2.token_manager.refresh_token is not None
341
+
342
+ # assert request.get("headers") is not None
343
+ # assert request["headers"].get("Authorization") is not None
344
+ # assert "Bearer " in request["headers"].get("Authorization")
0 commit comments