PeerID 18/n: BitchatDelegate + Tests (#769)

This commit is contained in:
Islam
2025-10-07 16:01:53 +02:00
committed by GitHub
parent fbc15ea08f
commit 551a843691
9 changed files with 120 additions and 121 deletions
+22 -22
View File
@@ -32,7 +32,7 @@ final class MockBLEService: NSObject {
// MARK: - Properties matching BLEService
weak var delegate: BitchatDelegate?
var myPeerID: String = "MOCK1234"
var myPeerID: PeerID = "MOCK1234"
var myNickname: String = "MockUser"
private let mockKeychain = MockKeychain()
@@ -40,7 +40,7 @@ final class MockBLEService: NSObject {
// Test-specific properties
var sentMessages: [(message: BitchatMessage, packet: BitchatPacket)] = []
var sentPackets: [BitchatPacket] = []
var connectedPeers: Set<String> = []
var connectedPeers: Set<PeerID> = []
var messageDeliveryHandler: ((BitchatMessage) -> Void)?
var packetDeliveryHandler: ((BitchatPacket) -> Void)?
@@ -54,7 +54,7 @@ final class MockBLEService: NSObject {
return myNickname
}
var peerID: String {
var peerID: PeerID {
return myPeerID
}
@@ -72,8 +72,8 @@ final class MockBLEService: NSObject {
// MARK: - In-memory test bus (for E2E/Integration)
/// Global per-process bus for deterministic routing in tests.
private static var registry: [String: MockBLEService] = [:]
private static var adjacency: [String: Set<String>] = [:]
private static var registry: [PeerID: MockBLEService] = [:]
private static var adjacency: [PeerID: Set<PeerID>] = [:]
/// Clears global bus state. Call from test `setUp()`.
static func resetTestBus() {
@@ -94,7 +94,7 @@ final class MockBLEService: NSObject {
}
/// Adds an undirected edge between two peerIDs.
private static func connectPeers(_ a: String, _ b: String) {
private static func connectPeers(_ a: PeerID, _ b: PeerID) {
var setA = adjacency[a] ?? []
setA.insert(b)
adjacency[a] = setA
@@ -104,7 +104,7 @@ final class MockBLEService: NSObject {
}
/// Removes an undirected edge between two peerIDs.
private static func disconnectPeers(_ a: String, _ b: String) {
private static func disconnectPeers(_ a: PeerID, _ b: PeerID) {
if var setA = adjacency[a] { setA.remove(b); adjacency[a] = setA }
if var setB = adjacency[b] { setB.remove(a); adjacency[b] = setB }
}
@@ -117,7 +117,7 @@ final class MockBLEService: NSObject {
// Mock implementation - do nothing
}
func isPeerConnected(_ peerID: String) -> Bool {
func isPeerConnected(_ peerID: PeerID) -> Bool {
return connectedPeers.contains(peerID)
}
@@ -125,15 +125,15 @@ final class MockBLEService: NSObject {
"MockPeer_\(peerID)"
}
func getPeerNicknames() -> [String: String] {
var nicknames: [String: String] = [:]
func getPeerNicknames() -> [PeerID: String] {
var nicknames: [PeerID: String] = [:]
for peer in connectedPeers {
nicknames[peer] = "MockPeer_\(peer)"
}
return nicknames
}
func getPeers() -> [String: String] {
func getPeers() -> [PeerID: String] {
return getPeerNicknames()
}
@@ -147,14 +147,14 @@ final class MockBLEService: NSObject {
originalSender: nil,
isPrivate: recipientID != nil,
recipientNickname: nil,
senderPeerID: PeerID(str: myPeerID),
senderPeerID: myPeerID,
mentions: mentions.isEmpty ? nil : mentions
)
if let payload = message.toBinaryPayload() {
let packet = BitchatPacket(
type: 0x01,
senderID: myPeerID.data(using: .utf8)!,
senderID: myPeerID.id.data(using: .utf8)!,
recipientID: recipientID?.data(using: .utf8),
timestamp: UInt64(Date().timeIntervalSince1970 * 1000),
payload: payload,
@@ -182,7 +182,7 @@ final class MockBLEService: NSObject {
}
}
func sendPrivateMessage(_ content: String, to recipientPeerID: String, recipientNickname: String, messageID: String) {
func sendPrivateMessage(_ content: String, to recipientPeerID: PeerID, recipientNickname: String, messageID: String) {
let message = BitchatMessage(
id: messageID,
sender: myNickname,
@@ -192,15 +192,15 @@ final class MockBLEService: NSObject {
originalSender: nil,
isPrivate: true,
recipientNickname: recipientNickname,
senderPeerID: PeerID(str: myPeerID),
senderPeerID: myPeerID,
mentions: nil
)
if let payload = message.toBinaryPayload() {
let packet = BitchatPacket(
type: 0x01,
senderID: myPeerID.data(using: .utf8)!,
recipientID: recipientPeerID.data(using: .utf8)!,
senderID: myPeerID.id.data(using: .utf8)!,
recipientID: recipientPeerID.id.data(using: .utf8)!,
timestamp: UInt64(Date().timeIntervalSince1970 * 1000),
payload: payload,
signature: nil,
@@ -277,7 +277,7 @@ final class MockBLEService: NSObject {
// MARK: - Test Helper Methods
func simulateConnectedPeer(_ peerID: String) {
func simulateConnectedPeer(_ peerID: PeerID) {
registerIfNeeded()
MockBLEService.connectPeers(myPeerID, peerID)
connectedPeers.insert(peerID)
@@ -285,7 +285,7 @@ final class MockBLEService: NSObject {
delegate?.didUpdatePeerList(Array(connectedPeers))
}
func simulateDisconnectedPeer(_ peerID: String) {
func simulateDisconnectedPeer(_ peerID: PeerID) {
MockBLEService.disconnectPeers(myPeerID, peerID)
connectedPeers.remove(peerID)
delegate?.didDisconnectFromPeer(peerID)
@@ -336,14 +336,14 @@ final class MockBLEService: NSObject {
packetDeliveryHandler?(packet)
}
func getConnectedPeers() -> [String] {
func getConnectedPeers() -> [PeerID] {
return Array(connectedPeers)
}
// MARK: - Compatibility methods for old tests
func sendPrivateMessage(_ content: String, to recipientPeerID: PeerID, recipientNickname: String, messageID: String? = nil) {
sendPrivateMessage(content, to: recipientPeerID.id, recipientNickname: recipientNickname, messageID: messageID ?? UUID().uuidString)
sendPrivateMessage(content, to: recipientPeerID, recipientNickname: recipientNickname, messageID: messageID ?? UUID().uuidString)
}
}
@@ -355,7 +355,7 @@ typealias MockSimplifiedBluetoothService = MockBLEService
extension MockBLEService {
convenience init(peerID: PeerID, nickname: String) {
self.init()
myPeerID = peerID.id
myPeerID = peerID
mockNickname = nickname
}