Skip to content

Commit 0f712cc

Browse files
authored
Merge pull request #301 from mattpolzin/bugfix/300/explode-the-header
fix bug where headers were not allowed to define explode when decoding
2 parents e9c50c9 + adcc199 commit 0f712cc

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed

Sources/OpenAPIKit/Header/Header.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ extension OpenAPI.Header {
170170

171171
// the following are parsed as part of Schema
172172
case style
173+
case explode
173174
case allowReserved
174175
case example
175176
case examples
@@ -184,6 +185,7 @@ extension OpenAPI.Header {
184185
.content,
185186
.schema,
186187
.style,
188+
.explode,
187189
.allowReserved,
188190
.example,
189191
.examples
@@ -208,6 +210,8 @@ extension OpenAPI.Header {
208210
self = .schema
209211
case "style":
210212
self = .style
213+
case "explode":
214+
self = .explode
211215
case "allowReserved":
212216
self = .allowReserved
213217
case "example":
@@ -233,6 +237,8 @@ extension OpenAPI.Header {
233237
return "schema"
234238
case .style:
235239
return "style"
240+
case .explode:
241+
return "explode"
236242
case .allowReserved:
237243
return "allowReserved"
238244
case .example:

Tests/OpenAPIKitTests/Header/HeaderTests.swift

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,67 @@ extension HeaderTests {
511511
)
512512
}
513513

514+
func test_header_withStyleAndExplode_encode() throws {
515+
let header = OpenAPI.Header(
516+
schema: .init(
517+
.array(items: .string),
518+
style: .form,
519+
explode: false
520+
),
521+
required: true
522+
)
523+
524+
let encodedHeader = try orderUnstableTestStringFromEncoding(of: header)
525+
526+
assertJSONEquivalent(
527+
encodedHeader,
528+
"""
529+
{
530+
"explode" : false,
531+
"required" : true,
532+
"schema" : {
533+
"items" : {
534+
"type" : "string"
535+
},
536+
"type" : "array"
537+
},
538+
"style" : "form"
539+
}
540+
"""
541+
)
542+
}
543+
544+
func test_header_withStyleAndExplode_decode() throws {
545+
let headerData =
546+
"""
547+
{
548+
"explode" : false,
549+
"required" : true,
550+
"schema" : {
551+
"items" : {
552+
"type" : "string"
553+
},
554+
"type" : "array"
555+
},
556+
"style" : "form"
557+
}
558+
""".data(using: .utf8)!
559+
560+
let header = try orderUnstableDecode(OpenAPI.Header.self, from: headerData)
561+
562+
XCTAssertEqual(
563+
header,
564+
OpenAPI.Header(
565+
schema: .init(
566+
.array(items: .string),
567+
style: .form,
568+
explode: false
569+
),
570+
required: true
571+
)
572+
)
573+
}
574+
514575
func test_header_errorForBothContentAndSchema_decode() {
515576
let headerData =
516577
"""

0 commit comments

Comments
 (0)