@@ -399,5 +399,100 @@ public void AppServiceManagedIdentity()
399
399
Assert . Equal ( expectedAccessToken , accessToken ) ;
400
400
Assert . Equal ( expectedExpiresOn , msat . ExpiresOn ) ;
401
401
}
402
+
403
+ [ Fact ]
404
+ [ Trait ( Category . AcceptanceType , Category . CheckIn ) ]
405
+ public void AppServiceManagedIdentityWithDataPlane ( )
406
+ {
407
+ AzureSessionInitializer . InitializeAzureSession ( ) ;
408
+ var tenant = Guid . NewGuid ( ) . ToString ( ) ;
409
+ var userId = Guid . NewGuid ( ) . ToString ( ) ;
410
+ var environment = AzureEnvironment . PublicEnvironments [ "AzureCloud" ] ;
411
+ var account = new AzureAccount
412
+ {
413
+ Id = userId ,
414
+ Type = AzureAccount . AccountType . ManagedService
415
+ } ;
416
+ const string resource = @"https://vault.azure.com/" ;
417
+ const string endpoint = @"http://127.0.0.1:41217/MSI/token/" ;
418
+ var expectedUri = $ "{ endpoint } ?resource={ resource } &api-version=2017-09-01";
419
+ account . SetProperty ( AzureAccount . Property . MSILoginUri , endpoint ) ;
420
+ account . SetProperty ( AzureAccount . Property . MSILoginSecret , @"bar" ) ;
421
+ const string expectedAccessToken = "foo" ;
422
+ var expectedExpiresOn = DateTimeOffset . Parse ( "1/23/2019 7:15:42 AM +00:00" ) ;
423
+ var responses = new Dictionary < string , ManagedServiceAppServiceTokenInfo > ( StringComparer . OrdinalIgnoreCase )
424
+ {
425
+ {
426
+ expectedUri ,
427
+ new ManagedServiceAppServiceTokenInfo ( )
428
+ {
429
+ AccessToken = expectedAccessToken ,
430
+ ExpiresOn = expectedExpiresOn ,
431
+ Resource = resource ,
432
+ TokenType = "Bearer" ,
433
+ }
434
+ }
435
+ } ;
436
+ AzureSession . Instance . RegisterComponent ( HttpClientOperationsFactory . Name , ( ) => TestHttpOperationsFactory . Create ( responses , _output ) , true ) ;
437
+ var msat = new ManagedServiceAppServiceAccessToken ( account , environment , environment . GetEndpoint ( resource ) ?? resource , tenant ) ;
438
+ Assert . Equal ( expectedUri , msat . RequestUris . Peek ( ) ) ;
439
+ var accessToken = msat . AccessToken ;
440
+ Assert . Equal ( expectedAccessToken , accessToken ) ;
441
+ Assert . Equal ( expectedExpiresOn , msat . ExpiresOn ) ;
442
+ }
443
+
444
+ [ Fact ]
445
+ [ Trait ( Category . AcceptanceType , Category . CheckIn ) ]
446
+ public void AppServiceManagedIdentityWithServiceManagement ( )
447
+ {
448
+ AzureSessionInitializer . InitializeAzureSession ( ) ;
449
+ var tenant = Guid . NewGuid ( ) . ToString ( ) ;
450
+ var userId = Guid . NewGuid ( ) . ToString ( ) ;
451
+ var environment = AzureEnvironment . PublicEnvironments [ "AzureCloud" ] ;
452
+ var account = new AzureAccount
453
+ {
454
+ Id = userId ,
455
+ Type = AzureAccount . AccountType . ManagedService
456
+ } ;
457
+ const string resource = @"https://management.azure.com/" ;
458
+ const string serviceManagementResource = @"https://management.core.windows.net/" ;
459
+ const string endpoint = @"http://127.0.0.1:41217/MSI/token/" ;
460
+ var expectedUri = $ "{ endpoint } ?resource={ resource } &api-version=2017-09-01";
461
+ account . SetProperty ( AzureAccount . Property . MSILoginUri , endpoint ) ;
462
+ account . SetProperty ( AzureAccount . Property . MSILoginSecret , @"bar" ) ;
463
+ const string expectedAccessToken = "foo" ;
464
+ var expectedExpiresOn = DateTimeOffset . Parse ( "1/23/2019 7:15:42 AM +00:00" ) ;
465
+ var responses = new Dictionary < string , ManagedServiceAppServiceTokenInfo > ( StringComparer . OrdinalIgnoreCase )
466
+ {
467
+ {
468
+ expectedUri ,
469
+ new ManagedServiceAppServiceTokenInfo ( )
470
+ {
471
+ AccessToken = expectedAccessToken ,
472
+ ExpiresOn = expectedExpiresOn ,
473
+ Resource = resource ,
474
+ TokenType = "Bearer" ,
475
+ }
476
+ }
477
+ } ;
478
+ AzureSession . Instance . RegisterComponent ( HttpClientOperationsFactory . Name , ( ) => TestHttpOperationsFactory . Create ( responses , _output ) , true ) ;
479
+ var msat = new ManagedServiceAppServiceAccessToken ( account , environment , GetFunctionsResourceId ( serviceManagementResource , environment ) , tenant ) ;
480
+ Assert . Equal ( expectedUri , msat . RequestUris . Peek ( ) ) ;
481
+ var accessToken = msat . AccessToken ;
482
+ Assert . Equal ( expectedAccessToken , accessToken ) ;
483
+ Assert . Equal ( expectedExpiresOn , msat . ExpiresOn ) ;
484
+ }
485
+ private string GetFunctionsResourceId ( string resourceIdOrEndpointName , IAzureEnvironment environment )
486
+ {
487
+ var resourceId = environment . GetEndpoint ( resourceIdOrEndpointName ) ?? resourceIdOrEndpointName ;
488
+ if ( string . Equals (
489
+ environment . GetEndpoint ( AzureEnvironment . Endpoint . ActiveDirectoryServiceEndpointResourceId ) ,
490
+ resourceId , StringComparison . OrdinalIgnoreCase ) )
491
+ {
492
+ resourceId = environment . GetEndpoint ( AzureEnvironment . Endpoint . ResourceManager ) ;
493
+ }
494
+
495
+ return resourceId ;
496
+ }
402
497
}
403
498
}
0 commit comments