mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 01:05:19 +00:00
Expand coverage for transport, chat, and media flows (#1056)
* Expand coverage for transport, chat, and media flows * Stabilize transport and media coverage tests --------- Co-authored-by: jack <jackjackbits@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import Foundation
|
||||
import Testing
|
||||
@testable import bitchat
|
||||
|
||||
@Suite("ReadReceipt Tests")
|
||||
struct ReadReceiptTests {
|
||||
|
||||
@Test("JSON encode and decode round-trip stable fields")
|
||||
func jsonRoundTrip() throws {
|
||||
let receipt = ReadReceipt(
|
||||
originalMessageID: UUID().uuidString,
|
||||
readerID: PeerID(str: "0123456789abcdef"),
|
||||
readerNickname: "Alice"
|
||||
)
|
||||
|
||||
let encoded = try #require(receipt.encode(), "Receipt should encode to JSON")
|
||||
let decoded = try #require(ReadReceipt.decode(from: encoded), "Receipt should decode from JSON")
|
||||
|
||||
#expect(decoded.originalMessageID == receipt.originalMessageID)
|
||||
#expect(decoded.receiptID == receipt.receiptID)
|
||||
#expect(decoded.readerID == receipt.readerID)
|
||||
#expect(decoded.readerNickname == receipt.readerNickname)
|
||||
#expect(abs(decoded.timestamp.timeIntervalSince(receipt.timestamp)) < 0.001)
|
||||
}
|
||||
|
||||
@Test("Binary encode and decode round-trip stable fields")
|
||||
func binaryRoundTrip() throws {
|
||||
let receipt = ReadReceipt(
|
||||
originalMessageID: UUID().uuidString,
|
||||
readerID: PeerID(str: "fedcba9876543210"),
|
||||
readerNickname: "Bob"
|
||||
)
|
||||
|
||||
let decoded = try #require(
|
||||
ReadReceipt.fromBinaryData(receipt.toBinaryData()),
|
||||
"Receipt should decode from binary data"
|
||||
)
|
||||
|
||||
#expect(decoded.originalMessageID == receipt.originalMessageID.uppercased())
|
||||
#expect(decoded.receiptID == receipt.receiptID.uppercased())
|
||||
#expect(decoded.readerID == receipt.readerID)
|
||||
#expect(decoded.readerNickname == receipt.readerNickname)
|
||||
}
|
||||
|
||||
@Test("Binary decode rejects truncated data")
|
||||
func binaryDecodeRejectsTruncatedData() {
|
||||
#expect(ReadReceipt.fromBinaryData(Data()) == nil)
|
||||
#expect(ReadReceipt.fromBinaryData(Data(repeating: 0, count: 48)) == nil)
|
||||
}
|
||||
|
||||
@Test("Binary decode rejects stale timestamps")
|
||||
func binaryDecodeRejectsStaleTimestamp() {
|
||||
let receipt = ReadReceipt(
|
||||
originalMessageID: UUID().uuidString,
|
||||
readerID: PeerID(str: "0011223344556677"),
|
||||
readerNickname: "Carol"
|
||||
)
|
||||
var data = receipt.toBinaryData()
|
||||
|
||||
data.replaceSubrange(40..<48, with: Data(repeating: 0, count: 8))
|
||||
|
||||
#expect(ReadReceipt.fromBinaryData(data) == nil)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user