2013-05-10 73 views
1

有人可以提供一些示例代码来验证用户密码的单元测试吗?单元测试验证密码

  //set test to crate user 
      AsaMembershipProvider prov = this.GetMembershipProvider(); 
      //call get user 
      MembershipCreateStatus status; 
      MembershipUser user = prov.CreateUser("testUserX", "12345", "[email protected]", "", "", true, null, out status); 
      user = prov.GetUser("testUserX", false); 



      //TODO Asserts 
      Assert.AreEqual(status, MembershipCreateStatus.Success); 
      Assert.AreEqual(user.UserName, "testUserX"); 
      Assert.AreEqual(user.Email, "[email protected]"); 
      //Assert.AreEqual(password, "12345"); 
+0

编辑你的问题与你的评论的内容,它会帮助可读性。其次,你应该能够从某个地方获取密码哈希值。只需测试以确保“12345”的散列和数据库中的散列匹配。 – 2013-05-10 18:30:13

+0

你可以发布其余的测试代码吗? – 2013-05-10 18:30:53

+1

不应该断言状态==成功就够了?为什么您需要在会员供应商的单元测试中验证密码(和用户名)? – rivarolle 2013-05-10 18:34:15

回答

2

如果你想断言密码是正确的,反而声称你能够验证,而不是直接测试密码。测试提供者的功能有点多余。

Assert.AreEqual(status, MembershipCreateStatus.Success); 

var isAuthenticated = Membership.ValidateUser(user.Username, "12345"); 

Assert.IsTrue(isAuthenticated); 
Assert.AreEqual(user.UserName, "testUserX"); 
Assert.AreEqual(user.Email, "[email protected]"); 
+0

这很有道理。谢谢 – user216672 2013-05-10 18:44:37

+0

很高兴帮助! – 2013-05-10 18:44:54