コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }