diff --git a/src/Microsoft.OpenApi.OData.Reader/Microsoft.OpenAPI.OData.Reader.csproj b/src/Microsoft.OpenApi.OData.Reader/Microsoft.OpenAPI.OData.Reader.csproj
index 4c537ad9..6fbdc580 100644
--- a/src/Microsoft.OpenApi.OData.Reader/Microsoft.OpenAPI.OData.Reader.csproj
+++ b/src/Microsoft.OpenApi.OData.Reader/Microsoft.OpenAPI.OData.Reader.csproj
@@ -15,7 +15,7 @@
netstandard2.0
Microsoft.OpenApi.OData
true
- 1.5.0-preview5
+ 1.5.0-preview6
This package contains the codes you need to convert OData CSDL to Open API Document of Model.
© Microsoft Corporation. All rights reserved.
Microsoft OpenApi OData EDM
@@ -26,6 +26,7 @@
- Fixes casing in default propertyName for `innerError` in the `ErrorMainSchema`
- Adds support for `x-ms-enum-flags` extension for flagged enums
- Use containment together with RequiresExplicitBinding annotation to check whether to append bound operations to navigation properties #430
+- Adds schema to content types of stream properties that have a collection of acceptable media types #435
Microsoft.OpenApi.OData.Reader
..\..\tool\Microsoft.OpenApi.OData.snk
diff --git a/src/Microsoft.OpenApi.OData.Reader/Operation/MediaEntityOperationalHandler.cs b/src/Microsoft.OpenApi.OData.Reader/Operation/MediaEntityOperationalHandler.cs
index e53ad674..d3f257ac 100644
--- a/src/Microsoft.OpenApi.OData.Reader/Operation/MediaEntityOperationalHandler.cs
+++ b/src/Microsoft.OpenApi.OData.Reader/Operation/MediaEntityOperationalHandler.cs
@@ -136,14 +136,6 @@ protected string GetOperationId(string prefix, string identifier)
/// The entity content description.
protected IDictionary GetContentDescription()
{
- var content = new Dictionary();
-
- OpenApiSchema schema = new OpenApiSchema
- {
- Type = "string",
- Format = "binary"
- };
-
// Fetch the respective AcceptableMediaTypes
(_, var property) = GetStreamElements();
IEnumerable mediaTypes = null;
@@ -153,11 +145,21 @@ protected IDictionary GetContentDescription()
CoreConstants.AcceptableMediaTypes);
}
+ OpenApiSchema schema = new()
+ {
+ Type = "string",
+ Format = "binary"
+ };
+
+ var content = new Dictionary();
if (mediaTypes != null)
{
foreach (string item in mediaTypes)
{
- content.Add(item, null);
+ content.Add(item, new OpenApiMediaType
+ {
+ Schema = schema
+ });
}
}
else
diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/MediaEntityGetOperationHandlerTests.cs b/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/MediaEntityGetOperationHandlerTests.cs
index a3bc9479..eea8e047 100644
--- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/MediaEntityGetOperationHandlerTests.cs
+++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/MediaEntityGetOperationHandlerTests.cs
@@ -93,6 +93,13 @@ private void VerifyMediaEntityGetOperation(string annotation, bool enableOperati
var statusCode = useHTTPStatusCodeClass2XX ? Constants.StatusCodeClass2XX : Constants.StatusCode200;
Assert.Equal(new[] { statusCode, "default" }, getOperation.Responses.Select(r => r.Key));
Assert.Equal(new[] { statusCode, "default" }, getOperation2.Responses.Select(r => r.Key));
+ Assert.NotNull(getOperation.Responses[statusCode].Content.Values?.Select(x => x.Schema));
+
+ foreach (var item in getOperation.Responses[statusCode].Content)
+ {
+ Assert.Equal("binary", item.Value.Schema.Format);
+ Assert.Equal("string", item.Value.Schema.Type);
+ }
if (!string.IsNullOrEmpty(annotation))
{