Skip to content

Commit e904c86

Browse files
committed
Add a test for encode query
1 parent 39de666 commit e904c86

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

Tests/PostgresNIOTests/New/Extensions/PSQLFrontendMessageDecoder.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,8 @@ extension PostgresFrontendMessage {
217217
preconditionFailure("TODO: Unimplemented")
218218
case .saslResponse:
219219
preconditionFailure("TODO: Unimplemented")
220+
case .query:
221+
return .query
220222
case .sync:
221223
return .sync
222224
case .terminate:

Tests/PostgresNIOTests/New/Extensions/PostgresFrontendMessage.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ enum PostgresFrontendMessage: Equatable {
179179
case saslInitialResponse(SASLInitialResponse)
180180
case saslResponse(SASLResponse)
181181
case sslRequest
182+
case query
182183
case sync
183184
case startup(Startup)
184185
case terminate
@@ -194,6 +195,7 @@ enum PostgresFrontendMessage: Equatable {
194195
case password
195196
case saslInitialResponse
196197
case saslResponse
198+
case query
197199
case sync
198200
case terminate
199201

@@ -217,6 +219,8 @@ enum PostgresFrontendMessage: Equatable {
217219
self = .saslInitialResponse
218220
case UInt8(ascii: "p"):
219221
self = .saslResponse
222+
case UInt8(ascii: "Q"):
223+
self = .query
220224
case UInt8(ascii: "S"):
221225
self = .sync
222226
case UInt8(ascii: "X"):
@@ -246,6 +250,8 @@ enum PostgresFrontendMessage: Equatable {
246250
return UInt8(ascii: "p")
247251
case .saslResponse:
248252
return UInt8(ascii: "p")
253+
case .query:
254+
return UInt8(ascii: "Q")
249255
case .sync:
250256
return UInt8(ascii: "S")
251257
case .terminate:
@@ -283,6 +289,8 @@ extension PostgresFrontendMessage {
283289
preconditionFailure("SSL requests don't have an identifier")
284290
case .startup:
285291
preconditionFailure("Startup messages don't have an identifier")
292+
case .query:
293+
return .query
286294
case .sync:
287295
return .sync
288296
case .terminate:

Tests/PostgresNIOTests/New/PSQLFrontendMessageTests.swift

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,19 @@ class PSQLFrontendMessageTests: XCTestCase {
3131
XCTAssertEqual(PostgresFrontendMessage.ID.flush.rawValue, byteBuffer.readInteger(as: UInt8.self))
3232
XCTAssertEqual(4, byteBuffer.readInteger(as: Int32.self)) // payload length
3333
}
34-
34+
35+
func testEncodeQuery() {
36+
var encoder = PostgresFrontendMessageEncoder(buffer: .init())
37+
let query = "SELECT * FROM foo"
38+
encoder.query(query)
39+
var byteBuffer = encoder.flushBuffer()
40+
41+
XCTAssertEqual(byteBuffer.readableBytes, 23)
42+
XCTAssertEqual(PostgresFrontendMessage.ID.query.rawValue, byteBuffer.readInteger(as: UInt8.self))
43+
XCTAssertEqual(22, byteBuffer.readInteger(as: Int32.self)) // payload length
44+
XCTAssertEqual([UInt8](query.utf8), byteBuffer.readBytes(length: 17))
45+
}
46+
3547
func testEncodeSync() {
3648
var encoder = PostgresFrontendMessageEncoder(buffer: .init())
3749
encoder.sync()

0 commit comments

Comments
 (0)