Skip to content

Commit

Permalink
Do not generate Content for request parameters in OpenAPI (#45439)
Browse files Browse the repository at this point in the history
Co-authored-by: Safia Abdalla <safia@microsoft.com>
  • Loading branch information
github-actions[bot] and captainsafia committed Jan 4, 2023
1 parent d2a2886 commit 85f905e
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 18 deletions.
20 changes: 2 additions & 18 deletions src/OpenApi/src/OpenApiGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ private OpenApiOperation GetOperation(string httpMethod, MethodInfo methodInfo,
Summary = metadata.GetMetadata<IEndpointSummaryMetadata>()?.Summary,
Description = metadata.GetMetadata<IEndpointDescriptionMetadata>()?.Description,
Tags = GetOperationTags(methodInfo, metadata),
Parameters = GetOpenApiParameters(methodInfo, metadata, pattern, disableInferredBody),
Parameters = GetOpenApiParameters(methodInfo, pattern, disableInferredBody),
RequestBody = GetOpenApiRequestBody(methodInfo, metadata, pattern),
Responses = GetOpenApiResponses(methodInfo, metadata)
};
Expand Down Expand Up @@ -356,7 +356,7 @@ private List<OpenApiTag> GetOperationTags(MethodInfo methodInfo, EndpointMetadat
return new List<OpenApiTag>() { new OpenApiTag() { Name = controllerName } };
}

private List<OpenApiParameter> GetOpenApiParameters(MethodInfo methodInfo, EndpointMetadataCollection metadata, RoutePattern pattern, bool disableInferredBody)
private List<OpenApiParameter> GetOpenApiParameters(MethodInfo methodInfo, RoutePattern pattern, bool disableInferredBody)
{
var parameters = PropertyAsParameterInfo.Flatten(methodInfo.GetParameters(), ParameterBindingMethodCache);
var openApiParameters = new List<OpenApiParameter>();
Expand Down Expand Up @@ -384,7 +384,6 @@ private List<OpenApiParameter> GetOpenApiParameters(MethodInfo methodInfo, Endpo
{
Name = name,
In = parameterLocation,
Content = GetOpenApiParameterContent(metadata),
Required = !isOptional

};
Expand All @@ -394,21 +393,6 @@ private List<OpenApiParameter> GetOpenApiParameters(MethodInfo methodInfo, Endpo
return openApiParameters;
}

private static Dictionary<string, OpenApiMediaType> GetOpenApiParameterContent(EndpointMetadataCollection metadata)
{
var openApiParameterContent = new Dictionary<string, OpenApiMediaType>();
var acceptsMetadata = metadata.GetMetadata<IAcceptsMetadata>();
if (acceptsMetadata is not null)
{
foreach (var contentType in acceptsMetadata.ContentTypes)
{
openApiParameterContent.Add(contentType, new OpenApiMediaType());
}
}

return openApiParameterContent;
}

private (bool isBodyOrForm, ParameterLocation? locatedIn) GetOpenApiParameterLocation(ParameterInfo parameter, RoutePattern pattern, bool disableInferredBody)
{
var attributes = parameter.GetCustomAttributes();
Expand Down
12 changes: 12 additions & 0 deletions src/OpenApi/test/OpenApiGeneratorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,7 @@ static void AssertPathParameter(OpenApiOperation operation)
{
var param = Assert.Single(operation.Parameters);
Assert.Equal(ParameterLocation.Path, param.In);
Assert.Empty(param.Content);
}

AssertPathParameter(GetOpenApiOperation((int foo) => { }, "/{foo}"));
Expand All @@ -335,6 +336,7 @@ static void AssertPathParameter(OpenApiOperation operation)
{
var param = Assert.Single(operation.Parameters);
Assert.Equal(ParameterLocation.Path, param.In);
Assert.Empty(param.Content);
}
AssertPathParameter(GetOpenApiOperation((TryParseStringRecord foo) => { }, pattern: "/{foo}"));
}
Expand All @@ -346,6 +348,7 @@ static void AssertPathParameter(OpenApiOperation operation)
{
var param = Assert.Single(operation.Parameters);
Assert.Equal(ParameterLocation.Path, param.In);
Assert.Empty(param.Content);
}

AssertPathParameter(GetOpenApiOperation((int? foo) => { }, "/{foo}"));
Expand All @@ -359,6 +362,7 @@ static void AssertPathParameter(OpenApiOperation operation)
{
var param = Assert.Single(operation.Parameters);
Assert.Equal(ParameterLocation.Path, param.In);
Assert.Empty(param.Content);
}
AssertPathParameter(GetOpenApiOperation((TryParseStringRecordStruct foo) => { }, pattern: "/{foo}"));
}
Expand All @@ -370,6 +374,7 @@ static void AssertQueryParameter(OpenApiOperation operation, string type)
{
var param = Assert.Single(operation.Parameters); ;
Assert.Equal(ParameterLocation.Query, param.In);
Assert.Empty(param.Content);
}

AssertQueryParameter(GetOpenApiOperation((int foo) => { }, "/"), "integer");
Expand All @@ -388,6 +393,7 @@ public void AddsFromHeaderParameterAsHeader()
var param = Assert.Single(operation.Parameters);

Assert.Equal(ParameterLocation.Header, param.In);
Assert.Empty(param.Content);
}

[Fact]
Expand Down Expand Up @@ -430,11 +436,13 @@ public void AddsMultipleParameters()
Assert.Equal("foo", fooParam.Name);
Assert.Equal(ParameterLocation.Path, fooParam.In);
Assert.True(fooParam.Required);
Assert.Empty(fooParam.Content);

var barParam = operation.Parameters[1];
Assert.Equal("bar", barParam.Name);
Assert.Equal(ParameterLocation.Query, barParam.In);
Assert.True(barParam.Required);
Assert.Empty(barParam.Content);

var fromBodyParam = operation.RequestBody;
var fromBodyContent = Assert.Single(fromBodyParam.Content);
Expand All @@ -455,12 +463,14 @@ static void AssertParameters(OpenApiOperation operation, string capturedName = "
Assert.Equal(capturedName, param.Name);
Assert.Equal(ParameterLocation.Path, param.In);
Assert.True(param.Required);
Assert.Empty(param.Content);
},
param =>
{
Assert.Equal("Bar", param.Name);
Assert.Equal(ParameterLocation.Query, param.In);
Assert.True(param.Required);
Assert.Empty(param.Content);
}
);
}
Expand All @@ -485,11 +495,13 @@ public void TestParameterIsRequired()
Assert.Equal("foo", fooParam.Name);
Assert.Equal(ParameterLocation.Path, fooParam.In);
Assert.True(fooParam.Required);
Assert.Empty(fooParam.Content);

var barParam = operation.Parameters[1];
Assert.Equal("bar", barParam.Name);
Assert.Equal(ParameterLocation.Query, barParam.In);
Assert.False(barParam.Required);
Assert.Empty(barParam.Content);
}

[Fact]
Expand Down

0 comments on commit 85f905e

Please sign in to comment.