public void TestAddUsersToRoles()
        {
            var membershipConfig = new NameValueCollection(_membershipConfig);
            var roleConfig = new NameValueCollection(_roleConfig);

            var membershipProvider = new MongoMembershipProvider();
            membershipProvider.Initialize(DefaultMembershipName, membershipConfig);

            var roleProvider = new MongoRoleProvider();
            roleProvider.Initialize(DefaultRoleName, roleConfig);

            MembershipCreateStatus status;
            membershipProvider.CreateUser("user1", "123456", "*****@*****.**", null, null, true, null, out status);
            membershipProvider.CreateUser("user2", "123456", "*****@*****.**", null, null, true, null, out status);

            roleProvider.CreateRole("role1");
            roleProvider.CreateRole("role2");

            roleProvider.AddUsersToRoles(new[] { "user1", "user2" }, new[] { "role1", "role2" });
            Assert.IsTrue(roleProvider.IsUserInRole("user1", "role1"));
            Assert.IsTrue(roleProvider.IsUserInRole("user1", "role2"));
            Assert.IsTrue(roleProvider.IsUserInRole("user2", "role1"));
            Assert.IsTrue(roleProvider.IsUserInRole("user2", "role2"));
        }
        public void TestRemoveUsersFromRolesWhenNotInRole()
        {
            var membershipConfig = new NameValueCollection(_membershipConfig);
            var roleConfig = new NameValueCollection(_roleConfig);

            var membershipProvider = new MongoMembershipProvider();
            membershipProvider.Initialize(DefaultMembershipName, membershipConfig);

            var roleProvider = new MongoRoleProvider();
            roleProvider.Initialize(DefaultRoleName, roleConfig);

            MembershipCreateStatus status;
            membershipProvider.CreateUser("user1", "123456", "*****@*****.**", null, null, true, null, out status);
            membershipProvider.CreateUser("user2", "123456", "*****@*****.**", null, null, true, null, out status);

            roleProvider.CreateRole("role1");
            roleProvider.CreateRole("role2");
            roleProvider.CreateRole("role3");

            roleProvider.AddUsersToRoles(new[] { "user1", "user2" }, new[] { "role1", "role2" });
            Assert.Throws<ProviderException>(
                () => roleProvider.RemoveUsersFromRoles(new[] {"user1", "user2"}, new[] {"role1", "role3"}));
        }
        public void TestGetUsersInRole()
        {
            var membershipConfig = new NameValueCollection(_membershipConfig);
            var roleConfig = new NameValueCollection(_roleConfig);

            var membershipProvider = new MongoMembershipProvider();
            membershipProvider.Initialize(DefaultMembershipName, membershipConfig);

            var roleProvider = new MongoRoleProvider();
            roleProvider.Initialize(DefaultRoleName, roleConfig);

            MembershipCreateStatus status;
            membershipProvider.CreateUser("user1", "123456", "*****@*****.**", null, null, true, null, out status);
            membershipProvider.CreateUser("user2", "123456", "*****@*****.**", null, null, true, null, out status);
            membershipProvider.CreateUser("user3", "123456", "*****@*****.**", null, null, true, null, out status);

            roleProvider.CreateRole("role1");

            roleProvider.AddUsersToRoles(new[] { "user1", "user2" }, new[] { "role1" });

            var userNames = roleProvider.GetUsersInRole("role1");
            Assert.AreEqual(2, userNames.Length);
            Assert.Contains("user1", userNames);
            Assert.Contains("user2", userNames);
        }
        public void TestGetRolesForUserWhenHasUserDoesNotExist()
        {
            var membershipConfig = new NameValueCollection(_membershipConfig);
            var roleConfig = new NameValueCollection(_roleConfig);

            var membershipProvider = new MongoMembershipProvider();
            membershipProvider.Initialize(DefaultMembershipName, membershipConfig);

            var roleProvider = new MongoRoleProvider();
            roleProvider.Initialize(DefaultRoleName, roleConfig);

            MembershipCreateStatus status;
            membershipProvider.CreateUser("user1", "123456", "*****@*****.**", null, null, true, null, out status);
            membershipProvider.CreateUser("user2", "123456", "*****@*****.**", null, null, true, null, out status);
            roleProvider.CreateRole("role1");
            roleProvider.CreateRole("role2");
            roleProvider.CreateRole("role3");
            roleProvider.AddUsersToRoles(new[] { "user1", }, new[] { "role1", "role2" });

            var roles = roleProvider.GetRolesForUser("user3");
            Assert.AreEqual(0, roles.Length);
        }
        public void TestFindUsersInRoleWithNonRegex()
        {
            var membershipConfig = new NameValueCollection(_membershipConfig);
            var roleConfig = new NameValueCollection(_roleConfig);

            var membershipProvider = new MongoMembershipProvider();
            membershipProvider.Initialize(DefaultMembershipName, membershipConfig);

            var roleProvider = new MongoRoleProvider();
            roleProvider.Initialize(DefaultRoleName, roleConfig);

            MembershipCreateStatus status;
            membershipProvider.CreateUser("aaaa", "123456", "*****@*****.**", null, null, true, null, out status);
            membershipProvider.CreateUser("aabb", "123456", "*****@*****.**", null, null, true, null, out status);
            membershipProvider.CreateUser("bbaa", "123456", "*****@*****.**", null, null, true, null, out status);
            membershipProvider.CreateUser("aacc", "123456", "*****@*****.**", null, null, true, null, out status);

            roleProvider.CreateRole("role1");
            roleProvider.CreateRole("role2");

            roleProvider.AddUsersToRoles(new[] { "aaaa", "aabb", "bbaa" }, new[] { "role1" });
            roleProvider.AddUsersToRoles(new[] { "aacc" }, new[] { "role2" });

            var userNames = roleProvider.FindUsersInRole("role1", "aa");
            Assert.AreEqual(3, userNames.Length);
            Assert.Contains("aaaa", userNames);
            Assert.Contains("aabb", userNames);
            Assert.Contains("bbaa", userNames);
        }
        public void TestDeleteRoleWhenPopulatedWithNoThrowOnPopulated()
        {
            var membershipConfig = new NameValueCollection(_membershipConfig);
            var roleConfig = new NameValueCollection(_roleConfig);

            var membershipProvider = new MongoMembershipProvider();
            membershipProvider.Initialize(DefaultMembershipName, membershipConfig);

            var roleProvider = new MongoRoleProvider();
            roleProvider.Initialize(DefaultRoleName, roleConfig);

            MembershipCreateStatus status;
            membershipProvider.CreateUser("user1", "123456", "*****@*****.**", null, null, true, null, out status);
            membershipProvider.CreateUser("user2", "123456", "*****@*****.**", null, null, true, null, out status);

            roleProvider.CreateRole("role1");
            roleProvider.CreateRole("role2");

            roleProvider.AddUsersToRoles(new[] { "user1", "user2" }, new[] { "role1", "role2" });

            roleProvider.DeleteRole("role1", false);
            Assert.IsFalse(roleProvider.RoleExists("role1"));
            Assert.Throws<ArgumentException>(() => roleProvider.IsUserInRole("user1", "role1"));
        }
        public void TestAddUsersToRolesWithNonExistantUserNames()
        {
            var membershipConfig = new NameValueCollection(_membershipConfig);
            var roleConfig = new NameValueCollection(_roleConfig);

            var membershipProvider = new MongoMembershipProvider();
            membershipProvider.Initialize(DefaultMembershipName, membershipConfig);

            var roleProvider = new MongoRoleProvider();
            roleProvider.Initialize(DefaultRoleName, roleConfig);

            Assert.Throws<ProviderException>(
                () => roleProvider.AddUsersToRoles(new[] {"user1", "user2"}, new[] {"role1", "role2"}));
        }