public async Task SuccessfulResponseFromLocalImdsAsync() { AddMockedResponse(MockHelpers.CreateSuccessResponseMessage(TestConstants.Region)); IRegionDiscoveryProvider regionDiscoveryProvider = new RegionDiscoveryProvider(_httpManager, new NetworkCacheMetadataProvider()); InstanceDiscoveryMetadataEntry regionalMetadata = await regionDiscoveryProvider.GetMetadataAsync(new Uri("https://login.microsoftonline.com/common/"), _testRequestContext).ConfigureAwait(false); Assert.IsNotNull(regionalMetadata); Assert.AreEqual("centralus.login.microsoft.com", regionalMetadata.PreferredNetwork); }
public async Task SuccessfulResponseFromUserProvidedRegionAsync() { AddMockedResponse(MockHelpers.CreateNullMessage(System.Net.HttpStatusCode.NotFound)); _testRequestContext.ServiceBundle.Config.AuthorityInfo.RegionToUse = TestConstants.Region; IRegionDiscoveryProvider regionDiscoveryProvider = new RegionDiscoveryProvider(_httpManager, new NetworkCacheMetadataProvider()); InstanceDiscoveryMetadataEntry regionalMetadata = await regionDiscoveryProvider.TryGetMetadataAsync(new Uri("https://login.microsoftonline.com/common/"), _testRequestContext).ConfigureAwait(false); Assert.IsNotNull(regionalMetadata); Assert.AreEqual("centralus.login.microsoft.com", regionalMetadata.PreferredNetwork); regionDiscoveryProvider.Clear(); }
public async Task ResponseFromUserProvidedRegionDifferentFromRegionDetectedAsync() { Environment.SetEnvironmentVariable(TestConstants.RegionName, "eastus"); _testRequestContext.ServiceBundle.Config.AuthorityInfo.RegionToUse = TestConstants.Region; IRegionDiscoveryProvider regionDiscoveryProvider = new RegionDiscoveryProvider(_httpManager, new NetworkCacheMetadataProvider()); InstanceDiscoveryMetadataEntry regionalMetadata = await regionDiscoveryProvider.TryGetMetadataAsync(new Uri("https://login.microsoftonline.com/common/"), _testRequestContext).ConfigureAwait(false); Assert.IsNotNull(regionalMetadata); Assert.AreEqual("eastus.login.microsoft.com", regionalMetadata.PreferredNetwork); regionDiscoveryProvider.Clear(); }
public async Task UpdateApiversionWhenCurrentVersionExpiresForImdsAsync() { AddMockedResponse(MockHelpers.CreateNullMessage(System.Net.HttpStatusCode.BadRequest)); AddMockedResponse(MockHelpers.CreateFailureMessage(System.Net.HttpStatusCode.BadRequest, File.ReadAllText( ResourceHelper.GetTestResourceRelativePath("local-imds-error-response.json"))), expectedParams: false); AddMockedResponse(MockHelpers.CreateSuccessResponseMessage(File.ReadAllText( ResourceHelper.GetTestResourceRelativePath("local-imds-response.json"))), apiVersion: "2020-10-01"); IRegionDiscoveryProvider regionDiscoveryProvider = new RegionDiscoveryProvider(_httpManager, new NetworkCacheMetadataProvider()); InstanceDiscoveryMetadataEntry regionalMetadata = await regionDiscoveryProvider.GetMetadataAsync(new Uri("https://login.microsoftonline.com/common/"), _testRequestContext).ConfigureAwait(false); Assert.IsNotNull(regionalMetadata); Assert.AreEqual("centralus.login.microsoft.com", regionalMetadata.PreferredNetwork); }
public async Task NonPublicCloudTestAsync() { try { Environment.SetEnvironmentVariable(TestConstants.RegionName, TestConstants.Region); IRegionDiscoveryProvider regionDiscoveryProvider = new RegionDiscoveryProvider(_httpManager, new NetworkCacheMetadataProvider()); InstanceDiscoveryMetadataEntry regionalMetadata = await regionDiscoveryProvider.GetMetadataAsync(new Uri("https://login.someenv.com/common/"), _testRequestContext).ConfigureAwait(false); Assert.IsNotNull(regionalMetadata); Assert.AreEqual("centralus.login.someenv.com", regionalMetadata.PreferredNetwork); } finally { Environment.SetEnvironmentVariable(TestConstants.RegionName, null); } }
public async Task SuccessfulResponseFromUserProvidedRegionAsync() { AddMockedResponse(MockHelpers.CreateNullMessage(System.Net.HttpStatusCode.NotFound)); _testRequestContext.ServiceBundle.Config.AzureRegion = TestConstants.Region; IRegionDiscoveryProvider regionDiscoveryProvider = new RegionDiscoveryProvider(_httpManager, true); InstanceDiscoveryMetadataEntry regionalMetadata = await regionDiscoveryProvider.GetMetadataAsync( new Uri("https://login.microsoftonline.com/common/"), _testRequestContext).ConfigureAwait(false); Assert.IsNotNull(regionalMetadata); Assert.AreEqual($"centralus.{RegionDiscoveryProvider.PublicEnvForRegional}", regionalMetadata.PreferredNetwork); Assert.AreEqual(TestConstants.Region, _testRequestContext.ApiEvent.RegionUsed); Assert.AreEqual((int)RegionAutodetectionSource.FailedAutoDiscovery, _testRequestContext.ApiEvent.RegionAutodetectionSource); Assert.AreEqual((int)RegionOutcome.UserProvidedAutodetectionFailed, _testRequestContext.ApiEvent.RegionOutcome); }
public async Task SuccessfulResponseFromEnvironmentVariableAsync() { try { Environment.SetEnvironmentVariable("REGION_NAME", Region); IRegionDiscoveryProvider regionDiscoveryProvider = new RegionDiscoveryProvider(_httpManager, new NetworkCacheMetadataProvider()); InstanceDiscoveryMetadataEntry regionalMetadata = await regionDiscoveryProvider.GetMetadataAsync(new Uri("https://login.microsoftonline.com/common/"), _testRequestContext).ConfigureAwait(false); Assert.IsNotNull(regionalMetadata); Assert.AreEqual("centralus.login.microsoft.com", regionalMetadata.PreferredNetwork); } finally { Environment.SetEnvironmentVariable("REGION_NAME", null); } }
public async Task ErrorResponseFromLocalImdsAsync() { AddMockedResponse(MockHelpers.CreateNullMessage(System.Net.HttpStatusCode.NotFound)); try { IRegionDiscoveryProvider regionDiscoveryProvider = new RegionDiscoveryProvider(_httpManager, new NetworkCacheMetadataProvider()); InstanceDiscoveryMetadataEntry regionalMetadata = await regionDiscoveryProvider.GetMetadataAsync(new Uri("https://login.microsoftonline.com/common/"), _testRequestContext).ConfigureAwait(false); Assert.Fail("Exception should be thrown."); } catch (MsalServiceException e) { Assert.IsNotNull(e); Assert.AreEqual(MsalError.RegionDiscoveryFailed, e.ErrorCode); Assert.AreEqual(MsalErrorMessage.RegionDiscoveryFailed, e.Message); } }
public async Task UpdateApiversionFailsWithEmptyResponseBodyAsync() { AddMockedResponse(MockHelpers.CreateNullMessage(System.Net.HttpStatusCode.BadRequest)); AddMockedResponse(MockHelpers.CreateNullMessage(System.Net.HttpStatusCode.BadRequest), expectedParams: false); try { IRegionDiscoveryProvider regionDiscoveryProvider = new RegionDiscoveryProvider(_httpManager, new NetworkCacheMetadataProvider()); InstanceDiscoveryMetadataEntry regionalMetadata = await regionDiscoveryProvider.GetMetadataAsync(new Uri("https://login.microsoftonline.com/common/"), _testRequestContext).ConfigureAwait(false); Assert.Fail("The call should fail with MsalServiceException as the updated version for imds was not returned."); } catch (MsalServiceException e) { Assert.IsNotNull(e); Assert.AreEqual(MsalError.RegionDiscoveryFailed, e.ErrorCode); Assert.AreEqual(MsalErrorMessage.RegionDiscoveryFailed, e.Message); } }
public async Task ResponseMissingRegionFromLocalImdsAsync() { AddMockedResponse(MockHelpers.CreateSuccessResponseMessage(File.ReadAllText( ResourceHelper.GetTestResourceRelativePath("local-imds-response-without-region.json")))); try { IRegionDiscoveryProvider regionDiscoveryProvider = new RegionDiscoveryProvider(_httpManager, new NetworkCacheMetadataProvider()); InstanceDiscoveryMetadataEntry regionalMetadata = await regionDiscoveryProvider.GetMetadataAsync(new Uri("https://login.microsoftonline.com/common/"), _testRequestContext).ConfigureAwait(false); Assert.Fail("Exception should be thrown."); } catch (MsalServiceException e) { Assert.IsNotNull(e); Assert.AreEqual(MsalError.RegionDiscoveryFailed, e.ErrorCode); Assert.AreEqual(MsalErrorMessage.RegionDiscoveryFailed, e.Message); } }
public async Task UpdateApiversionFailsWithNoNewestVersionsAsync() { AddMockedResponse(MockHelpers.CreateNullMessage(System.Net.HttpStatusCode.BadRequest)); AddMockedResponse(MockHelpers.CreateFailureMessage(System.Net.HttpStatusCode.BadRequest, File.ReadAllText( ResourceHelper.GetTestResourceRelativePath("local-imds-error-response-versions-missing.json"))), expectedParams: false); try { IRegionDiscoveryProvider regionDiscoveryProvider = new RegionDiscoveryProvider(_httpManager, new NetworkCacheMetadataProvider()); InstanceDiscoveryMetadataEntry regionalMetadata = await regionDiscoveryProvider.GetMetadataAsync(new Uri("https://login.microsoftonline.com/common/"), _testRequestContext).ConfigureAwait(false); Assert.Fail("The call should fail with MsalServiceException as the newest versions were missing in the response."); } catch (MsalServiceException e) { Assert.IsNotNull(e); Assert.AreEqual(MsalError.RegionDiscoveryFailed, e.ErrorCode); Assert.AreEqual(MsalErrorMessage.RegionDiscoveryFailed, e.Message); } }