public async Task FetchesOidcToken_WithOptions(OidcTokenFormat format, string targetAudience, string expectedQueryString) { // A little bit after the tokens returned from OidcTokenFakes were issued. var clock = new MockClock(new DateTime(2020, 5, 21, 9, 20, 0, 0, DateTimeKind.Utc)); var messageHandler = new OidcComputeSuccessMessageHandler(); var initializer = new ComputeCredential.Initializer("http://will.be.ignored", "http://will.be.ignored") { Clock = clock, HttpClientFactory = new MockHttpClientFactory(messageHandler) }; var credential = new ComputeCredential(initializer); var oidcToken = await credential.GetOidcTokenAsync( OidcTokenOptions.FromTargetAudience("any_audience") .WithTargetAudience(targetAudience) .WithTokenFormat(format)); await oidcToken.GetAccessTokenAsync(); Assert.Equal(expectedQueryString, messageHandler.LatestRequest.RequestUri.Query); }
/// <summary> /// Builds a new set of options with the same options as this one, except for the token format. /// </summary> /// <param name="tokenFormat">The new token format.</param> /// <returns>A new set of options with the given token format.</returns> public OidcTokenOptions WithTokenFormat(OidcTokenFormat tokenFormat) => new OidcTokenOptions(TargetAudience, tokenFormat);
private OidcTokenOptions(string targetAudience, OidcTokenFormat tokenFormat) { TargetAudience = targetAudience.ThrowIfNull(nameof(targetAudience)); TokenFormat = Utilities.CheckEnumValue(tokenFormat, nameof(tokenFormat)); }