public void DistributedCache_Test()
        {
            IServiceCollection sc = new ServiceCollection()
                                    .AddLogging()
                                    .AddHttpClient()
                                    .AddDistributedMemoryCache();
            var sp = sc.BuildServiceProvider();

            ClientCertificateInfo ci = new ClientCertificateInfo()
            {
                ClientID     = "1",
                AuthUrl      = "1",
                ClientSecret = "1"
            };
            MockTokenProcessor           processor    = new MockTokenProcessor();
            CheckResponseProcessor       checker      = CheckResponseProcessor.NormalChecker;
            DistributedTokenCacheManager cacheManager = new DistributedTokenCacheManager(
                sp.GetRequiredService <IDistributedCache>(),
                ci.ClientID);
            ClientCertificateManager ccm = new ClientCertificateManager(
                ci, processor,
                SetTokenProcessor.Bearer,
                checker,
                cacheManager,
                sp.GetRequiredService <ILogger <ClientCertificateManager> >(),
                sp.GetRequiredService <IHttpClientFactory>());


            List <Task> taskList = new List <Task>();

            for (int i = 0; i < 10; i++)
            {
                taskList.Add(Task.Run(async() =>
                {
                    await ccm.GetAccessToken();
                }));
            }

            Task.WaitAll(taskList.ToArray());

            Assert.Equal(1, processor.exeCount);
        }
        public async Task DistributedCache_SetAndGetToken()
        {
            IServiceCollection sc = new ServiceCollection()
                                    .AddDistributedMemoryCache();
            var sp = sc.BuildServiceProvider();

            DistributedTokenCacheManager tokenManger = new DistributedTokenCacheManager(sp.GetRequiredService <IDistributedCache>(), "1");
            TokenCache tc = new TokenCache()
            {
                access_token = "1"
            };
            await tokenManger.SetToken(tc);

            var tc2 = await tokenManger.GetToken();

            Assert.Equal(tc.access_token, tc2.access_token);

            await tokenManger.RemoveToken();

            tc2 = await tokenManger.GetToken();

            Assert.Null(tc2);
        }