@@ -343,7 +343,7 @@ def test_get_caller_identity_arn_from_describe_user_profile(boto_session):
343
343
),
344
344
)
345
345
@patch ("os.path.exists" , side_effect = mock_exists (NOTEBOOK_METADATA_FILE , True ))
346
- def test_get_caller_identity_arn_from_describe_domain (boto_session ):
346
+ def test_get_caller_identity_arn_from_describe_domain_if_no_user_settings (boto_session ):
347
347
sess = Session (boto_session )
348
348
expected_role = "arn:aws:iam::369233609183:role/service-role/SageMakerRole-20171129T072388"
349
349
sess .sagemaker_client .describe_user_profile .return_value = {}
@@ -361,6 +361,40 @@ def test_get_caller_identity_arn_from_describe_domain(boto_session):
361
361
sess .sagemaker_client .describe_domain .assert_called_once_with (DomainId = "d-kbnw5yk6tg8j" )
362
362
363
363
364
+ @patch (
365
+ "six.moves.builtins.open" ,
366
+ mock_open (
367
+ read_data = '{"ResourceName": "SageMakerInstance", '
368
+ '"DomainId": "d-kbnw5yk6tg8j", '
369
+ '"UserProfileName": "default-1617915559064"}'
370
+ ),
371
+ )
372
+ @patch ("os.path.exists" , side_effect = mock_exists (NOTEBOOK_METADATA_FILE , True ))
373
+ def test_fallback_to_domain_if_role_unavailable_in_user_settings (boto_session ):
374
+ sess = Session (boto_session )
375
+ expected_role = "expected_role"
376
+ sess .sagemaker_client .describe_user_profile .return_value = {
377
+ "DomainId" : "d-kbnw5yk6tg8j" ,
378
+ "UserSettings" : {
379
+ "JupyterServerAppSettings" : {},
380
+ "KernelGatewayAppSettings" : {},
381
+ },
382
+ }
383
+
384
+ sess .sagemaker_client .describe_domain .return_value = {
385
+ "DefaultUserSettings" : {"ExecutionRole" : expected_role }
386
+ }
387
+
388
+ actual = sess .get_caller_identity_arn ()
389
+
390
+ assert actual == expected_role
391
+ sess .sagemaker_client .describe_user_profile .assert_called_once_with (
392
+ DomainId = "d-kbnw5yk6tg8j" ,
393
+ UserProfileName = "default-1617915559064" ,
394
+ )
395
+ sess .sagemaker_client .describe_domain .assert_called_once_with (DomainId = "d-kbnw5yk6tg8j" )
396
+
397
+
364
398
@patch ("six.moves.builtins.open" , mock_open (read_data = '{"ResourceName": "SageMakerInstance"}' ))
365
399
@patch ("os.path.exists" , side_effect = mock_exists (NOTEBOOK_METADATA_FILE , True ))
366
400
@patch ("sagemaker.session.sts_regional_endpoint" , return_value = STS_ENDPOINT )
0 commit comments