user216672
user216672

Reputation: 151

Testing Password format

Ok I am writeing a test for a membership password change. The code below is what I have so far. I need some assistance to check the password format. Min char length is 7 and max length is 8.

Also the I can test if the password format is clear, but how do I test an encrypted format?

Can anyone assist?

    [TestMethod]
    public void TestChangePassword()
    {
        try      
        {
            AsaMembershipProvider prov = this.GetMembershipProvider();
            MembershipCreateStatus status;

            //creates user
            MembershipUser user = prov.CreateUser("testUserX", "12345", "[email protected]", "", "", true, null, out status);

            //gets user
            user = prov.GetUser("testUserX", false); 
            Assert.AreEqual(user.UserName, "testUserX");

            //Authenticates username and password
            var isAuthenticated = prov.ValidateUser(user.UserName, "12345");
            Assert.IsTrue(isAuthenticated);


            //changes password
            prov.ChangePassword("testUserX",  "12345", "ABCDE");

            //Validates password has been changed
            prov.ValidateUser(user.UserName, "ABCDE");
            Assert.IsTrue(isAuthenticated);

            // Change password back
            prov.ChangePassword("testUserX", "ABCDE", "12345");

            //Validates password has been changed back
            prov.ValidateUser(user.UserName, "12345");


            //Deletes User
            prov.DeleteUser("testUserX", true);
            //tries to get user again
            user = prov.GetUser("testUserX", false);
            //test that no user is returned
            Assert.AreEqual(null, user);

        }
        catch (Exception ex)
        {
            LogMessage(ex);
            Assert.Fail(ex.Message);
        }

    }

Upvotes: 0

Views: 620

Answers (1)

Chintana Meegamarachchi
Chintana Meegamarachchi

Reputation: 1820

One option would be to write an extension method targeting AsaMembershipProvider which would validate the password and then call ChangePassword from within it to do the actual change

The downside of the approach is that you will have more code to maintain

public static class CryptoExtensions {

    public static void ChangePasswordEx(this AsaMembershipProvider mp, string username, string oldPassword, string newPassword){
        // validate format of the password
        if (true /*validation code*/ )
        {
            throw new Exception("Invalid password format");
        }

        // rest of the code to encrypt and store the password
        mp.ChangePassword(username, oldPassword, newPassword);
    }

}

Your test code should now call prov.ChangePassword with prov.ChangePasswordEx

Upvotes: 1

Related Questions