public async Task UdpateAsync_should_notify_provider_updated() { using var documentStore = new RavenDbTestDriverWrapper().GetDocumentStore(); var services = new ServiceCollection() .AddLogging(); services.AddIdentity <IdentityUser, IdentityRole>() .AddRavenDbStores(p => documentStore); services.AddSingleton(p => documentStore) .AddAuthentication() .AddDynamic <SchemeDefinition>() .AddRavenDbStore() .AddGoogle(); IServiceProvider provider = services.AddIdentityServer4AdminRavenDbkStores <IdentityUser, IdentityRole>(p => documentStore).BuildServiceProvider(); using var scope = provider.CreateScope(); provider = scope.ServiceProvider; var manager = provider.GetRequiredService <PersistentDynamicManager <SchemeDefinition> >(); var serializer = provider.GetRequiredService <IAuthenticationSchemeOptionsSerializer>(); var mockProviderClient = new Mock <IProviderClient>(); mockProviderClient.Setup(m => m.ProviderUpdatedAsync(It.IsAny <string>(), It.IsAny <CancellationToken>())).Verifiable(); var id = Guid.NewGuid().ToString(); await manager.AddAsync(new SchemeDefinition { DisplayName = Guid.NewGuid().ToString(), Options = new GoogleOptions(), HandlerType = typeof(GoogleHandler), Scheme = id }); var sut = new ExternalProviderStore(manager, serializer, new ScopedAsynDocumentcSession(documentStore.OpenAsyncSession()), mockProviderClient.Object); var expected = Guid.NewGuid().ToString(); await sut.UpdateAsync(new Entity.ExternalProvider { DisplayName = expected, Id = id, SerializedHandlerType = serializer.SerializeType(typeof(GoogleHandler)), SerializedOptions = serializer.SerializeOptions(new GoogleOptions(), typeof(GoogleOptions)) } as object); mockProviderClient.Verify(); }
public async Task UdpateAsync_should_update_scheme() { using var documentStore = new RavenDbTestDriverWrapper().GetDocumentStore(); var services = new ServiceCollection() .AddLogging(); services.AddIdentity <IdentityUser, IdentityRole>() .AddRavenDbStores(p => documentStore); services.AddSingleton(p => documentStore) .AddAuthentication() .AddDynamic <SchemeDefinition>() .AddRavenDbStore() .AddGoogle(); IServiceProvider provider = services.AddIdentityServer4AdminRavenDbkStores <IdentityUser, IdentityRole>(p => documentStore).BuildServiceProvider(); using var scope = provider.CreateScope(); provider = scope.ServiceProvider; var manager = provider.GetRequiredService <PersistentDynamicManager <SchemeDefinition> >(); var serializer = provider.GetRequiredService <IAuthenticationSchemeOptionsSerializer>(); var id = Guid.NewGuid().ToString(); await manager.AddAsync(new SchemeDefinition { DisplayName = Guid.NewGuid().ToString(), Options = new GoogleOptions(), HandlerType = typeof(GoogleHandler), Scheme = id }); var sut = new ExternalProviderStore(manager, serializer, new ScopedAsynDocumentcSession(documentStore.OpenAsyncSession()), null); var expected = Guid.NewGuid().ToString(); await sut.UpdateAsync(new Entity.ExternalProvider { DisplayName = expected, Id = id, SerializedHandlerType = serializer.SerializeType(typeof(GoogleHandler)), SerializedOptions = serializer.SerializeOptions(new GoogleOptions(), typeof(GoogleOptions)) } as object); var scheme = await manager.FindBySchemeAsync(id); Assert.Equal(expected, scheme.DisplayName); }