Skip to content

Commit 86892b3

Browse files
committed
fix: callback reference annotations parsing
Signed-off-by: Vincent Biret <[email protected]>
1 parent 9248560 commit 86892b3

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ public static IOpenApiCallback LoadCallback(ParseNode node, OpenApiDocument host
2222
{
2323
var mapNode = node.CheckMapNode("callback");
2424

25-
if (mapNode.GetReferencePointer() is {} pointer)
25+
if (mapNode.GetReferencePointer() is { } pointer)
2626
{
2727
var reference = GetReferenceIdAndExternalResource(pointer);
28-
return new OpenApiCallbackReference(reference.Item1, hostDocument, reference.Item2);
28+
var callbackReference = new OpenApiCallbackReference(reference.Item1, hostDocument, reference.Item2);
29+
callbackReference.Reference.SetMetadataFromMapNode(mapNode);
30+
return callbackReference;
2931
}
3032

3133
var domainObject = new OpenApiCallback();
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System.Text.Json.Nodes;
2+
using Microsoft.OpenApi.Reader;
3+
using Microsoft.OpenApi.Reader.V31;
4+
using Xunit;
5+
6+
namespace Microsoft.OpenApi.Readers.Tests.V31Tests;
7+
8+
public class OpenApiCallbackReferenceDeserializerTests
9+
{
10+
[Fact]
11+
public void ShouldDeserializeCallbackReferenceAnnotations()
12+
{
13+
var json =
14+
"""
15+
{
16+
"$ref": "#/components/callbacks/MyCallback"
17+
}
18+
""";
19+
20+
var hostDocument = new OpenApiDocument();
21+
hostDocument.AddComponent("MyCallback", new OpenApiCallback
22+
{
23+
// Optionally add a PathItem or similar here if needed
24+
});
25+
var jsonNode = JsonNode.Parse(json);
26+
var parseNode = ParseNode.Create(new ParsingContext(new()), jsonNode);
27+
28+
var result = OpenApiV31Deserializer.LoadCallback(parseNode, hostDocument);
29+
30+
Assert.NotNull(result);
31+
var resultReference = Assert.IsType<OpenApiCallbackReference>(result);
32+
33+
Assert.Equal("MyCallback", resultReference.Reference.Id);
34+
Assert.NotNull(resultReference.Target);
35+
}
36+
}

0 commit comments

Comments
 (0)