Skip to content

Commit 17d01a5

Browse files
committed
Use JSON (de)serializers instead of custom ones for tests
1 parent b143369 commit 17d01a5

File tree

2 files changed

+37
-18
lines changed

2 files changed

+37
-18
lines changed

Diff for: Tests/GRPCInProcessTransportTests/InProcessTransportTests.swift

+2-18
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ struct InProcessTransportTests {
8080
request: ClientRequest(message: ()),
8181
descriptor: .peerInfo,
8282
serializer: VoidSerializer(),
83-
deserializer: PeerInfoDeserializer(),
83+
deserializer: JSONDeserializer<PeerInfo>(),
8484
options: .defaults
8585
) {
8686
try $0.message
@@ -142,7 +142,7 @@ private struct TestService: RegistrableRPCService {
142142
router.registerHandler(
143143
forMethod: .peerInfo,
144144
deserializer: VoidDeserializer(),
145-
serializer: PeerInfoSerializer(),
145+
serializer: JSONSerializer<PeerInfo>(),
146146
handler: {
147147
let response = try await self.peerInfo(
148148
request: ServerRequest<Void>(stream: $0),
@@ -171,22 +171,6 @@ private struct PeerInfo: Codable {
171171
var remote: String
172172
}
173173

174-
private struct PeerInfoSerializer: MessageSerializer {
175-
func serialize<Bytes: GRPCContiguousBytes>(_ message: PeerInfo) throws -> Bytes {
176-
Bytes("\(message.local) \(message.remote)".utf8)
177-
}
178-
}
179-
180-
private struct PeerInfoDeserializer: MessageDeserializer {
181-
func deserialize<Bytes: GRPCContiguousBytes>(_ serializedMessageBytes: Bytes) throws -> PeerInfo {
182-
let stringPeerInfo = serializedMessageBytes.withUnsafeBytes {
183-
String(decoding: $0, as: UTF8.self)
184-
}
185-
let peerInfoComponents = stringPeerInfo.split(separator: " ")
186-
return PeerInfo(local: String(peerInfoComponents[0]), remote: String(peerInfoComponents[1]))
187-
}
188-
}
189-
190174
private struct UTF8Serializer: MessageSerializer {
191175
func serialize<Bytes: GRPCContiguousBytes>(_ message: String) throws -> Bytes {
192176
Bytes(message.utf8)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* Copyright 2025, gRPC Authors All rights reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
import Foundation
18+
import GRPCCore
19+
20+
struct JSONSerializer<Message: Encodable>: MessageSerializer {
21+
private let encoder = JSONEncoder()
22+
23+
func serialize(_ message: Message) throws -> [UInt8] {
24+
let data = try self.encoder.encode(message)
25+
return Array(data)
26+
}
27+
}
28+
29+
struct JSONDeserializer<Message: Decodable>: MessageDeserializer {
30+
private let decoder = JSONDecoder()
31+
32+
func deserialize(_ serializedMessageBytes: [UInt8]) throws -> Message {
33+
try self.decoder.decode(Message.self, from: Data(serializedMessageBytes))
34+
}
35+
}

0 commit comments

Comments
 (0)