Exemplo n.º 1
0
        public async Task <ActionResult <MatchMessageResponse> > PostAsync([FromBody] MessageRequest request, CancellationToken cancellationToken = default)
        {
            try
            {
                // Submit request
                IEnumerable <InfectionReport> reports = await this._reportService
                                                        .GetByIdsAsync(
                    request.RequestedQueries.Select(r => r.MessageId),
                    cancellationToken
                    );

                // Map results to expected return type
                MatchMessageResponse response = new MatchMessageResponse();
                response.MatchMessages.AddRange(
                    reports.Select(r => this._map.Map <MatchMessage>(r))
                    );

                return(Ok(response));
            }
            catch (RequestValidationFailedException ex)
            {
                // Only return validation results
                return(BadRequest(ex.ValidationResult));
            }
            catch (ArgumentNullException)
            {
                return(BadRequest());
            }
        }
        public async Task PostAsync_EmptyOkWithUnmatchedParams()
        {
            // Arrange
            MessageRequest request = new MessageRequest();

            request.RequestedQueries.Add(new MessageInfo
            {
                MessageId        = "00000000-0000-0000-0000-000000000002",
                MessageTimestamp = 0
            });
            request.RequestedQueries.Add(new MessageInfo
            {
                MessageId        = "00000000-0000-0000-0000-000000000003",
                MessageTimestamp = 0
            });

            // Act
            ActionResult <MatchMessageResponse> controllerResponse = await this._controller
                                                                     .PostAsync(request, CancellationToken.None);

            // Assert
            Assert.IsNotNull(controllerResponse);
            Assert.IsInstanceOfType(controllerResponse.Result, typeof(OkObjectResult));
            OkObjectResult castedResult = controllerResponse.Result as OkObjectResult;

            Assert.IsInstanceOfType(castedResult.Value, typeof(MatchMessageResponse));
            MatchMessageResponse listResult = castedResult.Value as MatchMessageResponse;

            Assert.AreEqual(0, listResult.MatchMessages.Count());
        }
        public async Task PostAsync_OkWithMatchedParameters()
        {
            // Arrange
            IEnumerable <string> ids = new string[]
            {
                "00000000-0000-0000-0000-000000000001",
                "00000000-0000-0000-0000-000000000002"
            };
            MessageContainer result1 = new MessageContainer();
            MessageContainer result2 = new MessageContainer();
            IEnumerable <MessageContainer> toReturn = new List <MessageContainer>
            {
                result1,
                result2
            };

            this._repo
            .Setup(s => s.GetRangeAsync(ids, CancellationToken.None))
            .Returns(Task.FromResult(toReturn));

            MessageRequest request = new MessageRequest();

            request.RequestedQueries.Add(new MessageInfo
            {
                MessageId        = ids.ElementAt(0),
                MessageTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
            });
            request.RequestedQueries.Add(new MessageInfo
            {
                MessageId        = ids.ElementAt(1),
                MessageTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
            });

            // Act
            ActionResult <MatchMessageResponse> controllerResponse = await this._controller
                                                                     .PostAsync(request, CancellationToken.None);

            // Assert
            Assert.IsNotNull(controllerResponse);
            Assert.IsInstanceOfType(controllerResponse.Result, typeof(OkObjectResult));
            OkObjectResult castedResult = controllerResponse.Result as OkObjectResult;

            Assert.IsInstanceOfType(castedResult.Value, typeof(MatchMessageResponse));
            MatchMessageResponse listResult = castedResult.Value as MatchMessageResponse;

            Assert.AreEqual(toReturn.Count(), listResult.MatchMessages.Count());
        }