public void TestTokenFetched()
        {
            if (TestConfiguration.AuthType != AuthType.JWT)
            {
                Assert.Ignore($"Unsupported TestConfiguration.AuthType={TestConfiguration.AuthType}");
            }

            // arrange
            var jwtHandler = new JwtRequestHandler(TestConfiguration);

            jwtHandler.ProcessUrl("http://some url/");

            // act
            HttpWebRequest request = _requestFactory.Object.Create("http://some url/");

            jwtHandler.BeforeSend(request, new MemoryStream());

            Assert.Contains("Authorization", request.Headers.Keys);
            var auth = request.Headers["Authorization"];

            Assert.Greater(auth.Length, "Bearer ".Length);
            var token = auth.Substring("Bearer ".Length);

            AssertTokenIsValid(token);
        }
        public void TestTokenRefresh()
        {
            if (TestConfiguration.AuthType != AuthType.JWT)
            {
                Assert.Ignore($"Unsupported TestConfiguration.AuthType={TestConfiguration.AuthType}");
            }

            // arrange
            HttpWebRequest unauthorizedRequest = _requestFactory.Object.Create("http://some url/");

            unauthorizedRequest.Method = WebRequestMethods.Http.Get;
            var response401 = (HttpWebResponse)unauthorizedRequest.GetResponse();

            Assert.AreEqual(HttpStatusCode.Unauthorized, response401.StatusCode);

            var jwtHandler = new JwtRequestHandler(TestConfiguration);

            // act
            Assert.Throws <NeedRepeatRequestException>(
                () =>
            {
                // Should manage 401, fetch new token and store it
                // And throw NeedRepeatRequestException
                jwtHandler.ProcessResponse(response401, new MemoryStream());
            });

            HttpWebRequest request2 = _requestFactory.Object.Create("http://some url/");

            jwtHandler.BeforeSend(request2, new MemoryStream());

            Assert.Contains("Authorization", request2.Headers.Keys);
            var auth = request2.Headers["Authorization"];

            Assert.Greater(auth.Length, "Bearer ".Length);
            var token = auth.Substring("Bearer ".Length);

            AssertTokenIsValid(token);
        }