public JsonTests() { _oAuth2ResponseBase = InitOAuth2ResponseBase(new OAuth2ResponseBase()); _oAuth2ResponseBaseJson = JsonHelper.SerializeToJson <OAuth2ResponseBase>(_oAuth2ResponseBase); _msalTokenResponse = InitMsalTokenResponse(new MsalTokenResponse()); _msalTokenResponseJson = JsonHelper.SerializeToJson <MsalTokenResponse>(_msalTokenResponse); _instanceDiscoveryResponse = InitInstanceDiscoveryResponse(new InstanceDiscoveryResponse()); _instanceDiscoveryResponseJson = JsonHelper.SerializeToJson <InstanceDiscoveryResponse>(_instanceDiscoveryResponse); }
public T WithInstanceDicoveryMetadata(string instanceDiscoveryJson) { if (string.IsNullOrEmpty(instanceDiscoveryJson)) { throw new ArgumentNullException(instanceDiscoveryJson); } try { InstanceDiscoveryResponse instanceDiscovery = JsonHelper.DeserializeFromJson <InstanceDiscoveryResponse>(instanceDiscoveryJson); Config.CustomInstanceDiscoveryMetadata = instanceDiscovery; return((T)this); } catch (JsonException ex) { throw new MsalClientException( MsalError.InvalidUserInstanceMetadata, MsalErrorMessage.InvalidUserInstanceMetadata, ex); } }
private InstanceDiscoveryResponse InitInstanceDiscoveryResponse(InstanceDiscoveryResponse instanceDiscoveryResponse) { int entries = 30; instanceDiscoveryResponse.TenantDiscoveryEndpoint = TestConstants.DiscoveryEndPoint; instanceDiscoveryResponse.Metadata = new InstanceDiscoveryMetadataEntry[entries]; InitOAuth2ResponseBase(instanceDiscoveryResponse); for (int i = 0; i < entries; i++) { instanceDiscoveryResponse.Metadata[i] = new InstanceDiscoveryMetadataEntry { Aliases = new[] { "login.windows.net", "login.microsoftonline.com" }, PreferredCache = "login.windows.net", PreferredNetwork = "login.microsoftonline.com" }; } return(instanceDiscoveryResponse); }
public async Task NetworkProviderIsCalledLastAsync() { // Arrange _staticMetadataProvider = new StaticMetadataProvider(); _discoveryManager = new InstanceDiscoveryManager( _harness.HttpManager, _harness.ServiceBundle.TelemetryManager, false, _knownMetadataProvider, _staticMetadataProvider, _networkMetadataProvider); var otherEnvs = new[] { "env1", "env2" }; InstanceDiscoveryResponse discoveryResponse = new InstanceDiscoveryResponse { Metadata = new[] { _expectedResult } }; var authorityUri = new Uri(Authority); // No response from the static and known provider _knownMetadataProvider .GetMetadata("some_env.com", otherEnvs) .Returns((InstanceDiscoveryMetadataEntry)null); _networkMetadataProvider .FetchAllDiscoveryMetadataAsync(authorityUri, _testRequestContext) .Returns(discoveryResponse); // Act InstanceDiscoveryMetadataEntry actualResult = await _discoveryManager.GetMetadataEntryTryAvoidNetworkAsync( "https://some_env.com/tid", otherEnvs, _testRequestContext) .ConfigureAwait(false); // Assert Assert.AreSame(_expectedResult, actualResult, "The known metadata provider should be queried second"); _knownMetadataProvider.Received(1).GetMetadata("some_env.com", otherEnvs); _ = _networkMetadataProvider.Received(1).FetchAllDiscoveryMetadataAsync(authorityUri, _testRequestContext); }
public async Task VerifyAnotherHostByInstanceDiscoveryAsync(string host, string tenant, CallState callState) { string instanceDiscoveryEndpoint = this.InstanceDiscoveryEndpoint; instanceDiscoveryEndpoint += ("?api-version=1.0&authorization_endpoint=" + AuthorizeEndpointTemplate); instanceDiscoveryEndpoint = instanceDiscoveryEndpoint.Replace("{host}", host); instanceDiscoveryEndpoint = instanceDiscoveryEndpoint.Replace("{tenant}", tenant); try { var client = new AdalHttpClient(instanceDiscoveryEndpoint, callState); InstanceDiscoveryResponse discoveryResponse = await client.GetResponseAsync <InstanceDiscoveryResponse>(ClientMetricsEndpointType.InstanceDiscovery); if (discoveryResponse.TenantDiscoveryEndpoint == null) { throw new AdalException(AdalError.AuthorityNotInValidList); } } catch (AdalServiceException ex) { throw new AdalException((ex.ErrorCode == "invalid_instance") ? AdalError.AuthorityNotInValidList : AdalError.AuthorityValidationFailed, ex); } }