Esempio n. 1
0
        public async Task GetAsync_should_find_claims()
        {
            var provider = new ServiceCollection()
                           .AddLogging()
                           .AddDbContext <IdentityDbContext <IdentityUser> >(options => options.UseInMemoryDatabase(Guid.NewGuid().ToString()))
                           .AddIdentity <IdentityUser, IdentityRole>()
                           .AddEntityFrameworkStores <IdentityDbContext <IdentityUser> >()
                           .Services.BuildServiceProvider();

            var userManager = provider.GetRequiredService <UserManager <IdentityUser> >();
            var context     = provider.GetRequiredService <IdentityDbContext <IdentityUser> >();
            var sut         = new IdentityUserClaimStore <IdentityUser>(userManager, context, provider.GetRequiredService <ILogger <IdentityUserClaimStore <IdentityUser> > >());

            var user = new IdentityUser
            {
                Id       = Guid.NewGuid().ToString(),
                UserName = Guid.NewGuid().ToString(),
                Email    = "*****@*****.**"
            };
            await userManager.CreateAsync(user).ConfigureAwait(false);

            await userManager.AddClaimAsync(user, new Claim(Guid.NewGuid().ToString(), Guid.NewGuid().ToString())).ConfigureAwait(false);

            var result = await sut.GetAsync(new PageRequest
            {
                Filter = $"{nameof(Entity.UserClaim.UserId)} eq '{user.Id}'"
            }).ConfigureAwait(false);

            Assert.NotNull(result);
            Assert.Single(result.Items);
        }
Esempio n. 2
0
        public async Task GetAsync_by_id_should_return_claim()
        {
            var provider = new ServiceCollection()
                           .AddLogging()
                           .AddDbContext <IdentityDbContext <IdentityUser> >(options => options.UseInMemoryDatabase(Guid.NewGuid().ToString()))
                           .AddIdentity <IdentityUser, IdentityRole>()
                           .AddEntityFrameworkStores <IdentityDbContext <IdentityUser> >()
                           .Services.BuildServiceProvider();

            var userManager = provider.GetRequiredService <UserManager <IdentityUser> >();
            var context     = provider.GetRequiredService <IdentityDbContext <IdentityUser> >();
            var sut         = new IdentityUserClaimStore <IdentityUser>(userManager, context, provider.GetRequiredService <ILogger <IdentityUserClaimStore <IdentityUser> > >());

            var user = new IdentityUser
            {
                Id       = Guid.NewGuid().ToString(),
                UserName = Guid.NewGuid().ToString(),
                Email    = "*****@*****.**"
            };
            await userManager.CreateAsync(user).ConfigureAwait(false);

            Assert.Null(await sut.GetAsync("1", null).ConfigureAwait(false));

            await userManager.AddClaimAsync(user, new Claim(Guid.NewGuid().ToString(), Guid.NewGuid().ToString())).ConfigureAwait(false);

            var result = await sut.GetAsync("1", null).ConfigureAwait(false);

            Assert.NotNull(result);
        }
Esempio n. 3
0
        public async Task DeleteAsync_should_not_throw_on_not_found()
        {
            var provider = new ServiceCollection()
                           .AddLogging()
                           .AddDbContext <IdentityDbContext <IdentityUser> >(options => options.UseInMemoryDatabase(Guid.NewGuid().ToString()))
                           .AddIdentity <IdentityUser, IdentityRole>()
                           .AddEntityFrameworkStores <IdentityDbContext <IdentityUser> >()
                           .Services.BuildServiceProvider();

            var userManager = provider.GetRequiredService <UserManager <IdentityUser> >();
            var context     = provider.GetRequiredService <IdentityDbContext <IdentityUser> >();
            var sut         = new IdentityUserClaimStore <IdentityUser>(userManager, context, provider.GetRequiredService <ILogger <IdentityUserClaimStore <IdentityUser> > >());

            await sut.DeleteAsync("0").ConfigureAwait(false);

            Assert.True(true);
        }
Esempio n. 4
0
        public async Task UpdateAsync_should_throw_on_not_found()
        {
            var provider = new ServiceCollection()
                           .AddLogging()
                           .AddDbContext <IdentityDbContext <IdentityUser> >(options => options.UseInMemoryDatabase(Guid.NewGuid().ToString()))
                           .AddIdentity <IdentityUser, IdentityRole>()
                           .AddEntityFrameworkStores <IdentityDbContext <IdentityUser> >()
                           .Services.BuildServiceProvider();

            var userManager = provider.GetRequiredService <UserManager <IdentityUser> >();
            var context     = provider.GetRequiredService <IdentityDbContext <IdentityUser> >();
            var sut         = new IdentityUserClaimStore <IdentityUser>(userManager, context, provider.GetRequiredService <ILogger <IdentityUserClaimStore <IdentityUser> > >());

            await Assert.ThrowsAsync <DbUpdateException>(() => sut.UpdateAsync(new Entity.UserClaim
            {
                Id = "0"
            } as object)).ConfigureAwait(false);
        }
Esempio n. 5
0
        public async Task GetAsync_by_page_request_should_find_role_claims()
        {
            using var documentStore = new RavenDbTestDriverWrapper().GetDocumentStore();
            var services = new ServiceCollection()
                           .AddLogging();

            services.AddIdentity <IdentityUser, IdentityRole>()
            .AddRavenDbStores(p => documentStore);

            IServiceProvider provider = services.AddIdentityServer4AdminRavenDbkStores <IdentityUser, IdentityRole>(p => documentStore).BuildServiceProvider();

            using var scope = provider.CreateScope();
            provider        = scope.ServiceProvider;

            var userManager = provider.GetRequiredService <UserManager <IdentityUser> >();

            var user = new IdentityUser
            {
                Id             = Guid.NewGuid().ToString(),
                Email          = "*****@*****.**",
                EmailConfirmed = true,
                UserName       = Guid.NewGuid().ToString()
            };
            var roleResult = await userManager.CreateAsync(user);

            Assert.True(roleResult.Succeeded);
            await userManager.AddClaimAsync(user, new Claim(Guid.NewGuid().ToString(), Guid.NewGuid().ToString()));

            await userManager.AddClaimAsync(user, new Claim(Guid.NewGuid().ToString(), Guid.NewGuid().ToString()));

            await userManager.AddClaimAsync(user, new Claim(Guid.NewGuid().ToString(), Guid.NewGuid().ToString()));

            var sut = new IdentityUserClaimStore <IdentityUser>(userManager, new ScopedAsynDocumentcSession(documentStore.OpenAsyncSession()), provider.GetRequiredService <ILogger <IdentityUserClaimStore <IdentityUser> > >());

            var claimsResult = await sut.GetAsync(new PageRequest
            {
                Filter = $"UserId eq '{user.Id}'",
                Take   = 1
            });

            Assert.NotNull(claimsResult);
            Assert.Equal(3, claimsResult.Count);
            Assert.Single(claimsResult.Items);
        }
Esempio n. 6
0
        public async Task UdpateAsync_should_update_claim()
        {
            using var documentStore = new RavenDbTestDriverWrapper().GetDocumentStore();
            var services = new ServiceCollection()
                           .AddLogging();

            services.AddIdentity <IdentityUser, IdentityRole>()
            .AddRavenDbStores(p => documentStore);

            IServiceProvider provider = services.AddIdentityServer4AdminRavenDbkStores <IdentityUser, IdentityRole>(p => documentStore).BuildServiceProvider();

            using var scope = provider.CreateScope();
            provider        = scope.ServiceProvider;

            var userManager = provider.GetRequiredService <UserManager <IdentityUser> >();
            var user        = new IdentityUser
            {
                Id             = Guid.NewGuid().ToString(),
                Email          = "*****@*****.**",
                EmailConfirmed = true,
                UserName       = Guid.NewGuid().ToString()
            };
            var result = await userManager.CreateAsync(user);

            Assert.True(result.Succeeded);
            result = await userManager.AddClaimAsync(user, new Claim("test", "test"));

            Assert.True(result.Succeeded);

            var sut = new IdentityUserClaimStore <IdentityUser>(userManager, new ScopedAsynDocumentcSession(documentStore.OpenAsyncSession()), provider.GetRequiredService <ILogger <IdentityUserClaimStore <IdentityUser> > >());
            await sut.UpdateAsync(new Entity.UserClaim
            {
                Id         = $"{user.Id}@0",
                UserId     = user.Id,
                ClaimType  = Guid.NewGuid().ToString(),
                ClaimValue = Guid.NewGuid().ToString()
            } as object);

            var claims = await userManager.GetClaimsAsync(user);

            Assert.Single(claims);
            Assert.NotEqual("test", claims.First().Type);
            Assert.NotEqual("test", claims.First().Value);
        }
Esempio n. 7
0
        public async Task CreateAsync_should_return_claim_id()
        {
            using var documentStore = new RavenDbTestDriverWrapper().GetDocumentStore();
            var services = new ServiceCollection()
                           .AddLogging();

            services.AddIdentity <IdentityUser, IdentityRole>()
            .AddRavenDbStores(p => documentStore);

            IServiceProvider provider = services.AddIdentityServer4AdminRavenDbkStores <IdentityUser, IdentityRole>(p => documentStore).BuildServiceProvider();

            using var scope = provider.CreateScope();
            provider        = scope.ServiceProvider;

            var userManager = provider.GetRequiredService <UserManager <IdentityUser> >();
            var user        = new IdentityUser
            {
                Id             = Guid.NewGuid().ToString(),
                Email          = "*****@*****.**",
                EmailConfirmed = true,
                UserName       = Guid.NewGuid().ToString()
            };
            var roleResult = await userManager.CreateAsync(user);

            Assert.True(roleResult.Succeeded);

            var sut    = new IdentityUserClaimStore <IdentityUser>(userManager, new ScopedAsynDocumentcSession(documentStore.OpenAsyncSession()), provider.GetRequiredService <ILogger <IdentityUserClaimStore <IdentityUser> > >());
            var result = await sut.CreateAsync(new Entity.UserClaim
            {
                ClaimType  = "test",
                ClaimValue = "test",
                UserId     = user.Id
            } as object);


            Assert.NotNull(result);
            Assert.NotNull(((Entity.UserClaim)result).Id);
        }