public MembershipResult ChangePassword(ChangePasswordRequest 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()); } MembershipResult validateResult = null; if (string.IsNullOrEmpty(request.OldPassword) || !((validateResult = Validate(customer, request.OldPassword)).Success)) { if (validateResult != null) { result.Errors.AddRange(validateResult.Errors); } } if (string.IsNullOrEmpty(request.NewPassword)) { result.Errors.Add("Invalid new password.".Localize()); } #endregion if (result.Success) { var encryptedPwd = PasswordEncryptor.EncryptPassword(request.NewPassword, customer.Membership.PasswordSalt); customer.Membership.Password = encryptedPwd; CustomerService.Update(customer); } return result; }
public void Test_ChangePassword() { var customer = new Customer() { Username = "******", Email = "*****@*****.**", Membership = new Membership() { Password = "******", IsApproved = true } }; 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); ChangePasswordRequest request = new ChangePasswordRequest() { Username = "******", NewPassword = "******", OldPassword = "******" }; var result = customerMemberhipService.ChangePassword(request); Assert.IsTrue(result.Success); Assert.IsNotNull(updateCustomer); Assert.AreEqual(request.Username, updateCustomer.Username); Assert.AreEqual(request.NewPassword, updateCustomer.Membership.Password); }