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>()); }
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); } }
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); }
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); }
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."); }
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); }); }
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"); }
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); }); }
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); }
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)); }
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); }
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()); }
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); }
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); }
public RegisterUserHandlerTest() { _userRepository = new Mock <IUserRepository>(); _passwordManager = new Mock <IPasswordManager>(); _sut = new RegisterUserHandler(_userRepository.Object, _passwordManager.Object); }
public IActionResult Post([FromServices] RegisterUserHandler registerUserHandler, RegisterUser request) { return(RequestHandler.HandleRequest(request, registerUserHandler.Handle)); }
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); }