Skip to content

Commit 9248560

Browse files
committed
fix: loading of header reference description
Signed-off-by: Vincent Biret <[email protected]>
1 parent 449ab26 commit 9248560

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

src/Microsoft.OpenApi/Reader/V31/OpenApiHeaderDeserializer.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,9 @@ public static IOpenApiHeader LoadHeader(ParseNode node, OpenApiDocument hostDocu
114114
if (pointer != null)
115115
{
116116
var reference = GetReferenceIdAndExternalResource(pointer);
117-
return new OpenApiHeaderReference(reference.Item1, hostDocument, reference.Item2);
117+
var headerReference = new OpenApiHeaderReference(reference.Item1, hostDocument, reference.Item2);
118+
headerReference.Reference.SetMetadataFromMapNode(mapNode);
119+
return headerReference;
118120
}
119121

120122
var header = new OpenApiHeader();
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
2+
using System.Text.Json.Nodes;
3+
using Microsoft.OpenApi.Reader;
4+
using Microsoft.OpenApi.Reader.V31;
5+
using Xunit;
6+
7+
namespace Microsoft.OpenApi.Readers.Tests.V31Tests;
8+
9+
public class OpenApiHeaderReferenceDeserializerTests
10+
{
11+
[Fact]
12+
public void ShouldDeserializeReferenceAnnotations()
13+
{
14+
var json =
15+
"""
16+
{
17+
"$ref": "#/components/headers/MyHeader",
18+
"description": "This is a header reference"
19+
}
20+
""";
21+
22+
var hostDocument = new OpenApiDocument();
23+
hostDocument.AddComponent("MyHeader", new OpenApiHeader
24+
{
25+
Description = "This is a header"
26+
});
27+
var jsonNode = JsonNode.Parse(json);
28+
var parseNode = ParseNode.Create(new ParsingContext(new()), jsonNode);
29+
30+
var result = OpenApiV31Deserializer.LoadHeader(parseNode, hostDocument);
31+
32+
Assert.NotNull(result);
33+
var resultReference = Assert.IsType<OpenApiHeaderReference>(result);
34+
35+
Assert.Equal("MyHeader", resultReference.Reference.Id);
36+
Assert.Equal("This is a header reference", resultReference.Description);
37+
Assert.NotNull(resultReference.Target);
38+
}
39+
}

0 commit comments

Comments
 (0)