2013-05-28 63 views
0

好吧我正在寫一個會員密碼更改的測試。下面的代碼是我到目前爲止。我需要一些幫助來檢查密碼格式。最小字符長度爲7,最大長度爲8.測試密碼格式

此外,我可以測試密碼格式是否清晰,但是如何測試加密格式?

任何人都可以協助嗎?

[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); 
     } 

    } 
+0

最大長度爲8的密碼?你爲什麼要限制它? – 1615903

+0

你說min的長度是7,但是你的測試全部少於7個字符。如前所述,絕對沒有理由限制密碼的最大長度。你將存儲一個散列,而不是實際的密碼(你是吧?),所以你甚至不會保存少量的磁盤空間,因爲你的密碼散列長度都是相同的。 – Sysyphus

回答

1

一個選擇是編寫擴展方法針對AsaMembershipProvider這將驗證密碼,然後從內部調用它ChangePassword做實際變化

這種方法的缺點是,你將有更多的代碼保持

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); 
    } 

} 

你的測試代碼現在應該叫prov.ChangePasswordprov.ChangePasswordEx