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)) {