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); }
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); }
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); }