public void GetClientError_UsesActivityId_ToSetTraceId()
    {
        // Arrange
        using (new ActivityReplacer())
        {
            var clientError           = new UnsupportedMediaTypeResult();
            var problemDetailsFactory = new DefaultProblemDetailsFactory(Options.Create(new ApiBehaviorOptions
            {
                ClientErrorMapping =
                {
                    [405] = new ClientErrorData {
                        Link = "Some link", Title = "Summary"
                    },
                },
            }));
            var factory = new ProblemDetailsClientErrorFactory(problemDetailsFactory);

            // Act
            var result = factory.GetClientError(GetActionContext(), clientError);

            // Assert
            var objectResult = Assert.IsType <ObjectResult>(result);
            Assert.Equal(new[] { "application/problem+json", "application/problem+xml" }, objectResult.ContentTypes);
            var problemDetails = Assert.IsType <ProblemDetails>(objectResult.Value);

            Assert.Equal(Activity.Current.Id, problemDetails.Extensions["traceId"]);
        }
    }
    public void GetClientError_ReturnsProblemDetails()
    {
        // Arrange
        var clientError           = new UnsupportedMediaTypeResult();
        var problemDetailsFactory = new DefaultProblemDetailsFactory(Options.Create(new ApiBehaviorOptions
        {
            ClientErrorMapping =
            {
                [415] = new ClientErrorData {
                    Link = "Some link", Title = "Summary"
                },
            },
        }));
        var factory = new ProblemDetailsClientErrorFactory(problemDetailsFactory);

        // Act
        var result = factory.GetClientError(GetActionContext(), clientError);

        // Assert
        var objectResult = Assert.IsType <ObjectResult>(result);

        Assert.Equal(new[] { "application/problem+json", "application/problem+xml" }, objectResult.ContentTypes);
        var problemDetails = Assert.IsType <ProblemDetails>(objectResult.Value);

        Assert.Equal(415, problemDetails.Status);
        Assert.Equal("Some link", problemDetails.Type);
        Assert.Equal("Summary", problemDetails.Title);
        Assert.Null(problemDetails.Detail);
        Assert.Null(problemDetails.Instance);
    }