Skip to content

Commit 01656b4

Browse files
committed
Address more feedback
1 parent 6447c73 commit 01656b4

File tree

4 files changed

+31
-6
lines changed

4 files changed

+31
-6
lines changed

src/OpenApi/sample/Sample.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
</ItemGroup>
2020

2121
<ItemGroup>
22-
<ProjectReference Include="../test/Microsoft.AspNetCore.OpenApi.Tests.csproj" />
22+
<Compile Include="../test/SharedTypes.cs" />
2323
</ItemGroup>
2424

2525
</Project>

src/OpenApi/src/Services/OpenApiConstants.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ internal static class OpenApiConstants
99
internal const string DefaultOpenApiVersion = "1.0.0";
1010
internal const string DefaultOpenApiRoute = "/openapi/{documentName}.json";
1111
internal const string DescriptionId = "x-aspnetcore-id";
12-
internal const string DefaultResponseStatusCode = "default";
12+
internal const string DefaultOpenApiResponseKey = "default";
1313
}

src/OpenApi/src/Services/OpenApiDocumentService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -181,10 +181,10 @@ private static OpenApiResponses GetResponses(ApiDescription description)
181181
// the response for all HTTP status codes that are not explicitly defined
182182
// for a given operation. This is typically used to describe catch-all scenarios
183183
// like error responses.
184-
var statusCode = responseType.IsDefaultResponse
185-
? OpenApiConstants.DefaultResponseStatusCode
184+
var responseKey = responseType.IsDefaultResponse
185+
? OpenApiConstants.DefaultOpenApiResponseKey
186186
: responseType.StatusCode.ToString(CultureInfo.InvariantCulture);
187-
responses.Add(statusCode, GetResponse(description, responseType.StatusCode, responseType));
187+
responses.Add(responseKey, GetResponse(description, responseType.StatusCode, responseType));
188188
}
189189
return responses;
190190
}

src/OpenApi/test/Services/OpenApiDocumentServiceTests.Responses.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,34 @@ await VerifyOpenApiDocument(builder, document =>
224224
{
225225
var operation = Assert.Single(document.Paths["/api/todos"].Operations.Values);
226226
var response = Assert.Single(operation.Responses);
227-
Assert.Equal(Microsoft.AspNetCore.OpenApi.OpenApiConstants.DefaultResponseStatusCode, response.Key);
227+
Assert.Equal(Microsoft.AspNetCore.OpenApi.OpenApiConstants.DefaultOpenApiResponseKey, response.Key);
228228
Assert.Empty(response.Value.Description);
229229
// Todo: Validate generated schema.
230230
});
231231
}
232+
233+
[Fact]
234+
public async Task GetOpenApiResponse_SupportsGeneratingDefaultResponseWithSuccessResponse()
235+
{
236+
// Arrange
237+
var builder = CreateBuilder();
238+
239+
// Act
240+
builder.MapGet("/api/todos", [ProducesDefaultResponseType(typeof(Error))] () => { })
241+
.WithMetadata(new ProducesResponseTypeMetadata(StatusCodes.Status200OK, typeof(Todo), ["application/json"]));
242+
243+
// Assert
244+
await VerifyOpenApiDocument(builder, document =>
245+
{
246+
var operation = Assert.Single(document.Paths["/api/todos"].Operations.Values);
247+
var defaultResponse = operation.Responses[Microsoft.AspNetCore.OpenApi.OpenApiConstants.DefaultOpenApiResponseKey];
248+
Assert.NotNull(defaultResponse);
249+
Assert.Empty(defaultResponse.Description);
250+
var okResponse = operation.Responses["200"];
251+
Assert.NotNull(okResponse);
252+
Assert.Equal("OK", okResponse.Description);
253+
Assert.Equal("application/json", Assert.Single(okResponse.Content).Key);
254+
// Todo: Validate generated schema.
255+
});
256+
}
232257
}

0 commit comments

Comments
 (0)