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
        }
Esempio n. 2
0
        /// <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
        }
Esempio n. 4
0
        /// <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));
        }