public async Task Sliding_Expiration_within_absolute_Expiration() { var store = new InMemoryRefreshTokenStore(); var service = new DefaultRefreshTokenService(store); var client = await _clients.FindClientByIdAsync("roclient_sliding_refresh_expiration_one_time_only"); var token = TokenFactory.CreateAccessToken(client.ClientId, "valid", 60, "read", "write"); var handle = await service.CreateRefreshTokenAsync(token, client); var refreshToken = await store.GetAsync(handle); var lifetime = refreshToken.LifeTime; await Task.Delay(1000); var newHandle = await service.UpdateRefreshTokenAsync(refreshToken, client); var newRefreshToken = await store.GetAsync(newHandle); var newLifetime = newRefreshToken.LifeTime; Assert.AreEqual(newLifetime, client.SlidingRefreshTokenLifetime + 1); }
public async Task Sliding_Expiration_does_not_exceed_absolute_Expiration() { var store = new InMemoryRefreshTokenStore(); var service = new DefaultRefreshTokenService(store); var client = await _clients.FindClientByIdAsync("roclient_sliding_refresh_expiration_one_time_only"); var token = TokenFactory.CreateAccessToken(client.ClientId, "valid", 60, "read", "write"); var handle = await service.CreateRefreshTokenAsync(token, client); var refreshToken = await store.GetAsync(handle); var lifetime = refreshToken.LifeTime; await Task.Delay(8000); var newHandle = await service.UpdateRefreshTokenAsync(handle, refreshToken, client); var newRefreshToken = await store.GetAsync(newHandle); var newLifetime = newRefreshToken.LifeTime; newLifetime.Should().Be(client.AbsoluteRefreshTokenLifetime); }
public DefaultRefreshTokenServiceTests() { originalNowFunc = DateTimeOffsetHelper.UtcNowFunc; DateTimeOffsetHelper.UtcNowFunc = () => UtcNow; roclient_absolute_refresh_expiration_one_time_only = new Client { ClientName = "Resource Owner Client", Enabled = true, ClientId = "roclient_absolute_refresh_expiration_one_time_only", ClientSecrets = new List <ClientSecret> { new ClientSecret("secret".Sha256()) }, Flow = Flows.ResourceOwner, RefreshTokenExpiration = TokenExpiration.Absolute, RefreshTokenUsage = TokenUsage.OneTimeOnly, AbsoluteRefreshTokenLifetime = 200 }; roclient_sliding_refresh_expiration_one_time_only = new Client { ClientName = "Resource Owner Client", Enabled = true, ClientId = "roclient_sliding_refresh_expiration_one_time_only", ClientSecrets = new List <ClientSecret> { new ClientSecret("secret".Sha256()) }, Flow = Flows.ResourceOwner, RefreshTokenExpiration = TokenExpiration.Sliding, RefreshTokenUsage = TokenUsage.OneTimeOnly, AbsoluteRefreshTokenLifetime = 10, SlidingRefreshTokenLifetime = 4 }; roclient_absolute_refresh_expiration_reuse = new Client { ClientName = "Resource Owner Client", Enabled = true, ClientId = "roclient_absolute_refresh_expiration_reuse", ClientSecrets = new List <ClientSecret> { new ClientSecret("secret".Sha256()) }, Flow = Flows.ResourceOwner, RefreshTokenExpiration = TokenExpiration.Absolute, RefreshTokenUsage = TokenUsage.ReUse, AbsoluteRefreshTokenLifetime = 200 }; refreshTokenStore = new InMemoryRefreshTokenStore(); service = new DefaultRefreshTokenService(refreshTokenStore, new DefaultEventService()); }
public DefaultRefreshTokenServiceTests() { _refreshTokenStoreMock = new Mock <IRefreshTokenStore>(); _refreshTokenStoreMock.Setup(x => x.RemoveAsync(It.IsAny <string>())) .Returns(Task.FromResult(0)); _eventServiceMock = new Mock <IEventService>(); _defaultRefreshTokenService = new DefaultRefreshTokenService(_refreshTokenStoreMock.Object, _eventServiceMock.Object); }
private static IRefreshTokenService CreateRefreshTokenService(IRefreshTokenStore store, IProfileService profile) { var service = new DefaultRefreshTokenService( store, profile, new StubClock(), TestLogger.Create <DefaultRefreshTokenService>()); return(service); }
public DefaultRefreshTokenServiceTests() { _store = new DefaultRefreshTokenStore( new InMemoryPersistedGrantStore(), new PersistentGrantSerializer(), new DefaultHandleGenerationService(), TestLogger.Create <DefaultRefreshTokenStore>()); _subject = new DefaultRefreshTokenService( _clock, _store, TestLogger.Create <DefaultRefreshTokenService>()); }
public async Task OneTime_Handle_creates_new_Handle() { var store = new InMemoryRefreshTokenStore(); var service = new DefaultRefreshTokenService(store); var client = await _clients.FindClientByIdAsync("roclient_absolute_refresh_expiration_one_time_only"); var token = TokenFactory.CreateAccessToken(client.ClientId, "valid", 60, "read", "write"); var handle = await service.CreateRefreshTokenAsync(token, client); var newHandle = await service.UpdateRefreshTokenAsync(handle, await store.GetAsync(handle), client); newHandle.Should().NotBe(handle); }
public async Task ReUse_Handle_reuses_Handle() { var store = new InMemoryRefreshTokenStore(); var service = new DefaultRefreshTokenService(store); var client = await _clients.FindClientByIdAsync("roclient_absolute_refresh_expiration_reuse"); var token = TokenFactory.CreateAccessToken(client.ClientId, "valid", 60, "read", "write"); var handle = await service.CreateRefreshTokenAsync(token, client); var newHandle = await service.UpdateRefreshTokenAsync(await store.GetAsync(handle), client); Assert.AreEqual(handle, newHandle); }
public async Task Create_Refresh_Token_Sliding_Lifetime() { var store = new InMemoryRefreshTokenStore(); var service = new DefaultRefreshTokenService(store); var client = await _clients.FindClientByIdAsync("roclient_sliding_refresh_expiration_one_time_only"); var token = TokenFactory.CreateAccessToken(client.ClientId, "valid", 60, "read", "write"); var handle = await service.CreateRefreshTokenAsync(token, client); // make sure a handle is returned string.IsNullOrWhiteSpace(handle).Should().BeFalse(); // make sure refresh token is in store var refreshToken = await store.GetAsync(handle); refreshToken.Should().NotBeNull(); // check refresh token values client.ClientId.Should().Be(refreshToken.ClientId); client.SlidingRefreshTokenLifetime.Should().Be(refreshToken.LifeTime); }
public async Task Create_Refresh_Token_Absolute_Lifetime() { var store = new InMemoryRefreshTokenStore(); var service = new DefaultRefreshTokenService(store); var client = await _clients.FindClientByIdAsync("roclient_absolute_refresh_expiration_one_time_only"); var token = TokenFactory.CreateAccessToken(client.ClientId, "valid", 60, "read", "write"); var handle = await service.CreateRefreshTokenAsync(token, client); // make sure a handle is returned Assert.IsFalse(string.IsNullOrWhiteSpace(handle)); // make sure refresh token is in store var refreshToken = await store.GetAsync(handle); Assert.IsNotNull(refreshToken); // check refresh token values Assert.AreEqual(refreshToken.ClientId, client.ClientId); Assert.AreEqual(refreshToken.LifeTime, client.AbsoluteRefreshTokenLifetime); }
public DefaultRefreshTokenServiceTests() { originalNowFunc = DateTimeOffsetHelper.UtcNowFunc; DateTimeOffsetHelper.UtcNowFunc = () => UtcNow; roclient_absolute_refresh_expiration_one_time_only = new Client { ClientName = "Resource Owner Client", Enabled = true, ClientId = "roclient_absolute_refresh_expiration_one_time_only", ClientSecrets = new List<ClientSecret> { new ClientSecret("secret".Sha256()) }, Flow = Flows.ResourceOwner, RefreshTokenExpiration = TokenExpiration.Absolute, RefreshTokenUsage = TokenUsage.OneTimeOnly, AbsoluteRefreshTokenLifetime = 200 }; roclient_sliding_refresh_expiration_one_time_only = new Client { ClientName = "Resource Owner Client", Enabled = true, ClientId = "roclient_sliding_refresh_expiration_one_time_only", ClientSecrets = new List<ClientSecret> { new ClientSecret("secret".Sha256()) }, Flow = Flows.ResourceOwner, RefreshTokenExpiration = TokenExpiration.Sliding, RefreshTokenUsage = TokenUsage.OneTimeOnly, AbsoluteRefreshTokenLifetime = 10, SlidingRefreshTokenLifetime = 4 }; roclient_absolute_refresh_expiration_reuse = new Client { ClientName = "Resource Owner Client", Enabled = true, ClientId = "roclient_absolute_refresh_expiration_reuse", ClientSecrets = new List<ClientSecret> { new ClientSecret("secret".Sha256()) }, Flow = Flows.ResourceOwner, RefreshTokenExpiration = TokenExpiration.Absolute, RefreshTokenUsage = TokenUsage.ReUse, AbsoluteRefreshTokenLifetime = 200 }; refreshTokenStore = new InMemoryRefreshTokenStore(); service = new DefaultRefreshTokenService(refreshTokenStore, new DefaultEventService()); }