public void GetPasswordWithNullValuesTest()
        {
            MembershipCreateStatus status;
            var mongoProvider = new MongoMembershipProvider();
            NameValueCollection config = new NameValueCollection
            {
                {"connectionStringName", ConfigurationManager.ConnectionStrings[0].Name},
                {"requiresQuestionAndAnswer", "false"},
                {"enablePasswordRetrieval", "true"},
                {"passwordFormat", MembershipPasswordFormat.Clear.ToString()}
            };
            mongoProvider.Initialize(null, config);

            MembershipUser user = mongoProvider.CreateUser("foo", "barbar!", "*****@*****.**", null, null, true, null, out status);
            Assert.IsNotNull(user);

            string pw = mongoProvider.GetPassword("foo", null);
            Assert.AreEqual("barbar!", pw);
        }
        public void GetPasswordWithWrongAnswerTest()
        {
            MembershipCreateStatus status;
            var provider1 = new MongoMembershipProvider();
            var config = new NameValueCollection
            {
                {"connectionStringName", ConfigurationManager.ConnectionStrings[0].Name},
                {"requiresQuestionAndAnswer", "true"},
                {"enablePasswordRetrieval", "true"},
                {"passwordFormat", "Encrypted"}
            };
            provider1.Initialize(null, config);
            provider1.CreateUser("foo", "barbar!", "*****@*****.**", "color", "blue", true, null, out status);

            var provider2 = new MongoMembershipProvider();
            NameValueCollection config2 = new NameValueCollection
            {
                {"connectionStringName", ConfigurationManager.ConnectionStrings[0].Name},
                {"requiresQuestionAndAnswer", "true"},
                {"enablePasswordRetrieval", "true"},
                {"passwordFormat", "Encrypted"}
            };
            provider2.Initialize(null, config2);

            try
            {
                string pw = provider2.GetPassword("foo", "wrong");
                Assert.Fail("Should have  failed");
            }
            catch (MembershipPasswordException)
            {
            }
        }
        public void GetPasswordTest(bool requireQA, bool enablePasswordRetrieval, string answer)
        {
            MembershipCreateStatus status;

            var mongoProvider = new MongoMembershipProvider();
            var config = new NameValueCollection
            {
                {"connectionStringName", ConfigurationManager.ConnectionStrings[0].Name},
                {"requiresQuestionAndAnswer", requireQA.ToString()},
                {"enablePasswordRetrieval", enablePasswordRetrieval.ToString()},
                {"passwordStrengthRegularExpression", "bar.*"},
                {"passwordFormat", MembershipPasswordFormat.Clear.ToString()},
                {"writeExceptionsToEventLog", bool.FalseString}
            };
            mongoProvider.Initialize("MongoMembershipProvider", config);

            mongoProvider.CreateUser("foo", "barbar!", "*****@*****.**", "color", "blue", true, null, out status);

            try
            {
                string password = mongoProvider.GetPassword("foo", answer);
                if (!enablePasswordRetrieval)
                {
                    Assert.Fail("This should have thrown an exception");
                }
                Assert.AreEqual("barbar!", password);
            }
            catch (Exception)
            {
                if (requireQA && answer != null)
                {
                    Assert.Fail("This should not have thrown an exception");
                }
            }
        }