Skip to content

Commit 45ecf42

Browse files
authored
chore: Update to Smithy 1.52 (#843)
1 parent 041be5f commit 45ecf42

File tree

5 files changed

+40
-21
lines changed

5 files changed

+40
-21
lines changed

Sources/SmithyHTTPAPI/Headers.swift

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -138,15 +138,7 @@ public struct Headers: Sendable {
138138
}
139139

140140
public func exists(name: String) -> Bool {
141-
guard headers.index(of: name) != nil else {
142-
return false
143-
}
144-
145-
guard let value = value(for: name) else {
146-
return false
147-
}
148-
149-
return !value.isEmpty
141+
headers.index(of: name) != nil
150142
}
151143

152144
/// The dictionary representation of all headers.

Sources/SmithyTestUtil/RequestTestUtil/HttpRequestTestBase.swift

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ open class HttpRequestTestBase: XCTestCase {
334334
}
335335

336336
expected.headers.forEach { header in
337-
XCTAssertTrue(actual.exists(name: header.name), file: file, line: line)
337+
XCTAssert(actual.exists(name: header.name), "Header '\(header.name)' does not exist", file: file, line: line)
338338

339339
guard actual.values(for: header.name) != header.value else {
340340
XCTAssertEqual(actual.values(for: header.name), header.value, file: file, line: line)
@@ -345,14 +345,15 @@ open class HttpRequestTestBase: XCTestCase {
345345
.joined(separator: ", ")
346346
.components(separatedBy: .whitespaces)
347347
.joined()
348-
XCTAssertNotNil(actualValue, file: file, line: line)
348+
349+
XCTAssertNotNil(actualValue, "The actual header value for \(header.name) is not present", file: file, line: line)
349350

350351
let expectedValue = header.value
351352
.joined(separator: ", ")
352353
.components(separatedBy: .whitespaces)
353354
.joined()
354-
355-
XCTAssertEqual(actualValue, expectedValue, file: file, line: line)
355+
356+
XCTAssert(actualValue == expectedValue, "Actual header '\(header.name)': '\(String(describing: actualValue))') Expected header: '\(String(describing: expectedValue))'", file: file, line: line)
356357
}
357358
}
358359

@@ -391,7 +392,7 @@ open class HttpRequestTestBase: XCTestCase {
391392
for requiredHeaderName in expected {
392393
XCTAssertTrue(actual.exists(name: requiredHeaderName),
393394
"""
394-
expected required header not found: \(requiredHeaderName):
395+
required header not found: \(requiredHeaderName):
395396
\(String(describing: actual.value(for: requiredHeaderName)))
396397
""",
397398
file: file,
Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
/*
2-
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3-
* SPDX-License-Identifier: Apache-2.0.
4-
*/
1+
//
2+
// Copyright Amazon.com Inc. or its affiliates.
3+
// All Rights Reserved.
4+
//
5+
// SPDX-License-Identifier: Apache-2.0
6+
//
57

68
import SmithyHTTPAPI
79
import XCTest
8-
import ClientRuntime
910

10-
class HttpHeadersTests: XCTestCase {
11+
class HeadersTests: XCTestCase {
1112

1213
var headersAsDictionaryWithArray = [String: [String]]()
1314
var headersAsDictionary = [String: String]()
@@ -123,4 +124,26 @@ class HttpHeadersTests: XCTestCase {
123124
XCTAssertEqual(headerA, headerB)
124125
XCTAssertEqual(headerA.hashValue, headerB.hashValue)
125126
}
127+
128+
// MARK: - exists()
129+
130+
func test_exists_trueIfHeaderExists() {
131+
let subject = Headers(["a": "abc"])
132+
XCTAssertTrue(subject.exists(name: "a"))
133+
}
134+
135+
func test_exists_falseIfHeaderDoesntExist() {
136+
let subject = Headers(["a": "abc"])
137+
XCTAssertFalse(subject.exists(name: "b"))
138+
}
139+
140+
func test_exists_trueIfHeaderValueIsEmptyString() {
141+
let subject = Headers(["a": ""])
142+
XCTAssertTrue(subject.exists(name: "a"))
143+
}
144+
145+
func test_exists_trueIfHeaderValueIsEmptyList() {
146+
let subject = Headers(["a": []])
147+
XCTAssertTrue(subject.exists(name: "a"))
148+
}
126149
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ kotlin.code.style=official
33
# config
44

55
# codegen
6-
smithyVersion=1.51.0
6+
smithyVersion=1.52.0
77
smithyGradleVersion=0.6.0
88

99
# kotlin

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/middlewares/providers/HttpHeaderProvider.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ class HttpHeaderProvider(
9090
if (isBoxed) {
9191
writer.openBlock("if let $memberName = value.$memberName {", "}") {
9292
if (memberTarget is CollectionShape) {
93+
writer.openBlock("if \$L.isEmpty {", "}", memberName) {
94+
writer.write("items.add(name: \$S, value: \"\")", paramName)
95+
}
9396
writer.openBlock("$memberName.forEach { headerValue in ", "}") {
9497
renderHeader(memberTarget.member, "headerValue", paramName, true)
9598
}

0 commit comments

Comments
 (0)