예제 #1
0
        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;
        }
예제 #2
0
        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);
        }