Skip to content

Commit 17524a5

Browse files
authored
fix: adjust typing to reflect that boolean request headers are supported (#339)
they were already being parsed correctly, but the typescript types didn't reflect that.
1 parent df64442 commit 17524a5

File tree

14 files changed

+143
-12
lines changed

14 files changed

+143
-12
lines changed

e2e/openapi.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,14 @@ paths:
3737
in: header
3838
schema:
3939
type: number
40+
- name: Boolean-Header
41+
in: header
42+
schema:
43+
type: boolean
44+
- name: Second-Boolean-Header
45+
in: header
46+
schema:
47+
type: boolean
4048
- name: Authorization
4149
in: header
4250
schema:

e2e/src/generated/client/axios/client.ts

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/client/fetch/client.ts

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/server/express/models.ts

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/server/express/routes/request-headers.ts

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/server/express/schemas.ts

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/server/koa/models.ts

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/server/koa/routes/request-headers.ts

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/server/koa/schemas.ts

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/index.axios.spec.ts

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,31 @@ describe.each(startServerFunctions)(
188188
})
189189
})
190190

191-
it("rejects headers of the wrong type", async () => {
191+
it("parses headers correctly", async () => {
192+
const {data} = await client.getHeadersRequest({
193+
numberHeader: 12,
194+
booleanHeader: true,
195+
secondBooleanHeader: false,
196+
authorization: "Bearer test",
197+
})
198+
199+
expect(data).toEqual({
200+
rawHeaders: expect.objectContaining({
201+
authorization: "Bearer test",
202+
"number-header": "12",
203+
"boolean-header": "true",
204+
"second-boolean-header": "false",
205+
}),
206+
typedHeaders: {
207+
authorization: "Bearer test",
208+
"number-header": 12,
209+
"boolean-header": true,
210+
"second-boolean-header": false,
211+
},
212+
})
213+
})
214+
215+
it("rejects headers of the wrong type (number)", async () => {
192216
const err = await client
193217
.getHeadersRequest(
194218
// @ts-expect-error testing validation
@@ -209,6 +233,28 @@ describe.each(startServerFunctions)(
209233
cause: expect.stringContaining("Expected number, received nan"),
210234
})
211235
})
236+
237+
it("rejects headers of the wrong type (boolean)", async () => {
238+
const err = await client
239+
.getHeadersRequest(
240+
// @ts-expect-error testing validation
241+
{booleanHeader: "i'm not a boolean"},
242+
)
243+
.then(
244+
() => {
245+
throw new Error("expected request to fail")
246+
},
247+
(err: AxiosError) => err,
248+
)
249+
250+
expect(err.message).toMatch("Request failed with status code 400")
251+
expect(err.status).toBe(400)
252+
expect(err.response?.data).toMatchObject({
253+
message: "Request validation failed parsing request header",
254+
phase: "request_validation",
255+
cause: expect.stringContaining("Expected boolean, received string"),
256+
})
257+
})
212258
})
213259

214260
describe("GET /validation/numbers/random-number", () => {

0 commit comments

Comments
 (0)