Skip to content

Commit 0b04063

Browse files
committed
port header explode changes over to OpenAPIKit30 module.
1 parent a04ef3f commit 0b04063

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed

Sources/OpenAPIKit30/Header/Header.swift

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

173173
// the following are parsed as part of Schema
174174
case style
175+
case explode
175176
case allowReserved
176177
case example
177178
case examples
@@ -186,6 +187,7 @@ extension OpenAPI.Header {
186187
.content,
187188
.schema,
188189
.style,
190+
.explode,
189191
.allowReserved,
190192
.example,
191193
.examples
@@ -210,6 +212,8 @@ extension OpenAPI.Header {
210212
self = .schema
211213
case "style":
212214
self = .style
215+
case "explode":
216+
self = .explode
213217
case "allowReserved":
214218
self = .allowReserved
215219
case "example":
@@ -235,6 +239,8 @@ extension OpenAPI.Header {
235239
return "schema"
236240
case .style:
237241
return "style"
242+
case .explode:
243+
return "explode"
238244
case .allowReserved:
239245
return "allowReserved"
240246
case .example:

Tests/OpenAPIKit30Tests/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)