public async Task GetReferenceTokenAsync_should_return_grant_by_hamlder() { using var store = new RavenDbTestDriverWrapper().GetDocumentStore(); var serializer = new PersistentGrantSerializer(); var loggerMock = new Mock <ILogger <ReferenceTokenStore> >(); using var s1 = store.OpenAsyncSession(); await s1.StoreAsync(new Entity.ReferenceToken { Id = "test", ClientId = "test", Data = serializer.Serialize(new Token { ClientId = "test" }) }, $"{nameof(Entity.ReferenceToken)}/test"); await s1.SaveChangesAsync(); using var session = store.OpenAsyncSession(); var sut = new ReferenceTokenStore(new ScopedAsynDocumentcSession(session), serializer, loggerMock.Object); var result = await sut.GetReferenceTokenAsync("test"); Assert.NotNull(result); }
public async Task RemoveReferenceTokenAsync_by_subjectId_clientId_should_delete_entity() { using var store = new RavenDbTestDriverWrapper().GetDocumentStore(); var serializer = new PersistentGrantSerializer(); var loggerMock = new Mock <ILogger <ReferenceTokenStore> >(); using var s1 = store.OpenAsyncSession(); await s1.StoreAsync(new Entity.ReferenceToken { Id = "test", ClientId = "test", UserId = "test", Data = serializer.Serialize(new Token { ClientId = "test" }) }, $"{nameof(Entity.ReferenceToken)}/test"); await s1.SaveChangesAsync(); using var session = store.OpenAsyncSession(); var sut = new ReferenceTokenStore(new ScopedAsynDocumentcSession(session), serializer, loggerMock.Object); await sut.RemoveReferenceTokensAsync("test", "test"); using var s2 = store.OpenAsyncSession(); var result = await s2.LoadAsync <Entity.ReferenceToken>($"{nameof(Entity.ReferenceToken)}/test"); Assert.Null(result); }
public async Task StoreReferenceTokenAsync_should_update_entity() { using var store = new RavenDbTestDriverWrapper().GetDocumentStore(); var serializer = new PersistentGrantSerializer(); var loggerMock = new Mock <ILogger <ReferenceTokenStore> >(); var token = new Token { ClientId = "test" }; using var s1 = store.OpenAsyncSession(); await s1.StoreAsync(new Entity.ReferenceToken { Id = "test", ClientId = "test", Data = serializer.Serialize(token) }, $"{nameof(Entity.ReferenceToken)}/test"); await s1.SaveChangesAsync(); using var session = store.OpenAsyncSession(); var sut = new ReferenceTokenStore(new ScopedAsynDocumentcSession(session), serializer, loggerMock.Object); var code = await sut.StoreReferenceTokenAsync(token); Assert.Equal("test", code); }
private static void CreateSut(out Mock <IAdminStore <ReferenceToken> > storeMock, out ReferenceTokenStore sut) { storeMock = new Mock <IAdminStore <ReferenceToken> >(); var serializerMock = new Mock <IPersistentGrantSerializer>(); sut = new ReferenceTokenStore(storeMock.Object, serializerMock.Object); }
public async Task RemoveReferenceTokenAsync_should_not_throw_when_entity_not_exist() { using var store = new RavenDbTestDriverWrapper().GetDocumentStore(); var serializer = new PersistentGrantSerializer(); var loggerMock = new Mock <ILogger <ReferenceTokenStore> >(); using var session = store.OpenAsyncSession(); var sut = new ReferenceTokenStore(new ScopedAsynDocumentcSession(session), serializer, loggerMock.Object); await sut.RemoveReferenceTokenAsync("test"); using var s2 = store.OpenAsyncSession(); var result = await s2.LoadAsync <Entity.ReferenceToken>($"{nameof(Entity.ReferenceToken)}/test"); Assert.Null(result); }
public async Task StoreReferenceTokenAsync_should_create_entity() { using var store = new RavenDbTestDriverWrapper().GetDocumentStore(); var serializer = new PersistentGrantSerializer(); var loggerMock = new Mock <ILogger <ReferenceTokenStore> >(); using var session = store.OpenAsyncSession(); var sut = new ReferenceTokenStore(new ScopedAsynDocumentcSession(session), serializer, loggerMock.Object); var code = await sut.StoreReferenceTokenAsync(new Token { ClientId = "test" }); using var s2 = store.OpenAsyncSession(); var result = await s2.LoadAsync <Entity.ReferenceToken>($"{nameof(Entity.ReferenceToken)}/{code}"); Assert.NotNull(result); }
// revoke access token only if it belongs to client doing the request private async Task <bool> RevokeAccessTokenAsync(TokenRevocationRequestValidationResult validationResult) { var token = await ReferenceTokenStore.GetReferenceTokenAsync(validationResult.Token); if (token != null) { if (token.ClientId == validationResult.Client.ClientId) { Logger.LogDebug("Access token revoked"); await ReferenceTokenStore.RemoveReferenceTokenAsync(validationResult.Token); } else { Logger.LogWarning("Client {clientId} tried to revoke an access token belonging to a different client: {clientId}", validationResult.Client.ClientId, token.ClientId); } return(true); } return(false); }