public async Task GetRolesForUser_Should_Retrieve_Correct_Roles()
        {
            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> roles = await roleStore.GetRolesForUser("RavenUsers/1");

                    Assert.Equal(2, roles.Count());
                    Assert.True(roles.Any(role => role.Equals("Admin", StringComparison.InvariantCultureIgnoreCase)));
                    Assert.True(roles.Any(role => role.Equals("Guest", StringComparison.InvariantCultureIgnoreCase)));
                }
        }
        public async Task GetRolesForUser_Should_Return_Empty_Enumerable_If_User_Does_Not_Exist()
        {
            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.SaveChangesAsync();

                IEnumerable<string> roles = await roleStore.GetRolesForUser("RavenUsers/2");

                Assert.Equal(0, roles.Count());
            }
        }
        public async Task GetRolesForUser_Should_Return_Empty_Enumerable_If_Roles_Property_Is_Null()
        {
            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 = "******" });
                await ses.SaveChangesAsync();

                IEnumerable<string> roles = await roleStore.GetRolesForUser("RavenUsers/1");

                Assert.Equal(0, roles.Count());
            }
        }
        public async Task GetRolesForUser_Should_Return_Empty_Enumerable_If_Roles_Property_Is_Null()
        {
            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 = "******" });

                    await ses.SaveChangesAsync();

                    IEnumerable <string> roles = await roleStore.GetRolesForUser("RavenUsers/1");

                    Assert.Equal(0, roles.Count());
                }
        }
        public async Task GetRolesForUser_Should_Retrieve_Correct_Roles()
        {
            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> roles = await roleStore.GetRolesForUser("RavenUsers/1");

                Assert.Equal(2, roles.Count());
                Assert.True(roles.Any(role => role.Equals("Admin", StringComparison.InvariantCultureIgnoreCase)));
                Assert.True(roles.Any(role => role.Equals("Guest", StringComparison.InvariantCultureIgnoreCase)));
            }
        }
        public async Task GetRolesForUser_Should_Return_Empty_Enumerable_If_User_Does_Not_Exist()
        {
            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.SaveChangesAsync();

                    IEnumerable <string> roles = await roleStore.GetRolesForUser("RavenUsers/2");

                    Assert.Equal(0, roles.Count());
                }
        }