public MembershipResult ResetPassowrd(ResetPasswordRequest request) { if (request == null) { throw new ArgumentNullException("request"); } MembershipResult result = new MembershipResult(); var customer = CustomerProvider.QueryByUserName(request.Username); #region Validation if (customer == null) { result.Errors.Add("The customer does not exists.".Localize()); } if (request.ResetPasswordToken != customer.Membership.ResetPasswordToken) { result.Errors.Add("Invalid token.".Localize()); } #endregion if (result.Success) { var encryptedPwd = PasswordEncryptor.EncryptPassword(request.NewPassword, customer.Membership.PasswordSalt); customer.Membership.Password = encryptedPwd; customer.Membership.ResetPasswordToken = null; CustomerService.Update(customer); } return result; }
public void Test_ResetPassowrdResult_Invalid_Token() { var customer = new Customer() { Username = "******", Email = "*****@*****.**", Membership = new Membership() { Password = "******", IsApproved = true, ResetPasswordToken = "123456" } }; var customerProvider = new Mock<ICustomerProvider>(); customerProvider.Setup(it => it.QueryByUserName("test")) .Returns(customer); var customerService = new Mock<ICustomerService>(); Customer updateCustomer = null; customerService.Setup(it => it.Update(It.IsAny<Customer>())) .Callback<Customer>((c) => { updateCustomer = c; }); var passwordEncryptor = new Mock<IPasswordEncryptor>(); passwordEncryptor.Setup(it => it.EncryptPassword(It.IsAny<string>(), It.IsAny<string>())) .Returns<string, string>((p, salt) => p); CustomerMembershipService customerMemberhipService = new CustomerMembershipService( customerProvider.Object, customerService.Object, passwordEncryptor.Object); ResetPasswordRequest request = new ResetPasswordRequest() { Username = "******", NewPassword = "******", ResetPasswordToken = "abc123" }; var result = customerMemberhipService.ResetPassowrd(request); Assert.IsFalse(result.Success); Assert.AreEqual("Invalid token.", result.Errors[0]); Assert.IsNull(updateCustomer); }