Exemplo n.º 1
0
        public void GetUserByUserName_ReturnsOk_WhenUserIsFound()
        {
            //Arrange
            GetUserByUserNameRequest request = new GetUserByUserNameRequest(fixture.Create <string>());

            User user = fixture.Create <User>();

            mediator.Send(Arg.Is <GetUserByUserNameRequest>(r => r.UserName == request.UserName)).Returns(user);

            //Act
            Task <ActionResult> task = controller.GetUserByUserName(request);

            task.Wait();

            ActionResult result = task.Result;

            //Assert
            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            OkObjectResult okResult = result as OkObjectResult;

            okResult.StatusCode.Should().Be(StatusCodes.Status200OK);
            okResult.Value.Should().NotBeNull();
            okResult.Value.Should().BeOfType <User>();

            User value = okResult.Value as User;

            value.Should().Be(user);
        }
Exemplo n.º 2
0
        public async Task <ActionResult> Subscribe([FromBody] SubscribeCommand subscription)
        {
            ActionResult response = new StatusCodeResult(StatusCodes.Status422UnprocessableEntity);

            try
            {
                await mediator.Send(subscription);

                var request = new GetUserByUserNameRequest(subscription.UserName);
                response = CreatedAtRoute("GetUserByUserName", request, request);
            }
            catch (UserApplicationException ex) when(ex is UsernameAlreadyTakenException || ex is EmailAlreadyTakenException)
            {
                response = Conflict(ex.Message);
            }
            catch (Exception ex) when(ex is FormatException || ex is ArgumentException || ex is ArgumentNullException)
            {
                response = BadRequest();
            }
            catch
            {
                response = new StatusCodeResult(StatusCodes.Status500InternalServerError);
            }

            return(response);
        }
Exemplo n.º 3
0
        public void Subscribe_ReturnsStatus201_WhenSusbcriptionWorks()
        {
            //Arrange
            SubscribeCommand command = fixture.Create <SubscribeCommand>();

            //Act
            Task <ActionResult> task = controller.Subscribe(command);

            task.Wait();

            ActionResult response = task.Result;

            //Assert
            mediator.Received(1).Send(Arg.Is(command));

            response.Should().NotBeNull();
            response.Should().BeOfType <CreatedAtRouteResult>();

            CreatedAtRouteResult result = response as CreatedAtRouteResult;

            result.StatusCode.Should().Be(StatusCodes.Status201Created);

            result.Value.Should().NotBeNull();
            result.Value.Should().BeOfType <GetUserByUserNameRequest>();
            GetUserByUserNameRequest resultValue = result.Value as GetUserByUserNameRequest;

            resultValue.UserName.Should().Be(command.UserName);
        }
Exemplo n.º 4
0
        public async Task <IActionResult> GetUser([FromQuery] GetUserByUserNameRequest request)
        {
            await _getUserByUserNameUseCase
            .Handle(new Application.Dto.UseCaseRequests.GetUserByUserNameRequest(request.UserName), _getUserByUserNamePresenter);

            return(_getUserByUserNamePresenter.Content);
        }
Exemplo n.º 5
0
        public void GetUserByUserName_CallsRepository_ReturnsUser()
        {
            //Arrange
            string userName = fixture.Create <string>();

            User user = new User(
                Guid.NewGuid(),
                userName,
                fixture.Create <string>(),
                fixture.Create <string>(),
                fixture.Create <string>(),
                fixture.Create <DateTime>()
                );

            userRepository.GetByUserName(Arg.Is(userName)).Returns(user);

            GetUserByUserNameRequest request = new GetUserByUserNameRequest(userName);

            CancellationToken token = new CancellationToken();

            //Act
            Task <User> task = handler.Handle(request, token);

            task.Wait();

            User result = task.Result;

            //Assert
            userRepository.Received(1).GetByUserName(Arg.Is(userName));

            result.Should().NotBeNull();
            result.Should().BeEquivalentTo(user);
        }
        public async Task <bool> Handle(GetUserByUserNameRequest message, IOutputPort <GetUserByUserNameResponse> outputPort)
        {
            var response = await _userRepository.GetUserByUsernameAsync(message.UserName);

            outputPort.Handle(response.Success ? new GetUserByUserNameResponse(response.User, true) : new GetUserByUserNameResponse(response.Errors.Select(x => x)));
            return(response.Success);
        }
Exemplo n.º 7
0
        public override async Task <GetUserByUserNameReply> GetUserByUserName(GetUserByUserNameRequest request,
                                                                              ServerCallContext context)
        {
            var user = await _userService.GetUserByUserNameAsync(request.Username);

            return(new GetUserByUserNameReply
            {
                User = _mapper.Map <UserMessage>(user)
            });
        }
Exemplo n.º 8
0
        public void Constructor_AssignsProperties()
        {
            //Arrange
            string userName = fixture.Create <string>();

            //Act
            GetUserByUserNameRequest request = new GetUserByUserNameRequest(userName);

            //Assert
            request.UserName.Should().Be(userName);
        }
Exemplo n.º 9
0
        public UserInfo GetUserByUserName(string userName)
        {
            GetUserByUserNameRequest request = new GetUserByUserNameRequest()
            {
                UserName = userName
            };
            GetUserResponse response = CallWebService <
                IUserManagementServicev1_0, GetUserByUserNameRequest, GetUserResponse>(
                m_service1_0, request, (s, q) => s.GetUserByUserName(q));

            return(response.User);
        }
Exemplo n.º 10
0
        public void GetUserByUserName_ReturnsNotFound_WhenUserIsNotFound()
        {
            //Arrange
            GetUserByUserNameRequest request = new GetUserByUserNameRequest(fixture.Create <string>());

            //Act
            Task <ActionResult> task = controller.GetUserByUserName(request);

            task.Wait();

            ActionResult result = task.Result;

            //Assert
            result.Should().NotBeNull();
            result.Should().BeOfType <NotFoundResult>();

            NotFoundResult notFoundResult = result as NotFoundResult;

            notFoundResult.StatusCode.Should().Be(StatusCodes.Status404NotFound);
        }
Exemplo n.º 11
0
        public async Task <ActionResult> GetUserByUserName([FromRoute] GetUserByUserNameRequest request)
        {
            ActionResult response;

            try
            {
                User user = await mediator.Send(request);

                if (user != null)
                {
                    response = Ok(user);
                }
                else
                {
                    response = NotFound();
                }
            }
            catch
            {
                response = new StatusCodeResult(StatusCodes.Status500InternalServerError);
            }

            return(response);
        }
Exemplo n.º 12
0
        public void GetUserByUserName_ReturnsInternalError_WhenExceptionOccurs()
        {
            //Arrange
            GetUserByUserNameRequest request = new GetUserByUserNameRequest(fixture.Create <string>());

            mediator.When(m => m.Send(Arg.Any <GetUserByUserNameRequest>())).Do(
                args => throw new Exception()
                );

            //Act
            Task <ActionResult> task = controller.GetUserByUserName(request);

            task.Wait();

            ActionResult result = task.Result;

            //Assert
            result.Should().NotBeNull();
            result.Should().BeOfType <StatusCodeResult>();

            StatusCodeResult statusCodeResult = result as StatusCodeResult;

            statusCodeResult.StatusCode.Should().Be(StatusCodes.Status500InternalServerError);
        }