예제 #1
0
        public async Task AssignIssueToUser_WhenUserNotFound_ReturnsUserNotFound()
        {
            var claims = new Claim("roles", "TeamLead");
            var token  = GetJwtToken(new[] { claims });

            AddAuth(token);
            var request = new AssignIssueToUserRequest()
            {
                IssueId = IssuesDbSet.Get().First().Id,
                UserId  = Guid.NewGuid()
            };

            var httpResponse = await PostAsync(IssueControllerRoutes.AssignToUser, request);

            httpResponse.EnsureSuccessStatusCode();
            var response = await httpResponse.BodyAs <ApiResponse <IssueDto> >();

            response.VerifyNotSuccessResponseWithErrorCodeAndMessage(ErrorCode.UserNotFound);
        }
예제 #2
0
        public async Task AssignIssueToUser_WhenRequestIsValid_ReturnsSuccessStatus()
        {
            var claims = new Claim("roles", "TeamLead");
            var token  = GetJwtToken(new[] { claims });

            AddAuth(token);
            var request = new AssignIssueToUserRequest()
            {
                IssueId = IssuesDbSet.Get().First().Id,
                UserId  = UsersDbSet.Get().Last().Id
            };

            var httpResponse = await PostAsync(IssueControllerRoutes.AssignToUser, request);

            httpResponse.EnsureSuccessStatusCode();
            var response = await httpResponse.BodyAs <ApiResponse <IssueDto> >();

            var issue = await GetIssueFromDatabase(request.IssueId);

            issue.AssignedToUserId.Should().Be(request.UserId);
            response.StatusCode.Should().Be(200);
            await ReSeedDatabase();
        }
예제 #3
0
        public async Task AssignIssueToUser_WhenNotValidModelPassed_ReturnsValidationError()
        {
            var claims = new Claim("roles", "TeamLead");
            var token  = GetJwtToken(new[] { claims });

            AddAuth(token);
            //issue id is empty
            var request = new AssignIssueToUserRequest()
            {
                UserId = Guid.NewGuid()
            };
            var httpResponse = await PostAsync(IssueControllerRoutes.AssignToUser, request);

            var response = await httpResponse.BodyAs <ApiResponse <IssueDto> >();

            response.CheckValidationException(1);

            //user id is empty
            request = new AssignIssueToUserRequest()
            {
                IssueId = Guid.NewGuid()
            };
            httpResponse = await PostAsync(IssueControllerRoutes.AssignToUser, request);

            response = await httpResponse.BodyAs <ApiResponse <IssueDto> >();

            response.CheckValidationException(1);

            //user id and issue id is empty
            request      = new AssignIssueToUserRequest();
            httpResponse = await PostAsync(IssueControllerRoutes.AssignToUser, request);

            response = await httpResponse.BodyAs <ApiResponse <IssueDto> >();

            response.CheckValidationException(2);
        }
예제 #4
0
        public async Task <ApiResponse <IssueDto> > AssignIssueToUser(AssignIssueToUserRequest request)
        {
            try
            {
                var entityFound = await _issueRepository.GetByIdAsync(request.IssueId);

                if (entityFound == null)
                {
                    _logger.LogWarning("Failed to found issue by id {0}", request.IssueId);
                    return(new ApiResponse <IssueDto>()
                    {
                        StatusCode = 400,
                        IsSuccess = false,
                        ResponseException = new ApiError(ErrorCode.IssueNotFound, ErrorCode.IssueNotFound.GetDescription())
                    });
                }

                var userFoundResponse = await _userService.GetUsersById(request.UserId);

                if (!userFoundResponse.IsSuccess)
                {
                    return(userFoundResponse.ToFailed <IssueDto>());
                }

                entityFound.AssignedToUserId = request.UserId;
                entityFound.UpdatedAt        = _systemClock.UtcNow;
                await _issueRepository.UpdateAsync(entityFound);

                return(new ApiResponse <IssueDto>(_issueMapper.MapToModel(entityFound)));
            }
            catch (Exception ex)
            {
                _logger.LogWarning(ex, "An error occured while assigning user {0} for issue {1} ", request.UserId, request.IssueId);
                return(ApiResponse <IssueDto> .InternalError());
            }
        }
예제 #5
0
 public async Task <ApiResponse <IssueDto> > AssignIssueToUser([FromBody] AssignIssueToUserRequest request)
 {
     return(await _issueService.AssignIssueToUser(request));
 }