예제 #1
0
        /// <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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }