public async Task AccessToken_Delete_ByContent() { await NoRepoIntegrationTestAsync(async() => { await AccessTokenVault.DeleteAllAccessTokensAsync(CancellationToken.None); var userId1 = 42; var userId2 = 43; var contentId1 = 142; var contentId2 = 143; var timeout = TimeSpan.FromMinutes(10); var shortTimeout = TimeSpan.FromSeconds(1); var savedTokens = new[] { await AccessTokenVault.CreateTokenAsync(userId1, timeout, contentId1, CancellationToken.None), await AccessTokenVault.CreateTokenAsync(userId1, shortTimeout, contentId2, CancellationToken.None), await AccessTokenVault.CreateTokenAsync(userId2, timeout, contentId1, CancellationToken.None), await AccessTokenVault.CreateTokenAsync(userId2, shortTimeout, contentId2, CancellationToken.None), }; // ACTION Thread.Sleep(1100); await AccessTokenVault.DeleteTokensByContentAsync(contentId1, CancellationToken.None); // ASSERT Assert.IsNull(await AccessTokenVault.GetTokenByIdAsync(savedTokens[0].Id, CancellationToken.None)); Assert.IsNotNull(await AccessTokenVault.GetTokenByIdAsync(savedTokens[1].Id, CancellationToken.None)); Assert.IsNull(await AccessTokenVault.GetTokenByIdAsync(savedTokens[2].Id, CancellationToken.None)); Assert.IsNotNull(await AccessTokenVault.GetTokenByIdAsync(savedTokens[3].Id, CancellationToken.None)); }); }
public void UT_AccessToken_Create_MaxTimeOut() { Providers.Instance = new Providers(new ServiceCollection() .AddSingleton <DataProvider, InMemoryDataProvider>() .AddSingleton <IAccessTokenDataProvider, InMemoryAccessTokenDataProvider>() .BuildServiceProvider()); // ACTION var token = AccessTokenVault.CreateTokenAsync(1, TimeSpan.MaxValue, CancellationToken.None).Result; // ASSERT Assert.AreEqual(DateTime.MaxValue, token.ExpirationDate); }
public void UT_AccessToken_Create_MaxTimeOut() { var dataProvider = new InMemoryDataProvider(); dataProvider.SetExtension(typeof(IAccessTokenDataProviderExtension), new InMemoryAccessTokenDataProvider()); Providers.Instance.DataProvider = dataProvider; // ACTION var token = AccessTokenVault.CreateTokenAsync(1, TimeSpan.MaxValue, CancellationToken.None).Result; // ASSERT Assert.AreEqual(DateTime.MaxValue, token.ExpirationDate); }
public async Task AccessToken_AssertExists() { await NoRepoIntegrationTestAsync(async() => { await AccessTokenVault.DeleteAllAccessTokensAsync(CancellationToken.None); var userId = 42; var timeout = TimeSpan.FromMinutes(10); var savedToken = await AccessTokenVault.CreateTokenAsync(userId, timeout, CancellationToken.None); // ACTION AccessTokenVault.AssertTokenExists(savedToken.Value); //Assert.AllRight() :) }); }
public async Task AccessToken_Create_ForUser_ValueLength() { await NoRepoIntegrationTestAsync(async() => { await AccessTokenVault.DeleteAllAccessTokensAsync(CancellationToken.None); var userId = 42; var timeout = TimeSpan.FromMinutes(10); // ACTION var token = await AccessTokenVault.CreateTokenAsync(userId, timeout, CancellationToken.None); // ASSERT Assert.IsTrue(token.Value.Length >= 50); }); }
public async Task AccessToken_Exists() { await NoRepoIntegrationTestAsync(async() => { await AccessTokenVault.DeleteAllAccessTokensAsync(CancellationToken.None); var userId = 42; var timeout = TimeSpan.FromMinutes(10); var savedToken = await AccessTokenVault.CreateTokenAsync(userId, timeout, CancellationToken.None); // ACTION var isExists = await AccessTokenVault.TokenExistsAsync(savedToken.Value, CancellationToken.None); // ASSERT Assert.IsTrue(isExists); }); }
public async Task AccessToken_Get_ForUser() { await NoRepoIntegrationTestAsync(async() => { await AccessTokenVault.DeleteAllAccessTokensAsync(CancellationToken.None); var userId = 42; var timeout = TimeSpan.FromMinutes(10); var savedToken = await AccessTokenVault.CreateTokenAsync(userId, timeout, CancellationToken.None); // ACTION var token = await AccessTokenVault.GetTokenAsync(savedToken.Value, CancellationToken.None); // ASSERT AssertTokensAreEqual(savedToken, token); }); }
public async Task AccessToken_Create_ForUser_Twice() { await NoRepoIntegrationTestAsync(async() => { await AccessTokenVault.DeleteAllAccessTokensAsync(CancellationToken.None); var userId = 42; var timeout = TimeSpan.FromMinutes(10); // ACTION var token1 = await AccessTokenVault.CreateTokenAsync(userId, timeout, CancellationToken.None); var token2 = await AccessTokenVault.CreateTokenAsync(userId, timeout, CancellationToken.None); // ASSERT Assert.AreNotEqual(token1.Id, token2.Id); Assert.AreNotEqual(token1.Value, token2.Value); }); }
public async Task AccessToken_Exists_Expired() { await NoRepoIntegrationTestAsync(async() => { await AccessTokenVault.DeleteAllAccessTokensAsync(CancellationToken.None); var userId = 42; var timeout = TimeSpan.FromMilliseconds(1); var savedToken = await AccessTokenVault.CreateTokenAsync(userId, timeout, CancellationToken.None); // ACTION Thread.Sleep(1100); var isExists = await AccessTokenVault.TokenExistsAsync(savedToken.Value, CancellationToken.None); // ASSERT Assert.IsFalse(isExists); }); }
public async Task AccessToken_Update() { await NoRepoIntegrationTestAsync(async() => { await AccessTokenVault.DeleteAllAccessTokensAsync(CancellationToken.None); var userId = 42; var timeout = TimeSpan.FromMinutes(10.0d); var savedToken = await AccessTokenVault.CreateTokenAsync(userId, timeout, CancellationToken.None); Assert.IsTrue(savedToken.ExpirationDate < DateTime.UtcNow.AddMinutes(20.0d)); // ACTION await AccessTokenVault.UpdateTokenAsync(savedToken.Value, DateTime.UtcNow.AddMinutes(30.0d), CancellationToken.None); // ASSERT var loadedToken = await AccessTokenVault.GetTokenAsync(savedToken.Value, CancellationToken.None); Assert.IsNotNull(loadedToken); Assert.IsTrue(loadedToken.ExpirationDate > DateTime.UtcNow.AddMinutes(20.0d)); }); }
private async Task AccessToken_GetOrAdd(int userId, int contentId = 0, string feature = null) { var timeout1 = TimeSpan.FromMinutes(3); var timeout2 = TimeSpan.FromMinutes(10); var timeout3 = TimeSpan.FromMinutes(20); // create three different tokens var savedToken1 = await AccessTokenVault.CreateTokenAsync(userId, timeout1, contentId, feature, CancellationToken.None).ConfigureAwait(false); var savedToken2 = await AccessTokenVault.CreateTokenAsync(userId, timeout2, contentId, feature, CancellationToken.None).ConfigureAwait(false); var savedToken3 = await AccessTokenVault.CreateTokenAsync(userId, timeout3, contentId, feature, CancellationToken.None).ConfigureAwait(false); // ACTION: get a token with the same parameters var token = await AccessTokenVault.GetOrAddTokenAsync(userId, timeout3, contentId, feature, CancellationToken.None).ConfigureAwait(false); // ASSERT: we should get the last one AssertTokensAreEqual(savedToken3, token); // ACTION: get a token with shorter expiration time token = await AccessTokenVault.GetOrAddTokenAsync(userId, timeout2, contentId, feature, CancellationToken.None).ConfigureAwait(false); // ASSERT: we should get the previous one AssertTokensAreEqual(savedToken2, token); // ACTION: get a token with an even shorter expiration time token = await AccessTokenVault.GetOrAddTokenAsync(userId, TimeSpan.FromMinutes(7), contentId, feature, CancellationToken.None).ConfigureAwait(false); // ASSERT: we should get a totally new one, because the first // token (savedToken1) expires too soon. Assert.AreNotEqual(savedToken1.Value, token.Value); Assert.AreNotEqual(savedToken2.Value, token.Value); Assert.AreNotEqual(savedToken3.Value, token.Value); Assert.IsTrue(token.ExpirationDate < savedToken2.ExpirationDate); }
public async Task AccessToken_GetByUser() { await NoRepoIntegrationTestAsync(async() => { await AccessTokenVault.DeleteAllAccessTokensAsync(CancellationToken.None); var userId = 42; var contentId = 142; var feature = "Feature1"; var timeout = TimeSpan.FromMinutes(10); var shortTimeout = TimeSpan.FromSeconds(1); var savedTokens = new[] { await AccessTokenVault.CreateTokenAsync(userId, timeout, CancellationToken.None), await AccessTokenVault.CreateTokenAsync(userId, timeout, contentId, CancellationToken.None), await AccessTokenVault.CreateTokenAsync(userId, timeout, 0, feature, CancellationToken.None), await AccessTokenVault.CreateTokenAsync(userId, timeout, contentId, feature, CancellationToken.None), await AccessTokenVault.CreateTokenAsync(userId, shortTimeout, CancellationToken.None), await AccessTokenVault.CreateTokenAsync(userId, shortTimeout, contentId, CancellationToken.None), await AccessTokenVault.CreateTokenAsync(userId, shortTimeout, 0, feature, CancellationToken.None), await AccessTokenVault.CreateTokenAsync(userId, shortTimeout, contentId, feature, CancellationToken.None), }; // ACTION-1 var tokens = await AccessTokenVault.GetAllTokensAsync(userId, CancellationToken.None); // 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 = await AccessTokenVault.GetAllTokensAsync(userId, CancellationToken.None); // 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()))); }); }
public async Task AccessToken_Get_ForUserContentAndFeature() { await NoRepoIntegrationTestAsync(async() => { await AccessTokenVault.DeleteAllAccessTokensAsync(CancellationToken.None); var userId = 42; var contentId = 142; var feature = "Feature1"; var timeout = TimeSpan.FromMinutes(10); var savedToken = await AccessTokenVault.CreateTokenAsync(userId, timeout, contentId, feature, CancellationToken.None); // ACTION var token = await AccessTokenVault.GetTokenAsync(savedToken.Value, contentId, feature, CancellationToken.None); // ASSERT AssertTokensAreEqual(savedToken, token); Assert.IsNull(await AccessTokenVault.GetTokenAsync(savedToken.Value, CancellationToken.None)); Assert.IsNull(await AccessTokenVault.GetTokenAsync(savedToken.Value, 0, feature, CancellationToken.None)); Assert.IsNull(await AccessTokenVault.GetTokenAsync(savedToken.Value, contentId, CancellationToken.None)); }); }
public async Task AccessToken_Create_ForUser() { await NoRepoIntegrationTestAsync(async() => { await AccessTokenVault.DeleteAllAccessTokensAsync(CancellationToken.None); var userId = 42; var timeout = TimeSpan.FromMinutes(10); // ACTION var token = await AccessTokenVault.CreateTokenAsync(userId, timeout, CancellationToken.None); // ASSERT Assert.IsTrue(token.Id > 0); Assert.IsNotNull(token.Value); Assert.AreEqual(userId, token.UserId); Assert.AreEqual(0, token.ContentId); Assert.IsNull(token.Feature); Assert.IsTrue((DateTime.UtcNow - token.CreationDate).TotalMilliseconds < 1000); Assert.IsTrue((token.ExpirationDate - DateTime.UtcNow - timeout).TotalMilliseconds < 1000); }); }
public async Task AccessToken_UpdateExpired() { await NoRepoIntegrationTestAsync(async() => { try { await AccessTokenVault.DeleteAllAccessTokensAsync(CancellationToken.None); var userId = 42; var timeout = TimeSpan.FromMilliseconds(1); var savedToken = await AccessTokenVault.CreateTokenAsync(userId, timeout, CancellationToken.None); // ACTION Thread.Sleep(1100); await AccessTokenVault.UpdateTokenAsync(savedToken.Value, DateTime.UtcNow.AddMinutes(30.0d), CancellationToken.None); // ASSERT Assert.Fail("Expected InvalidAccessTokenException was not thrown."); } catch (InvalidAccessTokenException) { // do nothing } }); }