public async Task ShouldInvalidUserFieldsTest()
        {
            _mockRepository.Setup(x => x.GetByEmail(It.IsAny <string>())).Returns(Task.FromResult <User>(null));

            var singInUserRequest = new SingInUserRequest()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            var command = new UserCommandHandler(_mockRepository.Object, _mockMapper, _mockNotificationContext);

            var result = await command.Handler(singInUserRequest);

            Assert.IsFalse(result.Success);
            Assert.IsTrue(result.Error);
            Assert.AreEqual(404, result.StatusCode);
            Assert.AreEqual(Messages.INVALID_EMAIL_OR_PASSWORD, result.Message);
        }
        public async Task ShouldRequireFieldsTest()
        {
            _mockRepository.Setup(x => x.GetByEmail(It.IsAny <string>())).Returns(Task.FromResult <User>(null));

            var singInUserRequest = new SingInUserRequest()
            {
                Email    = "",
                Password = "******"
            };

            var command = new UserCommandHandler(_mockRepository.Object, _mockMapper, _mockNotificationContext);

            var result = await command.Handler(singInUserRequest);

            Assert.IsFalse(result.Success);
            Assert.IsTrue(result.Error);
            Assert.AreEqual(400, result.StatusCode);
            Assert.AreEqual(Messages.MISSING_FIELDS, result.Message);
        }
Пример #3
0
        public async Task <CommandResponse> Handler(SingInUserRequest singIn)
        {
            if (string.IsNullOrEmpty(singIn?.Email) || string.IsNullOrWhiteSpace(singIn?.Password))
            {
                _notificationContext.AddNotification("SingIn", Messages.MISSING_FIELDS);
                return(BadRequest(null, Messages.MISSING_FIELDS));
            }

            var user = await _userRepository.GetByEmail(singIn.Email);

            if (user == null || !user.isValidPass(singIn.Password))
            {
                _notificationContext.AddNotification("SingIn", Messages.INVALID_EMAIL_OR_PASSWORD);
                return(NotFound(null, Messages.INVALID_EMAIL_OR_PASSWORD));
            }

            user.UpdateLastLogin();

            _ = _userRepository.RegisterAccess(user);

            return(Ok(_mapper.Map <UserResponse>(user), Messages.SING_IN));
        }
        public async Task <IActionResult> SignIn([FromServices] IUserCommandHandler userCommandHandler, [FromBody] SingInUserRequest singIn)
        {
            if (ModelState.IsValid)
            {
                var user = await userCommandHandler.Handler(singIn);

                if (user.Error)
                {
                    return(Response(user));
                }

                var response = TokenService.GereneteToken((UserResponse)user.Data, _appSettings);

                return(Response(new CommandResponse(user.StatusCode, user.Message, response)));
            }

            return(BadRequest());
        }