/// <summary> /// Overrides the base <see cref="CreateHttpHandlerPipeline"/> to add a <see cref="ChallengeCacheHandler"/> as the outermost <see cref="DelegatingHandler"/>. /// </summary> /// <param name="httpClientHandler">The base handler for the client</param> /// <param name="handlers">The handler pipeline for the client</param> /// <returns></returns> protected override DelegatingHandler CreateHttpHandlerPipeline(HttpClientHandler httpClientHandler, params DelegatingHandler[] handlers) { var challengeCacheHandler = new ChallengeCacheHandler(); challengeCacheHandler.InnerHandler = base.CreateHttpHandlerPipeline(httpClientHandler, handlers); return(challengeCacheHandler); }
public async Task CacheNotUpdatedNonBearerChallengeAsync() { var handler = new ChallengeCacheHandler(); handler.InnerHandler = new StaticChallengeResponseHandler(HttpStatusCode.Unauthorized, MockChallenge.Create("PoP").ToString()); var client = new HttpClient(handler); var requestUrl = CreateMockUrl(2); var _ = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, requestUrl)); AssertChallengeCacheEntry(requestUrl, null); }
public async Task CacheNotUpdatedNon401Aysnc() { var handler = new ChallengeCacheHandler(); var expChallenge = MockChallenge.Create(); handler.InnerHandler = new StaticChallengeResponseHandler(HttpStatusCode.Forbidden, expChallenge.ToString()); var client = new HttpClient(handler); var requestUrl = CreateMockUrl(2); var _ = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, requestUrl)); AssertChallengeCacheEntry(requestUrl, null); }
public async Task CacheUpdateOn401Async() { string requestUrlBase = CreateMockUrl(); string requestUrl1 = CreateMockUrl(requestUrlBase, 2); HttpBearerChallengeCache.GetInstance().SetChallengeForURL(new Uri(requestUrl1), MockChallenge.Create().ToHttpBearerChallenge(requestUrl1)); string requestUrl2 = CreateMockUrl(requestUrlBase, 2); var handler = new ChallengeCacheHandler(); var expChallenge = MockChallenge.Create(); handler.InnerHandler = new StaticChallengeResponseHandler(HttpStatusCode.Unauthorized, expChallenge.ToString()); var client = new HttpClient(handler); var _ = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, requestUrl2)); AssertChallengeCacheEntry(requestUrl1, expChallenge); AssertChallengeCacheEntry(requestUrl2, expChallenge); }