Example #1
0
            public async Task ReturnBadRequest_WhenUbiUserIdHeaderIsMissing()
            {
                var requestBody = new PlayerFeedBackRequest
                {
                    SessionId = new Guid("906733a4-f2c9-44c1-9e03-b8a8c5393e18"),
                    Rating    = 5,
                    Comment   = ""
                };

                var controller =
                    new PlayerFeedbackController(_mockQueryHandler.Object, _mockFeedbackSender.Object, _mockClock.Object);

                controller.ControllerContext.HttpContext = new DefaultHttpContext();

                var responseResult = await controller.Post(requestBody);

                var response      = Assert.IsType <BadRequestObjectResult>(responseResult);
                var receivedError = Assert.IsAssignableFrom <Error>(response.Value);

                var expectedError = new Error
                {
                    Type    = UbiUserIdHeader.UbiUserIdMissingError,
                    Message = UbiUserIdHeader.UbiUserIdMissingErrorMessage
                };

                Assert.Equal(StatusCodes.Status400BadRequest, response.StatusCode);
                Assert.Equal(expectedError, receivedError);
            }
Example #2
0
            public async Task ReturnOk_WhenValidFeedbackIsGivenWithUbiUserIdHeader_And_FeedbackIsSuccessfullySent()
            {
                var ubiUserId   = "player-id-1";
                var requestBody = new PlayerFeedBackRequest
                {
                    SessionId = new Guid("906733a4-f2c9-44c1-9e03-b8a8c5393e18"),
                    Rating    = 5,
                    Comment   = ""
                };

                _mockFeedbackSender
                .Setup(sender => sender.Send(It.IsAny <PlayerFeedbackDto>()))
                .ReturnsAsync(Result.Ok());

                var controller =
                    new PlayerFeedbackController(_mockQueryHandler.Object, _mockFeedbackSender.Object, _mockClock.Object);

                controller.ControllerContext.HttpContext = new DefaultHttpContext();

                UbiUserIdHeaderHelper.AddUbiUserIdsToRequestHeader(
                    controller.ControllerContext.HttpContext.Request,
                    ubiUserId
                    );

                var responseResult = await controller.Post(requestBody);

                var response = Assert.IsType <OkResult>(responseResult);

                Assert.Equal(StatusCodes.Status200OK, response.StatusCode);
            }
        public async Task <IActionResult> Post([FromBody] PlayerFeedBackRequest feedback)
        {
            var ubiUserIdExtractionResult = UbiUserIdHeader.ExtractUbiUserId(Request);

            if (ubiUserIdExtractionResult.IsError)
            {
                return(BadRequest(ubiUserIdExtractionResult.Error));
            }

            var utcTimeNow = _clock.GetTimeNow();

            var feedbackSendingResult =
                await _feedbackSender.Send(feedback.ToDto(utcTimeNow, ubiUserIdExtractionResult.Value));

            if (feedbackSendingResult.IsOk)
            {
                return(Ok());
            }

            return(BadRequest(feedbackSendingResult.Error));
        }
Example #4
0
            public async Task ReturnBadRequest_WhenUbiUserIdIsGiven_But_InvalidFeedbackIsGiven()
            {
                var ubiUserId   = "player-id-1";
                var requestBody = new PlayerFeedBackRequest
                {
                    SessionId = new Guid("906733a4-f2c9-44c1-9e03-b8a8c5393e18"),
                    Rating    = -1,
                    Comment   = ""
                };

                var expectedError = new Error
                {
                    Type    = ErrorType.RatingOutOfRange.ToString(),
                    Message = ErrorMessage.RatingOutOfRangeMessage
                };

                _mockFeedbackSender
                .Setup(sender => sender.Send(It.IsAny <PlayerFeedbackDto>()))
                .ReturnsAsync(Result.Fail(expectedError));

                var controller =
                    new PlayerFeedbackController(_mockQueryHandler.Object, _mockFeedbackSender.Object, _mockClock.Object);

                controller.ControllerContext.HttpContext = new DefaultHttpContext();

                UbiUserIdHeaderHelper.AddUbiUserIdsToRequestHeader(
                    controller.ControllerContext.HttpContext.Request,
                    ubiUserId
                    );

                var responseResult = await controller.Post(requestBody);

                var response      = Assert.IsType <BadRequestObjectResult>(responseResult);
                var receivedError = Assert.IsAssignableFrom <Error>(response.Value);

                Assert.Equal(StatusCodes.Status400BadRequest, response.StatusCode);
                Assert.Equal(expectedError, receivedError);
            }