public void Getting_From_User_Cache_should_cache_on_call_If_SetLoggedOnUserInCache_is_not_already_called_on_logged_user()
        {
            var Logger       = serviceProvider.GetService <ILoggerFactory>().CreateLogger <UserCaching>();
            var loggeUserId  = Guid.NewGuid().ToString();
            var UsrMgr       = BuildUserManager <AspNetUser>();
            var cache        = serviceProvider.GetService <IMemoryCache>();
            var httpAccessor = serviceProvider.GetService <IHttpContextAccessor>();

            var user = new AspNetUser()
            {
                UserName = "******",
                Email    = "*****@*****.**",
                Id       = loggeUserId
            };

            UsrMgr.CreateAsync(user);//saving in db

            httpAccessor.HttpContext.User = new ClaimsPrincipal(new
                                                                ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, user.UserName),
                new Claim(ClaimTypes.NameIdentifier, user.Id)
            }, "SomeAuthTYpe"));

            var         signInManager = new FakeSignInManager(httpAccessor);
            UserCaching r             = new UserCaching(signInManager, httpAccessor, cache, UsrMgr, Logger);
            var         cached        = r.GetLoggedOnUser().Result;

            Assert.NotNull(cached);
            Assert.Equal(user.Id, cached.Id);
        }
        public async Task Should_remove_key_and_data_on_clear_logged_on_user()
        {
            var Logger       = serviceProvider.GetService <ILoggerFactory>().CreateLogger <UserCaching>();
            var loggeUserId  = Guid.NewGuid().ToString();
            var UsrMgr       = BuildUserManager <AspNetUser>();
            var cache        = serviceProvider.GetService <IMemoryCache>();
            var httpAccessor = serviceProvider.GetService <IHttpContextAccessor>();

            var user = new AspNetUser()
            {
                UserName = "******",
                Email    = "*****@*****.**",
                Id       = loggeUserId
            };
            await UsrMgr.CreateAsync(user);//saving in db

            httpAccessor.HttpContext.User = new ClaimsPrincipal(new
                                                                ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, user.UserName),
                new Claim(ClaimTypes.NameIdentifier, user.Id)
            }, "SomeAuthTYpe"));

            var         signInManager = new FakeSignInManager(httpAccessor);
            UserCaching r             = new UserCaching(signInManager, httpAccessor, cache, UsrMgr, Logger);
            await r.SetLoggedOnUserInCache();

            var cachedUsr = await r.GetLoggedOnUser();

            Assert.NotNull(cachedUsr);
            Assert.Equal(user.Id, cachedUsr.Id);
            r.ClearLoggedOnUser();
            //cachedUsr = await r.GetLoggedOnUser();
            //Assert.Null(cachedUsr);
            var keyIsNUll = cache.Get(r.GetUserCacheKey(cachedUsr.Id));

            Assert.Null(keyIsNUll);
        }