示例#1
0
        public void Read_Works()
        {
            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}\"}}";
            var converter = new ProblemDetailsJsonConverter();
            var reader    = new Utf8JsonReader(Encoding.UTF8.GetBytes(json));

            var problemDetails = converter.Read(ref reader, typeof(ProblemDetails), 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());
            });
        }
示例#2
0
        public void Read_ThrowsIfJsonIsIncomplete()
        {
            var json      = "{";
            var converter = new ProblemDetailsJsonConverter();

            var ex = Record.Exception(() =>
            {
                var reader = new Utf8JsonReader(Encoding.UTF8.GetBytes(json));
                converter.Read(ref reader, typeof(ProblemDetails), JsonSerializerOptions);
            });

            Assert.IsAssignableFrom <JsonException>(ex);
        }