public MembershipResult Register(RegistrationRequest request) { if (request == null) { throw new ArgumentNullException("request"); } MembershipResult result = new MembershipResult(); #region Validation if (string.IsNullOrEmpty(request.Username)) { result.Errors.Add("Invalid username".Localize()); } if (string.IsNullOrEmpty(request.Email) || !Regex.IsMatch(request.Email, Kooboo.RegexPatterns.EmailAddress)) { result.Errors.Add("Invalid email.".Localize()); } if (CustomerProvider.QueryByUserName(request.Username) != null) { result.Errors.Add("The username already exists.".Localize()); } if (CustomerProvider.QueryByEmail(request.Email) != null) { result.Errors.Add("The email already exists.".Localize()); } if (string.IsNullOrEmpty(request.Password)) { result.Errors.Add("Invalid password.".Localize()); } #endregion if (result.Success) { var passwordSalt = PasswordEncryptor.GenerateSalt(); var encryptedPwd = PasswordEncryptor.EncryptPassword(request.Password, passwordSalt); var customer = new Customer() { Username = request.Username, Email = request.Email, Membership = new Membership() { Password = encryptedPwd, PasswordSalt = passwordSalt, IsApproved = request.IsApproved, UtcCreationDate = DateTime.UtcNow, UtcLastActivityDate = DateTime.UtcNow } }; CustomerService.Add(customer); } return result; }
public void Test_Register() { var customerProvider = new Mock<ICustomerProvider>(); var customerService = new Mock<ICustomerService>(); Customer customer = null; customerService.Setup(it => it.Add(It.IsAny<Customer>())) .Callback<Customer>((c) => { customer = c; }); var passwordEncryptor = new Mock<IPasswordEncryptor>(); passwordEncryptor.Setup(it => it.EncryptPassword("test", null)) .Returns("test"); CustomerMembershipService customerMemberhipService = new CustomerMembershipService( customerProvider.Object, customerService.Object, passwordEncryptor.Object); RegistrationRequest request = new RegistrationRequest() { Username = "******", Email = "*****@*****.**", Password = "******", IsApproved = true }; var result = customerMemberhipService.Register(request); Assert.IsTrue(result.Success); Assert.IsNotNull(customer); Assert.AreEqual(request.Username, customer.Username); Assert.AreEqual(request.Email, customer.Email); Assert.AreEqual(request.Password, customer.Membership.Password); Assert.AreEqual(request.IsApproved, customer.Membership.IsApproved); }