public void User_Cache_Should_Return_Data_If_User_In_Storage_And_Logged_In()
        {
            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 cachedUsr = r.SetLoggedOnUserInCache().Result;

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

            //that use was once logged in but then got deleted somehow
            httpAccessor.HttpContext.User = new ClaimsPrincipal(new
                                                                ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, "a-deleted-user"),
                new Claim(ClaimTypes.NameIdentifier, "not-t-be-found")
            }, "SomeAuthTYpe"));

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

            Assert.Null(await r.SetLoggedOnUserInCache());
        }
        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);
        }
        public void User_Cache_Should_Return_Null_If_User_NOT_Logged_In()
        {
            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 = null;
            var         signInManager = new FakeSignInManager(httpAccessor);
            UserCaching r             = new UserCaching(signInManager, httpAccessor, cache, UsrMgr, Logger);

            var cachedUsr = r.SetLoggedOnUserInCache().Result;

            Assert.Null(cachedUsr);
        }