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

Commit a3d1a21

Browse files
committed
fix(oas3): add accept header to requests
Fixes #413
1 parent f855a73 commit a3d1a21

19 files changed

+535
-0
lines changed

packages/openapi3-parser/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66

77
- Adds support for the Schema Object title property.
88

9+
### Bug Fixes
10+
11+
- Adds an accept header to requests with the matching responses content type.
12+
913
## 0.14.0 (2020-06-24)
1014

1115
### Enhancements

packages/openapi3-parser/lib/parser/oas/parseOperationObject.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,18 @@ function createTransactions(namespace, member, operation) {
4747
const clonedRequest = request.clone();
4848
clonedRequest.method = method;
4949

50+
const { contentType } = response;
51+
if (contentType) {
52+
let { headers } = clonedRequest;
53+
54+
if (!headers) {
55+
headers = new namespace.elements.HttpHeaders();
56+
clonedRequest.headers = headers;
57+
}
58+
59+
headers.unshift(new namespace.elements.Member('Accept', contentType.toValue()));
60+
}
61+
5062
transactions.push(new namespace.elements.HttpTransaction([
5163
clonedRequest,
5264
response.clone(),

packages/openapi3-parser/test/integration/fixtures/auth-scheme-does-not-exist.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,24 @@
5252
"method": {
5353
"element": "string",
5454
"content": "GET"
55+
},
56+
"headers": {
57+
"element": "httpHeaders",
58+
"content": [
59+
{
60+
"element": "member",
61+
"content": {
62+
"key": {
63+
"element": "string",
64+
"content": "Accept"
65+
},
66+
"value": {
67+
"element": "string",
68+
"content": "application/json"
69+
}
70+
}
71+
}
72+
]
5573
}
5674
}
5775
},

packages/openapi3-parser/test/integration/fixtures/auth-scheme-does-not-exist.sourcemap.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,24 @@
177177
}
178178
},
179179
"content": "GET"
180+
},
181+
"headers": {
182+
"element": "httpHeaders",
183+
"content": [
184+
{
185+
"element": "member",
186+
"content": {
187+
"key": {
188+
"element": "string",
189+
"content": "Accept"
190+
},
191+
"value": {
192+
"element": "string",
193+
"content": "application/json"
194+
}
195+
}
196+
}
197+
]
180198
}
181199
}
182200
},

packages/openapi3-parser/test/integration/fixtures/auth-scheme-global.json

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,24 @@
114114
"method": {
115115
"element": "string",
116116
"content": "GET"
117+
},
118+
"headers": {
119+
"element": "httpHeaders",
120+
"content": [
121+
{
122+
"element": "member",
123+
"content": {
124+
"key": {
125+
"element": "string",
126+
"content": "Accept"
127+
},
128+
"value": {
129+
"element": "string",
130+
"content": "application/json"
131+
}
132+
}
133+
}
134+
]
117135
}
118136
}
119137
},
@@ -188,6 +206,24 @@
188206
"method": {
189207
"element": "string",
190208
"content": "PATCH"
209+
},
210+
"headers": {
211+
"element": "httpHeaders",
212+
"content": [
213+
{
214+
"element": "member",
215+
"content": {
216+
"key": {
217+
"element": "string",
218+
"content": "Accept"
219+
},
220+
"value": {
221+
"element": "string",
222+
"content": "application/json"
223+
}
224+
}
225+
}
226+
]
191227
}
192228
}
193229
},
@@ -252,6 +288,24 @@
252288
"method": {
253289
"element": "string",
254290
"content": "PUT"
291+
},
292+
"headers": {
293+
"element": "httpHeaders",
294+
"content": [
295+
{
296+
"element": "member",
297+
"content": {
298+
"key": {
299+
"element": "string",
300+
"content": "Accept"
301+
},
302+
"value": {
303+
"element": "string",
304+
"content": "application/json"
305+
}
306+
}
307+
}
308+
]
255309
}
256310
}
257311
},

packages/openapi3-parser/test/integration/fixtures/auth-scheme-global.sourcemap.json

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,24 @@
314314
}
315315
},
316316
"content": "GET"
317+
},
318+
"headers": {
319+
"element": "httpHeaders",
320+
"content": [
321+
{
322+
"element": "member",
323+
"content": {
324+
"key": {
325+
"element": "string",
326+
"content": "Accept"
327+
},
328+
"value": {
329+
"element": "string",
330+
"content": "application/json"
331+
}
332+
}
333+
}
334+
]
317335
}
318336
}
319337
},
@@ -463,6 +481,24 @@
463481
}
464482
},
465483
"content": "PATCH"
484+
},
485+
"headers": {
486+
"element": "httpHeaders",
487+
"content": [
488+
{
489+
"element": "member",
490+
"content": {
491+
"key": {
492+
"element": "string",
493+
"content": "Accept"
494+
},
495+
"value": {
496+
"element": "string",
497+
"content": "application/json"
498+
}
499+
}
500+
}
501+
]
466502
}
467503
}
468504
},
@@ -602,6 +638,24 @@
602638
}
603639
},
604640
"content": "PUT"
641+
},
642+
"headers": {
643+
"element": "httpHeaders",
644+
"content": [
645+
{
646+
"element": "member",
647+
"content": {
648+
"key": {
649+
"element": "string",
650+
"content": "Accept"
651+
},
652+
"value": {
653+
"element": "string",
654+
"content": "application/json"
655+
}
656+
}
657+
}
658+
]
605659
}
606660
}
607661
},

packages/openapi3-parser/test/integration/fixtures/auth-scheme.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,24 @@
8787
"method": {
8888
"element": "string",
8989
"content": "GET"
90+
},
91+
"headers": {
92+
"element": "httpHeaders",
93+
"content": [
94+
{
95+
"element": "member",
96+
"content": {
97+
"key": {
98+
"element": "string",
99+
"content": "Accept"
100+
},
101+
"value": {
102+
"element": "string",
103+
"content": "application/json"
104+
}
105+
}
106+
}
107+
]
90108
}
91109
}
92110
},

packages/openapi3-parser/test/integration/fixtures/auth-scheme.sourcemap.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,24 @@
237237
}
238238
},
239239
"content": "GET"
240+
},
241+
"headers": {
242+
"element": "httpHeaders",
243+
"content": [
244+
{
245+
"element": "member",
246+
"content": {
247+
"key": {
248+
"element": "string",
249+
"content": "Accept"
250+
},
251+
"value": {
252+
"element": "string",
253+
"content": "application/json"
254+
}
255+
}
256+
}
257+
]
240258
}
241259
}
242260
},

packages/openapi3-parser/test/integration/fixtures/components/media-type-object-examples.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,24 @@
5252
"method": {
5353
"element": "string",
5454
"content": "GET"
55+
},
56+
"headers": {
57+
"element": "httpHeaders",
58+
"content": [
59+
{
60+
"element": "member",
61+
"content": {
62+
"key": {
63+
"element": "string",
64+
"content": "Accept"
65+
},
66+
"value": {
67+
"element": "string",
68+
"content": "application/json"
69+
}
70+
}
71+
}
72+
]
5573
}
5674
}
5775
},

packages/openapi3-parser/test/integration/fixtures/components/media-type-object-schema-multiple.json

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,24 @@
5252
"method": {
5353
"element": "string",
5454
"content": "GET"
55+
},
56+
"headers": {
57+
"element": "httpHeaders",
58+
"content": [
59+
{
60+
"element": "member",
61+
"content": {
62+
"key": {
63+
"element": "string",
64+
"content": "Accept"
65+
},
66+
"value": {
67+
"element": "string",
68+
"content": "application/json"
69+
}
70+
}
71+
}
72+
]
5573
}
5674
}
5775
},
@@ -126,6 +144,24 @@
126144
"method": {
127145
"element": "string",
128146
"content": "GET"
147+
},
148+
"headers": {
149+
"element": "httpHeaders",
150+
"content": [
151+
{
152+
"element": "member",
153+
"content": {
154+
"key": {
155+
"element": "string",
156+
"content": "Accept"
157+
},
158+
"value": {
159+
"element": "string",
160+
"content": "application/yaml"
161+
}
162+
}
163+
}
164+
]
129165
}
130166
}
131167
},

packages/openapi3-parser/test/integration/fixtures/components/media-type-object-schema.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,24 @@
5252
"method": {
5353
"element": "string",
5454
"content": "GET"
55+
},
56+
"headers": {
57+
"element": "httpHeaders",
58+
"content": [
59+
{
60+
"element": "member",
61+
"content": {
62+
"key": {
63+
"element": "string",
64+
"content": "Accept"
65+
},
66+
"value": {
67+
"element": "string",
68+
"content": "application/json"
69+
}
70+
}
71+
}
72+
]
5573
}
5674
}
5775
},

0 commit comments

Comments
 (0)