Пример #1
0
        public void NotAllowPasswordWithoutAtLeastOneSpecial()
        {
            //Arrange
            var aUser = TestHelper.MakeUser("*****@*****.**",
                                            TestHelper.MakeValidPassword.Replace(
                                                TestHelper.SpecialChar,
                                                TestHelper.Digit
                                                )
                                            );

            var existingRepo = TestHelper.MakeRepo();

            var mockRepo = new Mock <IEntityRepository <User> >();

            mockRepo.Setup(repo => repo.Entities)
            .Returns(existingRepo);

            var sut = new RegisterUserHandler(mockRepo.Object);

            var registerUser = new RegisterUser(aUser.Email, aUser.Password);

            //Act
            var response = sut.Handle(registerUser);

            //Assert
            Assert.True(response.HasErrors());
            Assert.True(response.HasMessage <PasswordLacksSpecialCharacter>());
        }
Пример #2
0
        public async void Handle_GivenValidRegistrationDetails_ShouldSucceed()
        {
            // arrange
            var            mockUserRepository = new Mock <IUserRepository>();
            List <AppUser> users = new List <AppUser>
            {
                new AppUser()
                {
                    Email = "*****@*****.**"
                }
            };

            var mockUserManager = MockUserManager <AppUser>(users);

            var mockMediatorHandler = new Mock <IMediatorHandler>();

            var mockUnitOfWork = new Mock <IUnitOfWork>();

            mockUnitOfWork.Setup(uow => uow.Commit()).Returns(true);

            var notificationHandler = new DomainNotificationHandler();

            var useHandler = new RegisterUserHandler(mockUserRepository.Object, mockUserManager.Object, mockUnitOfWork.Object, mockMediatorHandler.Object, notificationHandler);

            // act
            try
            {
                await useHandler.Handle(new RegisterUserRequest("firstName", "lastName", "*****@*****.**", "userName", "password"));
            }
            catch (Exception ex)
            {
                // assert
                Assert.True(false, "Expected no exception, but got: " + ex.Message);
            }
        }
Пример #3
0
        public async Task ShouldRegisterUser()
        {
            // Arrange
            using var scope = Factory.Services.CreateScope();

            var registerUserModel = new RegisterUserModel
            {
                FirstName = "first name",
                LastName  = "last name",
                Password  = "******",
                UserName  = Guid.NewGuid().ToString()
            };


            var sut = new RegisterUserHandler(userManager, unitOfWork, mediator, mapper, currentUserServiceMock.Object);

            // Act
            User sutResult = await sut.Handle(new RegisterUserCommand(registerUserModel), new CancellationToken(false));

            // Assert
            Assert.NotNull(sutResult);

            var addedUser = await unitOfWork.Users.GetEntityAsync(sutResult.Id);

            Assert.NotNull(addedUser);

            Assert.Equal(registerUserModel.FirstName, addedUser.FirstName);
            Assert.Equal(registerUserModel.LastName, addedUser.LastName);
            Assert.Equal(registerUserModel.UserName, addedUser.UserName);

            Assert.Equal(registerUserModel.FirstName, sutResult.FirstName);
            Assert.Equal(registerUserModel.LastName, sutResult.LastName);
            Assert.Equal(registerUserModel.UserName, sutResult.UserName);
        }
Пример #4
0
        private void Arrange()
        {
            _subject = new RegisterUserHandler(Context);

            Context.TenantInvites.Add(new TenantInvite
            {
                TenantId   = _existingTenantId,
                Expiration = DateTime.UtcNow.AddHours(1),
                Token      = _inviteToken
            });

            Context.SaveChanges();
        }
        private void Arrange()
        {
            Context.Users.Add(new User
            {
                Id       = _userId,
                Email    = _email,
                TenantId = _tenantId
            });

            Context.SaveChanges();

            _subject = new RegisterUserHandler(Context);
        }
Пример #6
0
        public void ThrowsExceptionWhenEmailIsAlreadyInUse()
        {
            _repoMock.Setup(r => r.Get(It.IsAny <Expression <Func <User, bool> > >()))
            .Returns(new List <User> {
                new User {
                }
            });

            var handler = new RegisterUserHandler(null, _repoMock.Object);

            Action action = () => handler.Handle(Request, new System.Threading.CancellationToken());

            action.Should().ThrowExactly <EntityAlreadyExistsException>().WithMessage("[email protected] is already in use.");
        }
Пример #7
0
        public void CallRepoAddAndPublishesEventWhenDataIsValid()
        {
            _repoMock.Setup(r => r.Get(It.IsAny <Expression <Func <User, bool> > >()))
            .Returns(new List <User>());

            _repoMock.Setup(r => r.Add(It.IsAny <User>()));
            _busMock.Setup(r => r.Publish(It.IsAny <UserRegisteredEvent>()));

            var handler = new RegisterUserHandler(_busMock.Object, _repoMock.Object);

            handler.Handle(Request, new System.Threading.CancellationToken());

            _repoMock.Verify(r => r.Add(It.IsAny <User>()), Times.Once);
            _busMock.Verify(r => r.Publish(It.IsAny <UserRegisteredEvent>()), Times.Once);
        }
        public void RegisterUserException()
        {
            RegisterUserCommand registerUserCommand = new RegisterUserCommand()
            {
                UserName = "******",
                Password = "******",
                Name     = "A",
                Surname  = "B"
            };

            RegisterUserHandler registerUserHandler = new RegisterUserHandler(_loggerFactory, _ordersDbContext);

            Assert.IsNotEmpty(registerUserCommand.UserName);
            Assert.Throws <ArgumentException>(() => { registerUserHandler.Execute(registerUserCommand); });
        }
Пример #9
0
        public async Task Handle_WhenTryToAddUserWithSameEmail_ShoulThrowException(RegisterUserCommand command)
        {
            // Arrange
            User user = new User("mail", "u", "f", "l ", "i", "d", DateTime.Now, DateTime.Now);

            this.userRepositoryMock.Setup(u => u.GetByEmail(It.IsAny <string>())).Returns(Task.FromResult(user));

            this.sut = new RegisterUserHandler(this.userRepositoryMock.Object, this.encrypterMock.Object, this.saveRepositoryMock.Object);

            // Act
            Func <Task> act = async() => await this.sut.Handle(command, new System.Threading.CancellationToken());

            // Assert
            act.Should().Throw <DatingAppException>().Where(e => e.Message == "User with provided email already exists");
        }
Пример #10
0
        public async Task Should_ReturnBadRequest_When_PassingParametersAreEmpty(string username, string password)
        {
            var cancellationToken = new CancellationToken();

            var databaseContext      = Create.MockedDbContextFor <DatabaseContext>();
            var userPasswordUtility  = Substitute.For <IUserPasswordUtility>();
            var saltGeneratorUtility = Substitute.For <ISaltGeneratorUtility>();

            saltGeneratorUtility.Generate().Returns(Encoding.ASCII.GetBytes("UserPasswordTest"));
            userPasswordUtility.HashPassword(password, Encoding.ASCII.GetBytes("UserPasswordTest")).Returns("HashedPassword");

            databaseContext.Set <SystemUser>().Add(new SystemUser()
            {
                Id       = 1,
                Password = "******",
                Username = "******",
                Salt     = Encoding.ASCII.GetBytes("password1")
            });

            databaseContext.Set <SystemUser>().Add(new SystemUser()
            {
                Id       = 2,
                Password = "******",
                Username = "******",
                Salt     = Encoding.ASCII.GetBytes("password2")
            });

            databaseContext.Set <SystemUser>().Add(new SystemUser()
            {
                Id       = 3,
                Password = "******",
                Username = "******",
                Salt     = Encoding.ASCII.GetBytes("password3")
            });

            databaseContext.SaveChanges();

            var entity = new RegisterUserRequest(username, password);

            var handler = new RegisterUserHandler(databaseContext, userPasswordUtility, saltGeneratorUtility);
            var result  = await handler.Handle(entity, cancellationToken);

            Assert.Multiple(() =>
            {
                Assert.IsFalse(result.Success);
                Assert.AreEqual(result.StatusCode, HttpStatusCode.BadRequest);
            });
        }
Пример #11
0
        private IList <ChatPayloadDTO> ProcessRequestRegisterUser(string userId, Message message)
        {
            IList <ChatPayloadDTO> result = new List <ChatPayloadDTO>();

            message = new RegisterUserHandler(_userService)
                      .Handle(userId, message);

            if (message.Event != EventEnum.Error)
            {
                message.AvailableRooms = GetAllRooms();
                message.User           = GetUserById(userId);
            }

            result.Add(message.MessageToPayload(userId));
            return(result);
        }
Пример #12
0
        public async Task ShouldRegisterUserCorrectly()
        {
            //Arrange
            User createdUser     = null;
            var  usersRepository = new Mock <IUsersRepository>();

            usersRepository.Setup(x => x.AddAsync(It.IsAny <User>()))
            .Callback <User>(x => createdUser = x)
            .Returns(Task.CompletedTask);

            var registerUserHandler = new RegisterUserHandler(usersRepository.Object);
            var command             = new RegisterUserCommand("test", "*****@*****.**", "test", "test");

            //Act
            await registerUserHandler.HandleAsync(command);

            //Assert
            Assert.That(createdUser.Username, Is.EqualTo(command.Username));
        }
Пример #13
0
        public async Task Handle_WhenRegisterUserCommandIsValid_ShouldReturnUnitValue(RegisterUserCommand command)
        {
            // Arrange
            User user = null;

            this.userRepositoryMock.Setup(u => u.GetByEmail(It.IsAny <string>())).Returns(Task.FromResult(user));
            this.userRepositoryMock.Setup(u => u.GetByUsername(It.IsAny <string>())).Returns(Task.FromResult(user));

            this.encrypterMock.Setup(e => e.GetSalt(It.IsAny <string>())).Returns("salt");
            this.encrypterMock.Setup(e => e.GetHash(It.IsAny <string>(), It.IsAny <string>())).Returns("hash");

            this.saveRepositoryMock.Setup(s => s.Add(It.IsAny <User>())).Verifiable();
            this.saveRepositoryMock.Setup(s => s.Commit()).Verifiable();

            this.sut = new RegisterUserHandler(this.userRepositoryMock.Object, this.encrypterMock.Object, this.saveRepositoryMock.Object);

            // Act
            var result = await this.sut.Handle(command, new System.Threading.CancellationToken());

            // Assert
            result.Should().BeEquivalentTo(Unit.Value);
        }
Пример #14
0
        public void AllowValidPassword()
        {
            //Arrange
            var aUser = TestHelper.MakeUser("*****@*****.**", TestHelper.MakeValidPassword);

            var existingRepo = TestHelper.MakeRepo();

            var mockRepo = new Mock <IEntityRepository <User> >();

            mockRepo.Setup(repo => repo.Entities)
            .Returns(existingRepo);

            var sut = new RegisterUserHandler(mockRepo.Object);

            var registerUser = new RegisterUser(aUser.Email, aUser.Password);

            //Act
            var response = sut.Handle(registerUser);

            //Assert
            Assert.True(!response.HasErrors());
        }
Пример #15
0
        public void RegisterRolTest()
        {
            Usuario u3 = new Usuario
            {
                UserName     = "******",
                RolId        = 2,
                UserPassword = "******",
                UsuarioId    = 3
            };


            mockRepository.Setup(x => x.RegisterUser(u3))
            .Returns(true);

            var handler = new RegisterUserHandler(mockRepository.Object);

            RegisterUser ru = new RegisterUser(u3);

            var res = handler.Handle(ru, ct);

            Assert.IsTrue(res.Result);
        }
Пример #16
0
        public void NotAllowEmailWithout_At()
        {
            //Arrange
            var aUser = TestHelper.MakeUser("mat.com");

            var existingRepo = TestHelper.MakeRepo();

            var mockRepo = new Mock <IEntityRepository <User> >();

            mockRepo.Setup(repo => repo.Entities)
            .Returns(existingRepo);

            var sut = new RegisterUserHandler(mockRepo.Object);

            var registerUser = new RegisterUser(aUser.Email, aUser.Password);

            //Act
            var response = sut.Handle(registerUser);

            //Assert
            Assert.True(response.HasErrors());
            Assert.True(response.HasMessage <EmailLacksAtCharacter>());
        }
 private void Arrange()
 {
     _subject = new RegisterUserHandler(Context);
 }
Пример #18
0
 public RegisterUserHandlerTest()
 {
     _userRepository  = new Mock <IUserRepository>();
     _passwordManager = new Mock <IPasswordManager>();
     _sut             = new RegisterUserHandler(_userRepository.Object, _passwordManager.Object);
 }
Пример #19
0
 public IActionResult Post([FromServices] RegisterUserHandler registerUserHandler,
                           RegisterUser request)
 {
     return(RequestHandler.HandleRequest(request, registerUserHandler.Handle));
 }
Пример #20
0
        private string UserInsertByPhone(string phone)
        {
            string pwd = new UserBLL().GetRandomPassword(8);//随机密码

            if (!phone.IsPhone())
            {
                return("手机号码格式不正确");
            }

            string strIp = Tool.WebFormHandler.GetIP();

            string[] ips    = strIp.Split(',');
            string   realIp = ips.Length > 1 ? ips[1] : ips[0];
            string   result = Users.UserIsRegByIP(realIp);

            if (result != "1")
            {
                string dt = result.Split('|')[1];
                return("注册失败:为防止恶意注册,请在" + dt + "后重新注册");
            }

            Guid userid = Guid.NewGuid();
            //var model = WXRegister.AddUserInfo(userid, _app, pwd, phone, "", "",
            //    "", "", 0, realIp);


            string from = _app;

            if (!string.IsNullOrEmpty(_appUserId))
            {
                from += "_" + _appUserId;
            }
            #region 写用户信息
            UserRegisterInfo registerUser = new UserRegisterInfo();
            registerUser.Id             = userid;
            registerUser.ExtenderKey    = "";
            registerUser.UserName       = string.Format("{0}wx{1}", phone, DateTime.Now.ToString("yyMMdd")); //针对重复注册特殊处理
            registerUser.Pwd            = pwd;
            registerUser.Email          = string.Empty;
            registerUser.TelNo          = phone;
            registerUser.ThirdPartyId   = string.Empty;
            registerUser.ThirdPartyType = (int)ConstString.ThirdPartyType.TuandaiUser;
            registerUser.RegisterFrom   = from;
            registerUser.RegisterIP     = realIp;
            registerUser.OpenId         = GlobalUtils.OpenId;
            registerUser.NickName       = registerUser.UserName;
            string msg = string.Empty;
            var    userBasicInfoInfo = new UserBLL().RegiserUser(registerUser, ref msg);
            if (userBasicInfoInfo != null && !string.IsNullOrEmpty(userBasicInfoInfo.ExtenderKey))
            {
                //记录日志
                SysLogHelper.WriteErrorLog("会员推广_AddUserInfo", "UserName:" + userBasicInfoInfo.UserName + ";ExtendKey:" + userBasicInfoInfo.ExtenderKey);
            }
            #endregion

            if (userBasicInfoInfo != null)
            {
                RegisterUserHandler.AsyncAfterRegister(_app, userBasicInfoInfo);

                if ((userBasicInfoInfo.uStatus ?? 0) == 1)
                {
                    var isNewSmsRequest = ConfigHelper.getConfigString("IsNewSmsRequest", "0");
                    if (isNewSmsRequest == "0")
                    {
                        //改用新的发短信,邮件,系统消息
                        var messageSender = new MessageSend();
                        //var parameters = new Dictionary<string, object>();
                        //parameters.Add("User", model);
                        //parameters.Add("CurrentDate", DateTime.Now);
                        //parameters.Add("ExtenderKey", model.ExtenderKey);
                        //messageSender.SendMessage2(eventCode: MessageTemplates.RegisterSuccess, parameters: parameters, mobile: model.TelNo, email: model.Email, userId: model.Id);

                        //将生成的密码已短信方式发送给用户
                        var parameters = new Dictionary <string, object>();
                        parameters.Add("PassWord", pwd);
                        messageSender.SendMessage2(option: SendOption.Sms, eventCode: MessageTemplates.BindMobile,
                                                   parameters: parameters, mobile: userBasicInfoInfo.TelNo);
                    }
                    else
                    {
                        SmsRequest rechargeSuccessSmsRequest = new SmsRequest();
                        rechargeSuccessSmsRequest.EventCode      = MsgTemplatesType.BindMobile;
                        rechargeSuccessSmsRequest.PlatformSource = PlatformSource.WeiXin;
                        rechargeSuccessSmsRequest.UserId         = userBasicInfoInfo.Id;
                        rechargeSuccessSmsRequest.EmailAddress   = userBasicInfoInfo.Email;
                        rechargeSuccessSmsRequest.Mobile         = userBasicInfoInfo.TelNo;
                        rechargeSuccessSmsRequest.Parameters     = new Dictionary <string, object>();
                        rechargeSuccessSmsRequest.Parameters.Add("PassWord", pwd);

                        string errorMessage = string.Empty;
                        SmsClient.SendMessage(rechargeSuccessSmsRequest, ref errorMessage);
                    }

                    try
                    {
                        TuanDai.InfoSystem.Model.LoginLog loginLogEntity = new TuanDai.InfoSystem.Model.LoginLog();
                        loginLogEntity.Id         = Guid.NewGuid().ToString();
                        loginLogEntity.UserId     = userBasicInfoInfo.Id.ToString();
                        loginLogEntity.IpAddress  = Tool.WebFormHandler.GetIP();
                        loginLogEntity.LoginDate  = DateTime.Now;
                        loginLogEntity.DeviceType = "WeiXin";
                        loginLogEntity.DeviceName = _app + "自动注册登录";
                        //LoginLogService logApi = new LoginLogService();
                        //logApi.AddLoginLog(loginLogEntity);
                        TuanDai.WXApiWeb.SysLogHelper.AddLoginLog(loginLogEntity);
                    }
                    catch (Exception ex)
                    {
                        NetLog.WriteLoginHandler("写入注册成功登录日志出错", Tool.ExceptionHelper.GetExceptionMessage(ex));
                    }
                }

                #region 注册成功后自动登录

                if (GlobalUtils.IsWeiXinBrowser)
                {
                    string strOpenId = TuanDai.WXApiWeb.Common.WeiXinApi.GetUserWXOpenId(userBasicInfoInfo.Id);
                    if (strOpenId.IsNotEmpty())
                    {
                        GlobalUtils.WriteOpenIdToCookie(strOpenId.ToText());
                    }
                }
                WebUserAuth.SignIn(userid.ToString());

                #endregion
            }
            else
            {
                return("添加用户失败");
            }
            return(string.Empty);
        }