Skip to content

Commit 4c99b1f

Browse files
fixup: Extend tests with checks for response headers and trailers
Signed-off-by: Si Beaumont <[email protected]>
1 parent 21a06b6 commit 4c99b1f

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

Tests/GRPCTests/GRPCAsyncClientCallTests.swift

+26-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import EchoImplementation
1919
import EchoModel
2020
@testable import GRPC
21+
import NIOHPACK
2122
import NIOPosix
2223
import XCTest
2324

@@ -27,6 +28,15 @@ class GRPCAsyncClientCallTests: GRPCTestCase {
2728
private var server: Server?
2829
private var channel: ClientConnection?
2930

31+
private static let OKInitialMetadata = HPACKHeaders([
32+
(":status", "200"),
33+
("content-type", "application/grpc"),
34+
])
35+
36+
private static let OKTrailingMetadata = HPACKHeaders([
37+
("grpc-status", "0"),
38+
])
39+
3040
private func setUpServerAndChannel() throws -> ClientConnection {
3141
let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
3242
self.group = group
@@ -66,12 +76,15 @@ class GRPCAsyncClientCallTests: GRPCTestCase {
6676
let channel = try self.setUpServerAndChannel()
6777
let get: GRPCAsyncUnaryCall<Echo_EchoRequest, Echo_EchoResponse> = channel.makeAsyncUnaryCall(
6878
path: "/echo.Echo/Get",
69-
request: .with { $0.text = "get" },
79+
request: .with { $0.text = "holt" },
7080
callOptions: .init()
7181
)
7282

83+
await assertThat(try await get.initialMetadata, .is(.equalTo(Self.OKInitialMetadata)))
7384
await assertThat(try await get.response, .doesNotThrow())
85+
await assertThat(try await get.trailingMetadata, .is(.equalTo(Self.OKTrailingMetadata)))
7486
await assertThat(await get.status, .hasCode(.ok))
87+
print(try await get.trailingMetadata)
7588
} }
7689

7790
func testAsyncClientStreamingCall() throws { XCTAsyncTest {
@@ -87,7 +100,9 @@ class GRPCAsyncClientCallTests: GRPCTestCase {
87100
}
88101
try await collect.sendEnd()
89102

103+
await assertThat(try await collect.initialMetadata, .is(.equalTo(Self.OKInitialMetadata)))
90104
await assertThat(try await collect.response, .doesNotThrow())
105+
await assertThat(try await collect.trailingMetadata, .is(.equalTo(Self.OKTrailingMetadata)))
91106
await assertThat(await collect.status, .hasCode(.ok))
92107
} }
93108

@@ -100,9 +115,12 @@ class GRPCAsyncClientCallTests: GRPCTestCase {
100115
callOptions: .init()
101116
)
102117

118+
await assertThat(try await expand.initialMetadata, .is(.equalTo(Self.OKInitialMetadata)))
119+
103120
let numResponses = try await expand.responses.map { _ in 1 }.reduce(0, +)
104121

105122
await assertThat(numResponses, .is(.equalTo(3)))
123+
await assertThat(try await expand.trailingMetadata, .is(.equalTo(Self.OKTrailingMetadata)))
106124
await assertThat(await expand.status, .hasCode(.ok))
107125
} }
108126

@@ -122,6 +140,7 @@ class GRPCAsyncClientCallTests: GRPCTestCase {
122140
let numResponses = try await update.responses.map { _ in 1 }.reduce(0, +)
123141

124142
await assertThat(numResponses, .is(.equalTo(3)))
143+
await assertThat(try await update.trailingMetadata, .is(.equalTo(Self.OKTrailingMetadata)))
125144
await assertThat(await update.status, .hasCode(.ok))
126145
} }
127146

@@ -133,6 +152,8 @@ class GRPCAsyncClientCallTests: GRPCTestCase {
133152
callOptions: .init()
134153
)
135154

155+
await assertThat(try await update.initialMetadata, .is(.equalTo(Self.OKInitialMetadata)))
156+
136157
var responseStreamIterator = update.responses.makeAsyncIterator()
137158
for word in ["boyle", "jeffers", "holt"] {
138159
try await update.sendMessage(.with { $0.text = word })
@@ -143,6 +164,7 @@ class GRPCAsyncClientCallTests: GRPCTestCase {
143164

144165
await assertThat(try await responseStreamIterator.next(), .is(.nil()))
145166

167+
await assertThat(try await update.trailingMetadata, .is(.equalTo(Self.OKTrailingMetadata)))
146168
await assertThat(await update.status, .hasCode(.ok))
147169
} }
148170

@@ -154,6 +176,8 @@ class GRPCAsyncClientCallTests: GRPCTestCase {
154176
callOptions: .init()
155177
)
156178

179+
await assertThat(try await update.initialMetadata, .is(.equalTo(Self.OKInitialMetadata)))
180+
157181
actor TestResults {
158182
static var numResponses = 0
159183
static var numRequests = 0
@@ -178,6 +202,7 @@ class GRPCAsyncClientCallTests: GRPCTestCase {
178202
}
179203
await assertThat(TestResults.numRequests, .is(.equalTo(3)))
180204
await assertThat(TestResults.numResponses, .is(.equalTo(3)))
205+
await assertThat(try await update.trailingMetadata, .is(.equalTo(Self.OKTrailingMetadata)))
181206
await assertThat(await update.status, .hasCode(.ok))
182207
} }
183208
}

0 commit comments

Comments
 (0)