Пример #1
0
        public async Task CreateCustomer_WhenCalledWithInvalidJson_ReturnsBadRequest()
        {
            var expectedCustomer = default(Customer);

            mockCustomerRepository.Setup(cr => cr.CreateItemAsync(expectedCustomer))
            .Returns(Task.FromResult(new Customer()));

            var jsonValidationResult = new JsonValidationResult <Customer>()
            {
                IsValid = false,
                Message = new HttpResponseMessage(HttpStatusCode.BadRequest),
            };

            mockJsonHttpContentValidator.Setup(jhcv => jhcv.ValidateJsonAsync <Customer, CustomerValidator>(It.IsAny <StringContent>()))
            .Returns(Task.FromResult(jsonValidationResult));

            using var httpRequestMessage = new HttpRequestMessage()
                  {
                      Content = new StringContent(JsonSerializer.Serialize(expectedCustomer), Encoding.UTF8, MediaTypeNames.Application.Json)
                  };

            var customerFunctions   = serviceProvider.GetRequiredService <CustomerFunctions>();
            var httpResponseMessage = await customerFunctions.CreateCustomer(httpRequestMessage, mockLogger.Object);

            httpResponseMessage.IsSuccessStatusCode.Should().BeFalse();
            httpResponseMessage.StatusCode.Should().Be(HttpStatusCode.BadRequest);
        }
Пример #2
0
        public async Task CreateCustomer_WhenCalled_ReturnsValidCustomer()
        {
            var expectedCustomer = new Customer()
            {
                FirstName = "John",
                LastName  = "Doe",
                BirthDate = DateTime.Now.AddYears(-18),
            };

            mockCustomerRepository.Setup(cr => cr.CreateItemAsync(expectedCustomer))
            .Returns(Task.FromResult(new Customer()
            {
                Id        = Guid.NewGuid(),
                FirstName = expectedCustomer.FirstName,
                LastName  = expectedCustomer.LastName,
                BirthDate = expectedCustomer.BirthDate,
            }));

            var jsonValidationResult = new JsonValidationResult <Customer>()
            {
                IsValid = true,
                Item    = expectedCustomer,
            };

            mockJsonHttpContentValidator.Setup(jhcv => jhcv.ValidateJsonAsync <Customer, CustomerValidator>(It.IsAny <StringContent>()))
            .Returns(Task.FromResult(jsonValidationResult));

            using var httpRequestMessage = new HttpRequestMessage()
                  {
                      Content = new StringContent(JsonSerializer.Serialize(expectedCustomer), Encoding.UTF8, MediaTypeNames.Application.Json)
                  };

            var jsonTextSerializer  = serviceProvider.GetRequiredService <IJsonTextSerializer>();
            var customerFunctions   = serviceProvider.GetRequiredService <CustomerFunctions>();
            var httpResponseMessage = await customerFunctions.CreateCustomer(httpRequestMessage, mockLogger.Object);

            httpResponseMessage.IsSuccessStatusCode.Should().BeTrue();
            httpResponseMessage.StatusCode.Should().Be(HttpStatusCode.Created);
            httpResponseMessage.Content.Headers.ContentType.MediaType.Should().Be(ContentTypes.Application.Json);

            var contentStream = await httpResponseMessage.Content.ReadAsStreamAsync();

            var actualCustomer = await jsonTextSerializer.DeserializeObjectAsync <Customer>(contentStream);

            actualCustomer.Id.Should().NotBeEmpty();
            actualCustomer.FirstName.Should().Be(expectedCustomer.FirstName);
            actualCustomer.LastName.Should().Be(expectedCustomer.LastName);
            actualCustomer.BirthDate.Should().Be(expectedCustomer.BirthDate);
        }
Пример #3
0
        public static JsonValidationResult <T> ValidateJsonModel <T>(this string json)
        {
            var vr = new JsonValidationResult <T>
            {
                Model = new List <T>()
            };

            if (!string.IsNullOrWhiteSpace(json))
            {
                vr.IsJsonEmpty = false;

                try
                {
                    vr.Model = JsonHelper.JsonDeserialize <List <T> >(json);

                    vr.IsJsonDeserialized = true;

                    if (vr.Model.Any())
                    {
                        vr.IsModelEmpty = false;
                        vr.Message      = "Model Not Empty And Valid";

                        foreach (var model in vr.Model)
                        {
                            if (!ValidateModel(model))
                            {
                                vr.IsModelValid = false;

                                vr.Message = "Model Not Empty And Invalid";

                                break;
                            }
                        }
                    }
                    else
                    {
                        vr.Message = "Model Empty And Valid";
                    }
                }
                catch (Exception)
                {
                    vr.Message = "Json Deserialization Failed";
                }
            }

            return(vr);
        }