public override ValidationProblemDetails Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var problemDetails = new ValidationProblemDetails(); HttpValidationProblemDetailsJsonConverter.ReadProblemDetails(ref reader, options, problemDetails); return(problemDetails); }
public void Read_Works() { // Arrange var type = "https://tools.ietf.org/html/rfc7231#section-6.5.4"; var title = "Not found"; var status = 404; var detail = "Product not found"; var instance = "http://example.com/products/14"; var traceId = "|37dd3dd5-4a9619f953c40a16."; var json = $"{{\"type\":\"{type}\",\"title\":\"{title}\",\"status\":{status},\"detail\":\"{detail}\", \"instance\":\"{instance}\",\"traceId\":\"{traceId}\"," + "\"errors\":{\"key0\":[\"error0\"],\"key1\":[\"error1\",\"error2\"]}}"; var converter = new HttpValidationProblemDetailsJsonConverter(); var reader = new Utf8JsonReader(Encoding.UTF8.GetBytes(json)); reader.Read(); // Act var problemDetails = converter.Read(ref reader, typeof(HttpValidationProblemDetails), JsonSerializerOptions); Assert.Equal(type, problemDetails.Type); Assert.Equal(title, problemDetails.Title); Assert.Equal(status, problemDetails.Status); Assert.Equal(instance, problemDetails.Instance); Assert.Equal(detail, problemDetails.Detail); Assert.Collection( problemDetails.Extensions, kvp => { Assert.Equal("traceId", kvp.Key); Assert.Equal(traceId, kvp.Value?.ToString()); }); Assert.Collection( problemDetails.Errors.OrderBy(kvp => kvp.Key), kvp => { Assert.Equal("key0", kvp.Key); Assert.Equal(new[] { "error0" }, kvp.Value); }, kvp => { Assert.Equal("key1", kvp.Key); Assert.Equal(new[] { "error1", "error2" }, kvp.Value); }); }
public override void Write(Utf8JsonWriter writer, ValidationProblemDetails value, JsonSerializerOptions options) { HttpValidationProblemDetailsJsonConverter.WriteProblemDetails(writer, value, options); }