public async Task GetUsersInRoles_Should_Return_Enumberable_Empty_If_There_Is_No_user_In_Role()
        {
            using (IDocumentStore store = CreateEmbeddableStore())
                using (IAsyncDocumentSession ses = store.OpenAsyncSession())
                {
                    IRoleStore roleStore = new RavenRoleStore <RavenUser, RavenUserRole>(ses);
                    await ses.StoreAsync(new RavenUser { Id = "RavenUsers/1", UserName = "******", Roles = new List <RavenUserRole> {
                                                             new RavenUserRole {
                                                                 Id = "Admin"
                                                             }, new RavenUserRole {
                                                                 Id = "Guest"
                                                             }
                                                         } });

                    await ses.StoreAsync(new RavenUser { Id = "RavenUsers/2", UserName = "******", Roles = new List <RavenUserRole> {
                                                             new RavenUserRole {
                                                                 Id = "Admin"
                                                             }
                                                         } });

                    await ses.StoreAsync(new RavenUser { Id = "RavenUsers/3", UserName = "******", Roles = new List <RavenUserRole> {
                                                             new RavenUserRole {
                                                                 Id = "Guest"
                                                             }
                                                         } });

                    await ses.SaveChangesAsync();

                    IEnumerable <string> users = await roleStore.GetUsersInRoles("Sales");

                    Assert.NotNull(users);
                    Assert.False(users.Any());
                }
        }
        public async Task GetUsersInRoles_Should_Return_Correct_Usurs_In_Role()
        {
            using (IDocumentStore store = CreateEmbeddableStore())
                using (IAsyncDocumentSession ses = store.OpenAsyncSession())
                {
                    IRoleStore roleStore = new RavenRoleStore <RavenUser, RavenUserRole>(ses);
                    await ses.StoreAsync(new RavenUser { Id = "RavenUsers/1", UserName = "******", Roles = new List <RavenUserRole> {
                                                             new RavenUserRole {
                                                                 Id = "Admin"
                                                             }, new RavenUserRole {
                                                                 Id = "Guest"
                                                             }
                                                         } });

                    await ses.StoreAsync(new RavenUser { Id = "RavenUsers/2", UserName = "******", Roles = new List <RavenUserRole> {
                                                             new RavenUserRole {
                                                                 Id = "Admin"
                                                             }
                                                         } });

                    await ses.StoreAsync(new RavenUser { Id = "RavenUsers/3", UserName = "******", Roles = new List <RavenUserRole> {
                                                             new RavenUserRole {
                                                                 Id = "Guest"
                                                             }
                                                         } });

                    await ses.SaveChangesAsync();

                    IEnumerable <string> users = await roleStore.GetUsersInRoles("Admin");

                    Assert.Equal(2, users.Count());
                    Assert.Equal("RavenUsers/1", users.ElementAt(0), StringComparer.InvariantCultureIgnoreCase);
                    Assert.Equal("RavenUsers/2", users.ElementAt(1), StringComparer.InvariantCultureIgnoreCase);
                }
        }
        public void GetUsersInRoles_Should_Throw_ArgumentException_If_RoleId_Param_Is_Whitespace()
        {
            using (IDocumentStore store = CreateEmbeddableStore())
                using (IAsyncDocumentSession ses = store.OpenAsyncSession())
                {
                    IRoleStore roleStore = new RavenRoleStore <RavenUser, RavenUserRole>(ses);

                    Assert.Throws <ArgumentException>(() =>
                    {
                        try
                        {
                            roleStore.GetUsersInRoles(" ").Wait();
                        }
                        catch (AggregateException ex)
                        {
                            throw ex.GetBaseException();
                        }
                    });
                }
        }
        public void GetUsersInRoles_Should_Throw_ArgumentException_If_RoleId_Param_Is_Whitespace()
        {
            using (IDocumentStore store = CreateEmbeddableStore())
            using (IAsyncDocumentSession ses = store.OpenAsyncSession())
            {
                IRoleStore roleStore = new RavenRoleStore<RavenUser, RavenUserRole>(ses);

                Assert.Throws<ArgumentException>(() =>
                {
                    try
                    {
                        roleStore.GetUsersInRoles(" ").Wait();
                    }
                    catch (AggregateException ex)
                    {
                        throw ex.GetBaseException();
                    }
                });
            }
        }
        public async Task GetUsersInRoles_Should_Return_Enumberable_Empty_If_There_Is_No_user_In_Role()
        {
            using (IDocumentStore store = CreateEmbeddableStore())
            using (IAsyncDocumentSession ses = store.OpenAsyncSession())
            {
                IRoleStore roleStore = new RavenRoleStore<RavenUser, RavenUserRole>(ses);
                await ses.StoreAsync(new RavenUser { Id = "RavenUsers/1", UserName = "******", Roles = new List<RavenUserRole> { new RavenUserRole { Id = "Admin" }, new RavenUserRole { Id = "Guest" } } });
                await ses.StoreAsync(new RavenUser { Id = "RavenUsers/2", UserName = "******", Roles = new List<RavenUserRole> { new RavenUserRole { Id = "Admin" } } });
                await ses.StoreAsync(new RavenUser { Id = "RavenUsers/3", UserName = "******", Roles = new List<RavenUserRole> { new RavenUserRole { Id = "Guest" } } });
                await ses.SaveChangesAsync();

                IEnumerable<string> users = await roleStore.GetUsersInRoles("Sales");

                Assert.NotNull(users);
                Assert.False(users.Any());
            }
        }
        public async Task GetUsersInRoles_Should_Return_Correct_Usurs_In_Role()
        {
            using (IDocumentStore store = CreateEmbeddableStore())
            using(IAsyncDocumentSession ses = store.OpenAsyncSession())
            {
                IRoleStore roleStore = new RavenRoleStore<RavenUser, RavenUserRole>(ses);
                await ses.StoreAsync(new RavenUser { Id = "RavenUsers/1", UserName = "******", Roles = new List<RavenUserRole> { new RavenUserRole { Id = "Admin" }, new RavenUserRole { Id = "Guest" } } });
                await ses.StoreAsync(new RavenUser { Id = "RavenUsers/2", UserName = "******", Roles = new List<RavenUserRole> { new RavenUserRole { Id = "Admin" } } });
                await ses.StoreAsync(new RavenUser { Id = "RavenUsers/3", UserName = "******", Roles = new List<RavenUserRole> { new RavenUserRole { Id = "Guest" } } });
                await ses.SaveChangesAsync();

                IEnumerable<string> users = await roleStore.GetUsersInRoles("Admin");

                Assert.Equal(2, users.Count());
                Assert.Equal("RavenUsers/1", users.ElementAt(0), StringComparer.InvariantCultureIgnoreCase);
                Assert.Equal("RavenUsers/2", users.ElementAt(1), StringComparer.InvariantCultureIgnoreCase);
            }
        }