Esempio n. 1
0
        public void CreateAlreadyExistentUserTest()
        {
            //Arrange.
            Exception internalEx = new UserAlreadyExistsException();
            Exception toThrow    = new ServiceException(internalEx.Message, ErrorType.ENTITY_ALREADY_EXISTS);

            service.Setup(us => us.AddUser(It.IsAny <UserDto>())).Throws(toThrow);

            //Act.
            IActionResult          result     = controller.Post(input);
            BadRequestObjectResult badRequest = result as BadRequestObjectResult;
            ErrorModelOut          error      = badRequest.Value as ErrorModelOut;

            //Assert.
            service.Verify(us => us.AddUser(It.IsAny <UserDto>()), Times.Once);
            Assert.IsNotNull(result);
            Assert.IsNotNull(badRequest);
            Assert.AreEqual(400, badRequest.StatusCode);
            Assert.IsNotNull(error);
            Assert.AreEqual(error.ErrorMessage, toThrow.Message);
        }
Esempio n. 2
0
            public async Task <AuthenticatedUserOut> Handle(Command request, CancellationToken cancellationToken)
            {
                var userExists = await context.Users.AnyAsync(u => u.Email == request.LoginDetails.Email).ConfigureAwait(false);

                if (userExists)
                {
                    throw new UserAlreadyExistsException();
                }

                var user = mapper.Map <User>(request.LoginDetails);

                user.PasswordHash = BCrypt.Net.BCrypt.HashPassword(request.LoginDetails.Password);
                context.Users.Add(user);

                try
                {
                    await context.SaveChangesAsync().ConfigureAwait(false);

                    var userOut = mapper.Map <AuthenticatedUserOut>(user);
                    userOut.Token = tokenGenerator.CreateTokenString(user);

                    return(userOut);
                }
                catch (DbUpdateException ex)
                {
                    Exception resultEx = ex;
                    var       sex      = ex.InnerException as SqlException;
                    if (sex != null)
                    {
                        switch (sex.Number)
                        {
                        case 2601:
                            resultEx = new UserAlreadyExistsException();
                            break;
                        }
                    }

                    throw resultEx;
                }
            }