@@ -271,10 +271,15 @@ def test_assume_role_multiple(self, mock_write):
271
271
def test_assume_role_preset (self , mock_write ):
272
272
mock_write .return_value = None
273
273
assertion = mock .Mock ()
274
- assertion .roles .return_value = [{'arn' : '' , 'principle' : '' }]
274
+
275
+ roles = [{'role' : '::::1:role/role1' , 'principle' : '' , 'arn' : '1' },
276
+ {'role' : '::::1:role/role2' , 'principle' : '' , 'arn' : '2' },
277
+ {'role' : '::::1:role/role3' , 'principle' : '' , 'arn' : '3' }]
278
+
279
+ assertion .roles .return_value = roles
275
280
session = aws .Session ('BogusAssertion' )
276
- session .role = 0
277
- session .roles = [{ 'arn' : '' , 'principle' : '' }]
281
+ session .role = 1
282
+ session .roles = roles
278
283
session .assertion = assertion
279
284
sts = {'Credentials' :
280
285
{'AccessKeyId' : 'AKI' ,
@@ -296,6 +301,13 @@ def test_assume_role_preset(self, mock_write):
296
301
mock_write .assert_has_calls ([
297
302
mock .call ()
298
303
])
304
+ session .sts .assert_has_calls ([
305
+ mock .call .assume_role_with_saml (
306
+ RoleArn = '2' ,
307
+ PrincipalArn = '' ,
308
+ SAMLAssertion = mock .ANY ,
309
+ DurationSeconds = 3600 )
310
+ ])
299
311
300
312
@mock .patch ('aws_okta_keyman.aws.Session._print_creds' )
301
313
@mock .patch ('aws_okta_keyman.aws.Session._write' )
@@ -420,23 +432,29 @@ def test_export_creds_to_var_string(self):
420
432
self .assertEqual (ret , expected )
421
433
422
434
def test_available_roles (self ):
423
- roles = [{'role' : '::::1:role/role' , 'principle' : '' },
424
- {'role' : '::::1:role/role' , 'principle' : '' }]
435
+ roles = [{'role' : '::::1:role/role1' , 'principle' : '' },
436
+ {'role' : '::::1:role/role3' , 'principle' : '' },
437
+ {'role' : '::::1:role/role2' , 'principle' : '' }]
425
438
session = aws .Session ('BogusAssertion' )
426
439
session .assertion = mock .MagicMock ()
427
440
session .assertion .roles .return_value = roles
428
- expected = [
429
- {'account' : '1' , 'role_name' : 'role' ,
430
- 'principle' : '' , 'arn' : '::::1:role/role' ,
431
- 'roleIdx' : 0 },
432
- {'account' : '1' , 'role_name' : 'role' ,
433
- 'principle' : '' , 'arn' : '::::1:role/role' ,
434
- 'roleIdx' : 1 }
435
- ]
436
441
437
442
result = session .available_roles ()
438
443
439
444
print (result )
445
+
446
+ expected = [
447
+ {'account' : '1' , 'role_name' : 'role1' ,
448
+ 'principle' : '' , 'arn' : '::::1:role/role1' ,
449
+ 'roleIdx' : 0 },
450
+ {'account' : '1' , 'role_name' : 'role2' ,
451
+ 'principle' : '' , 'arn' : '::::1:role/role2' ,
452
+ 'roleIdx' : 1 },
453
+ {'account' : '1' , 'role_name' : 'role3' ,
454
+ 'principle' : '' , 'arn' : '::::1:role/role3' ,
455
+ 'roleIdx' : 2 }
456
+ ]
457
+
440
458
self .assertEqual (expected , result )
441
459
442
460
def test_available_roles_multiple_accounts (self ):
@@ -453,9 +471,9 @@ def test_available_roles_multiple_accounts(self):
453
471
session .account_ids_to_names .return_value = roles_full
454
472
expected = [
455
473
{'account' : '1' , 'role_name' : 'role' ,
456
- 'principle' : '' , 'arn' : '::::1:role/role' },
474
+ 'principle' : '' , 'arn' : '::::1:role/role' , 'roleIdx' : 0 },
457
475
{'account' : '2' , 'role_name' : 'role' ,
458
- 'principle' : '' , 'arn' : '::::2:role/role' }
476
+ 'principle' : '' , 'arn' : '::::2:role/role' , 'roleIdx' : 1 }
459
477
]
460
478
461
479
result = session .available_roles ()
0 commit comments