public void SignUpNewUser_Test() { // Arrange DomainUser newUser = new DomainUser() { Name = "NewUser", Email = "*****@*****.**", Password = "******", TelephoneNumbers = new List <string> { "1234567890", "4412345678" } }; DbUser dbNewUser = new DbUser() { Password = BCrypt.Net.BCrypt.HashPassword("new-password") }; mapper.Setup(r => r.Map <DbUser>(It.IsAny <DomainUser>())).Returns(dbNewUser); userService_UnderTest = new UserService(userRepository.Object, tokenManager.Object, mapper.Object); // Act userRepository.Setup(r => r.InsertUser(It.IsAny <DbUser>())).Returns(dbNewUser); userRepository.Setup(r => r.UpdateUser(It.IsAny <DbUser>())).Returns(dbNewUser); var result = userService_UnderTest.SignUp(ref newUser).Result; // Assert Assert.True(result); userRepository.Verify(x => x.InsertUser(It.IsAny <DbUser>()), Times.Once()); // To verify that Insert() called once userRepository.Verify(x => x.UpdateUser(It.IsAny <DbUser>()), Times.Once()); // To verify that Update() never called for an existing user }
/// <summary> /// Sign up the user. If email exists, then return error /// </summary> /// <param name="user"></param> /// <returns></returns> public Task <bool> SignUp(ref DomainUser user) { DbUser dbUser = userRepository.InsertUser(mapper.Map <DbUser>(user)); if (dbUser != null) { // Update Token dbUser.Token = tokenManager.GenerateTokenForUser(dbUser.Id.ToString()); dbUser.Password = BCrypt.Net.BCrypt.HashPassword(dbUser.Password); userRepository.UpdateUser(dbUser); // Map user.Id = dbUser.Id; user.Token = dbUser.Token; user.CreatedOn = dbUser.CreatedOn; user.LastLoginOn = dbUser.LastLoginOn; user.LastUpdatedOn = dbUser.LastUpdatedOn; return(Task.FromResult(true)); } return(Task.FromResult(false)); }
public void FailAnExistingUserFromSignupAgain_Test() { // Arrange DomainUser anExistingUser = new DomainUser() { Name = "ExistingTestUser", Email = "*****@*****.**", Password = "******" }; mapper.Setup(x => x.Map <DomainUser, DbUser>(anExistingUser)).Returns((DbUser)null); userService_UnderTest = new UserService(userRepository.Object, tokenManager.Object, mapper.Object); userRepository.Setup(r => r.InsertUser(It.IsAny <DbUser>())).Returns((DbUser)null); // Act var result = userService_UnderTest.SignUp(ref anExistingUser).Result; // Assert Assert.False(result); userRepository.Verify(x => x.InsertUser(It.IsAny <DbUser>()), Times.Once()); // To verify that Insert() called once userRepository.Verify(x => x.UpdateUser(It.IsAny <DbUser>()), Times.Never()); // To verify that Update() never called for an existing user }
/// <summary> /// Authenticate UserSession /// </summary> /// <param name="submittedUserId"></param> /// <param name="jwtToken"></param> /// <param name="user"></param> /// <returns></returns> public Task <UserSessionStatus> AuthenticateSession(Guid submittedUserId, string jwtToken, out DomainUser user) { user = new DomainEntities.User(); DbUser dbUser = userRepository.FindUserById(submittedUserId); if (dbUser != null) { if (dbUser.Token == jwtToken) { TimeSpan timeElapsed = DateTime.UtcNow - dbUser.LastLoginOn; if (timeElapsed.TotalMinutes < TokenExpiryInMinutes) { user.Id = dbUser.Id; user.Token = dbUser.Token; user.CreatedOn = dbUser.CreatedOn; user.LastLoginOn = dbUser.LastLoginOn; user.LastUpdatedOn = dbUser.LastUpdatedOn; return(Task.FromResult(UserSessionStatus.Authorized)); } else { return(Task.FromResult(UserSessionStatus.InvalidSession)); } } else { return(Task.FromResult(UserSessionStatus.Unauthorized)); } } return(Task.FromResult(UserSessionStatus.Unauthorized)); }