Skip to content

Commit f7e3eaa

Browse files
committed
Add a test
1 parent 74eec4e commit f7e3eaa

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

src/Mvc/Mvc.Core/test/DependencyInjection/ApiBehaviorOptionsSetupTest.cs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,31 @@ public void ProblemDetailsInvalidModelStateResponse_ReturnsBadRequestWithProblem
5151
Assert.Equal("https://tools.ietf.org/html/rfc7231#section-6.5.1", problemDetails.Type);
5252
}
5353

54+
[Fact]
55+
public void ProblemDetailsInvalidModelStateResponse_UsesUserConfiguredLink()
56+
{
57+
// Arrange
58+
var link = "http://mylink";
59+
var actionContext = new ActionContext
60+
{
61+
HttpContext = new DefaultHttpContext { TraceIdentifier = "42" },
62+
};
63+
64+
var factory = GetInvalidModelStateResponseFactory(options => options.ClientErrorMapping[400].Link = link);
65+
66+
// Act
67+
var result = factory(actionContext);
68+
69+
// Assert
70+
var badRequest = Assert.IsType<BadRequestObjectResult>(result);
71+
Assert.Equal(new[] { "application/problem+json", "application/problem+xml" }, badRequest.ContentTypes.OrderBy(c => c));
72+
73+
var problemDetails = Assert.IsType<ValidationProblemDetails>(badRequest.Value);
74+
Assert.Equal(400, problemDetails.Status);
75+
Assert.Equal("One or more validation errors occurred.", problemDetails.Title);
76+
Assert.Equal(link, problemDetails.Type);
77+
}
78+
5479
[Fact]
5580
public void ProblemDetailsInvalidModelStateResponse_SetsTraceId()
5681
{
@@ -92,12 +117,16 @@ public void ProblemDetailsInvalidModelStateResponse_SetsTraceIdFromRequest_IfAct
92117
Assert.Equal("42", problemDetails.Extensions["traceId"]);
93118
}
94119

95-
private static Func<ActionContext, IActionResult> GetInvalidModelStateResponseFactory()
120+
private static Func<ActionContext, IActionResult> GetInvalidModelStateResponseFactory(Action<ApiBehaviorOptions> configure = null)
96121
{
97122
var options = new ApiBehaviorOptions();
98123
var setup = new ApiBehaviorOptionsSetup();
99124

100125
setup.Configure(options);
126+
if (configure != null)
127+
{
128+
configure(options);
129+
}
101130

102131
var factory = options.InvalidModelStateResponseFactory;
103132
return factory;

0 commit comments

Comments
 (0)