예제 #1
0
        public void AccessToken_GetByUser()
        {
            var userId       = 42;
            var contentId    = 142;
            var feature      = "Feature1";
            var timeout      = TimeSpan.FromMinutes(10);
            var shortTimeout = TimeSpan.FromSeconds(1);
            var savedTokens  = new[]
            {
                AccessTokenVault.CreateToken(userId, timeout),
                AccessTokenVault.CreateToken(userId, timeout, contentId),
                AccessTokenVault.CreateToken(userId, timeout, 0, feature),
                AccessTokenVault.CreateToken(userId, timeout, contentId, feature),
                AccessTokenVault.CreateToken(userId, shortTimeout),
                AccessTokenVault.CreateToken(userId, shortTimeout, contentId),
                AccessTokenVault.CreateToken(userId, shortTimeout, 0, feature),
                AccessTokenVault.CreateToken(userId, shortTimeout, contentId, feature),
            };

            // ACTION-1
            var tokens = AccessTokenVault.GetAllTokens(userId);

            // ASSERT-1
            Assert.AreEqual(
                string.Join(",", savedTokens.OrderBy(x => x.Id).Select(x => x.Id.ToString())),
                string.Join(",", tokens.OrderBy(x => x.Id).Select(x => x.Id.ToString())));

            // ACTION-2
            Thread.Sleep(1100);
            tokens = AccessTokenVault.GetAllTokens(userId);

            // ASSERT-2
            // The last 4 tokens are expired
            Assert.AreEqual(
                string.Join(",", savedTokens.Take(4).OrderBy(x => x.Id).Select(x => x.Id.ToString())),
                string.Join(",", tokens.OrderBy(x => x.Id).Select(x => x.Id.ToString())));
        }