Skip to content
This repository was archived by the owner on Nov 8, 2024. It is now read-only.

Commit fe1df47

Browse files
committed
fix(oas3): support referencing headers from responses component
1 parent 64f7bf4 commit fe1df47

File tree

4 files changed

+186
-1
lines changed

4 files changed

+186
-1
lines changed

packages/fury-adapter-oas3-parser/lib/parser/oas/parseComponentsObject.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ function parseComponentsObject(context, element) {
177177
[R.T, createInvalidMemberWarning(namespace, name)],
178178
]);
179179

180-
const order = ['schemas'];
180+
const order = ['schemas', 'headers'];
181181
return parseObject(context, name, parseMember, [], order)(element);
182182
}
183183

packages/fury-adapter-oas3-parser/test/integration/components-test.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ describe('components', () => {
3434
return testParseFixture(file);
3535
});
3636

37+
it("'Responses Object' respomnse references with headers", () => {
38+
const file = path.join(fixtures, 'responses-object-response-with-headers');
39+
return testParseFixture(file);
40+
});
41+
3742
it("'Response Object' headers references", () => {
3843
const file = path.join(fixtures, 'response-object-headers');
3944
return testParseFixture(file);
Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
{
2+
"element": "parseResult",
3+
"content": [
4+
{
5+
"element": "category",
6+
"meta": {
7+
"classes": {
8+
"element": "array",
9+
"content": [
10+
{
11+
"element": "string",
12+
"content": "api"
13+
}
14+
]
15+
},
16+
"title": {
17+
"element": "string",
18+
"content": "Response Components with Headers"
19+
}
20+
},
21+
"attributes": {
22+
"version": {
23+
"element": "string",
24+
"content": "1.0.0"
25+
}
26+
},
27+
"content": [
28+
{
29+
"element": "resource",
30+
"attributes": {
31+
"href": {
32+
"element": "string",
33+
"content": "/user"
34+
}
35+
},
36+
"content": [
37+
{
38+
"element": "transition",
39+
"meta": {
40+
"title": {
41+
"element": "string",
42+
"content": "View the current User"
43+
}
44+
},
45+
"content": [
46+
{
47+
"element": "httpTransaction",
48+
"content": [
49+
{
50+
"element": "httpRequest",
51+
"attributes": {
52+
"method": {
53+
"element": "string",
54+
"content": "GET"
55+
}
56+
}
57+
},
58+
{
59+
"element": "httpResponse",
60+
"attributes": {
61+
"headers": {
62+
"element": "httpHeaders",
63+
"content": [
64+
{
65+
"element": "member",
66+
"content": {
67+
"key": {
68+
"element": "string",
69+
"content": "X-Rate-Limit-Limit"
70+
},
71+
"value": {
72+
"element": "string"
73+
}
74+
}
75+
}
76+
]
77+
},
78+
"statusCode": {
79+
"element": "string",
80+
"content": "200"
81+
}
82+
},
83+
"content": [
84+
{
85+
"element": "copy",
86+
"content": "A user"
87+
}
88+
]
89+
}
90+
]
91+
}
92+
]
93+
}
94+
]
95+
}
96+
]
97+
},
98+
{
99+
"element": "annotation",
100+
"meta": {
101+
"classes": {
102+
"element": "array",
103+
"content": [
104+
{
105+
"element": "string",
106+
"content": "warning"
107+
}
108+
]
109+
}
110+
},
111+
"attributes": {
112+
"sourceMap": {
113+
"element": "array",
114+
"content": [
115+
{
116+
"element": "sourceMap",
117+
"content": [
118+
{
119+
"element": "array",
120+
"content": [
121+
{
122+
"element": "number",
123+
"attributes": {
124+
"line": {
125+
"element": "number",
126+
"content": 21
127+
},
128+
"column": {
129+
"element": "number",
130+
"content": 7
131+
}
132+
},
133+
"content": 439
134+
},
135+
{
136+
"element": "number",
137+
"attributes": {
138+
"line": {
139+
"element": "number",
140+
"content": 21
141+
},
142+
"column": {
143+
"element": "number",
144+
"content": 18
145+
}
146+
},
147+
"content": 11
148+
}
149+
]
150+
}
151+
]
152+
}
153+
]
154+
}
155+
},
156+
"content": "'Header Object' contains unsupported key 'description'"
157+
}
158+
]
159+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
openapi: 3.0.0
2+
info:
3+
version: 1.0.0
4+
title: Response Components with Headers
5+
paths:
6+
/user:
7+
get:
8+
summary: View the current User
9+
responses:
10+
'200':
11+
$ref: '#/components/responses/UserResponse'
12+
components:
13+
responses:
14+
UserResponse:
15+
description: A user
16+
headers:
17+
X-Rate-Limit-Limit:
18+
$ref: '#/components/headers/X-Rate-Limit-Limit'
19+
headers:
20+
X-Rate-Limit-Limit:
21+
description: The number of allowed requests in the current period

0 commit comments

Comments
 (0)