Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -323,14 +323,15 @@ public static AadIssuerValidator GetAadIssuerValidator(string aadAuthority)
/// </summary>
/// <param name="aadAuthority">The authority to create the validator for, e.g. https://login.microsoftonline.com/. </param>
/// <param name="httpClient">Optional HttpClient to use to retrieve the endpoint metadata (can be null).</param>
/// <param name="configurationManagerProvider">Configuration manager provider. Injection point for metadata managed outside of the class.</param>
/// <param name="configurationManagerProvider">Configuration manager provider. Injection point for metadata managed outside
/// of the class. The delegate needs to return a configuration manager for a given authority.</param>
/// <example><code>
/// AadIssuerValidator aadIssuerValidator = AadIssuerValidator.GetAadIssuerValidator(authority, configurationManagerProvider);
/// TokenValidationParameters.IssuerValidator = aadIssuerValidator.Validate;
/// </code></example>
/// <returns>A <see cref="AadIssuerValidator"/> for the aadAuthority.</returns>
/// <exception cref="ArgumentNullException">if <paramref name="aadAuthority"/> is null or empty.</exception>
internal static AadIssuerValidator GetAadIssuerValidator(string aadAuthority, HttpClient httpClient, Func<string, BaseConfigurationManager> configurationManagerProvider)
public static AadIssuerValidator GetAadIssuerValidator(string aadAuthority, HttpClient httpClient, Func<string, BaseConfigurationManager> configurationManagerProvider)
{
if (string.IsNullOrEmpty(aadAuthority))
throw LogHelper.LogArgumentNullException(nameof(aadAuthority));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
static Microsoft.IdentityModel.Validators.AadIssuerValidator.GetAadIssuerValidator(string aadAuthority, System.Net.Http.HttpClient httpClient, System.Func<string, Microsoft.IdentityModel.Tokens.BaseConfigurationManager> configurationManagerProvider) -> Microsoft.IdentityModel.Validators.AadIssuerValidator
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using System.Net.Http;
using Microsoft.IdentityModel.Tokens;
using Microsoft.IdentityModel.TestUtils;
using Xunit;

Expand All @@ -21,6 +24,35 @@ public static void IsValidIssuer_ValidatesIssuersCorrectly(AadIssuerValidatorThe
Assert.Equal(theoryData.ExpectedResult, validationResult);
}

[Fact]
public void GetAadIssuerValidator_ThrowsOnNullOrEmptyAuthority()
{
Assert.Throws<ArgumentNullException>(() =>
AadIssuerValidator.GetAadIssuerValidator(null, null, null));
Assert.Throws<ArgumentNullException>(() =>
AadIssuerValidator.GetAadIssuerValidator("", null, null));
}

[Fact]
public void GetAadIssuerValidator_ReturnsInstance_WithAndWithoutProvider()
{
string authority = "https://login.microsoftonline.com/common";
HttpClient httpClient = new HttpClient();

// Without provider
var validator1 = AadIssuerValidator.GetAadIssuerValidator(authority, httpClient, null);
Assert.NotNull(validator1);

// With provider
Func<string, BaseConfigurationManager> provider = (auth) => new MockBaseConfigurationManager();
var validator2 = AadIssuerValidator.GetAadIssuerValidator(authority, httpClient, provider);
Assert.NotNull(validator2);

// Should return the same instance for the same authority when provider is null
var validator3 = AadIssuerValidator.GetAadIssuerValidator(authority, httpClient, null);
Assert.Same(validator1, validator3);
}

public static TheoryData<AadIssuerValidatorTheoryData> AadIssuerValidationTestCases()
{
var theoryData = new TheoryData<AadIssuerValidatorTheoryData>
Expand Down Expand Up @@ -109,6 +141,11 @@ public static TheoryData<AadIssuerValidatorTheoryData> AadIssuerValidationTestCa

return theoryData;
}

private class MockBaseConfigurationManager : BaseConfigurationManager
{
public override void RequestRefresh() { }
}
}

public class AadIssuerValidatorTheoryData : TheoryDataBase
Expand Down
Loading