예제 #1
0
        public static UserDto GetUserByEmail(string userEmail)
        {
            var     queryObject = new GetUserByEmailQuery(userEmail);
            var     handler     = new GetUserByEmailQueryHandler();
            UserDto user        = handler.Handle(queryObject).Result;

            return(user);
        }
        public async Task GetUserByEmail_UserDoesNotExist_ThrowsNotFoundException()
        {
            var sut = new GetUserByEmailQueryHandler(_context);

            await sut.Handle(new GetUserByEmailQuery { Email = "*****@*****.**" },
                             CancellationToken.None)
            .ShouldThrowAsync <NotFoundException>();
        }
        public async Task GetUserByEmail_UserExists_ReturnsUserViewModel()
        {
            var sut  = new GetUserByEmailQueryHandler(_context);
            var user = _context.User.First();

            var result = await sut.Handle(new GetUserByEmailQuery { Email = user.Email }, CancellationToken.None);

            result.ShouldBeOfType <UserViewModel>();
            result.Email.ShouldBe(user.Email);
        }
예제 #4
0
        public static ValidateUserResponse ValidateUser(string useremail, string password)
        {
            var response = new ValidateUserResponse {
                Validated = false
            };

            //1 - Decode the username (which is user email)
            //and the password
            Encoding encoding         = Encoding.GetEncoding("iso-8859-1");
            var      decodedUserEmail = encoding.GetString(Convert.FromBase64String(useremail));
            var      decodedPassword  = encoding.GetString(Convert.FromBase64String(password));

            //2 - get the user by username (email address) only
            var emailQueryObject  = new GetUserByEmailQuery(decodedUserEmail);
            var emailQueryHandler = new GetUserByEmailQueryHandler();
            var byEmailOnlyUser   = emailQueryHandler.Handle(emailQueryObject).Result;

            if (byEmailOnlyUser == null)
            {
                return(response);
            }

            //get salt associated with this user account
            var saltBytes = Convert.FromBase64String(byEmailOnlyUser.Salt);

            //append salt to password
            var passwordAndSalt = decodedPassword + Convert.ToBase64String(saltBytes);

            //hash the password using the salt
            var pbkdf2 = new Rfc2898DeriveBytes(passwordAndSalt, saltBytes, 10000);

            byte[] hashPassword = pbkdf2.GetBytes(32);

            //we check the hashed user given password against the hashedPassword stored for the user
            var hashedPasswordString = Convert.ToBase64String(hashPassword);
            var dbPassword           = byEmailOnlyUser.PasswordHash;

            if (string.Compare(dbPassword, hashedPasswordString) != 0)
            {
                return(response);
            }

            if (byEmailOnlyUser != null)
            {
                response.UserId    = byEmailOnlyUser.UserId;
                response.Validated = true;
            }

            return(response);
        }
예제 #5
0
        public async Task GetUserByEmail_ShouldReturnValidUser(
            [Frozen] Mock <IRepository <User> > mockRepository,
            List <User> users,
            GetUserByEmailQueryHandler sut)
        {
            // Arrange
            var mockList = users.AsQueryable().BuildMock();

            mockRepository.Setup(x => x.GetAll()).Returns(mockList.Object);
            var firstUser = users.First();

            // Act
            var result = await sut.Handle(new GetUserByEmailQuery { Email = firstUser.EmailAddress }, CancellationToken.None);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(firstUser.EmailAddress, result.EmailAddress);
            mockRepository.Verify(x => x.GetAll(), Times.Once);
        }
예제 #6
0
 public GetUserByEmailTest()
 {
     // Arrange
     Context = ContextFactory.Create();
     Handler = new GetUserByEmailQueryHandler(Context);
 }
 public void SetUp()
 {
     _userCollection  = Database.GetCollection <UserEntity>("User");
     _classUnderTests = new GetUserByEmailQueryHandler(Database);
 }