mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 18:45:20 +00:00
- Fixed mock service property overrides to match base class properties - Added missing CryptoKit imports where needed - Fixed immutable property assignments by creating new instances - Replaced XCTAssertThrows with XCTAssertThrowsError - Fixed DeliveryAck serialization method names (serialize -> encode) - Fixed unused variable warnings - Ensured all BitchatPacket modifications create new instances - Fixed BitchatMessage property mutations by creating new instances All test targets now build successfully for both iOS and macOS platforms.
145 lines
4.5 KiB
Swift
145 lines
4.5 KiB
Swift
//
|
|
// MockBluetoothMeshService.swift
|
|
// bitchatTests
|
|
//
|
|
// This is free and unencumbered software released into the public domain.
|
|
// For more information, see <https://unlicense.org>
|
|
//
|
|
|
|
import Foundation
|
|
import MultipeerConnectivity
|
|
@testable import bitchat
|
|
|
|
class MockBluetoothMeshService: BluetoothMeshService {
|
|
var sentMessages: [(message: BitchatMessage, packet: BitchatPacket)] = []
|
|
var sentPackets: [BitchatPacket] = []
|
|
var connectedPeers: Set<String> = []
|
|
var messageDeliveryHandler: ((BitchatMessage) -> Void)?
|
|
var packetDeliveryHandler: ((BitchatPacket) -> Void)?
|
|
|
|
// Override these properties
|
|
var mockNickname: String = "MockUser"
|
|
|
|
override var myPeerID: String {
|
|
didSet {
|
|
// Update when changed
|
|
}
|
|
}
|
|
|
|
var nickname: String {
|
|
return mockNickname
|
|
}
|
|
|
|
var peerID: String {
|
|
return myPeerID
|
|
}
|
|
|
|
override init() {
|
|
super.init()
|
|
self.myPeerID = "MOCK1234"
|
|
}
|
|
|
|
func simulateConnectedPeer(_ peerID: String) {
|
|
connectedPeers.insert(peerID)
|
|
delegate?.didConnectToPeer(peerID)
|
|
delegate?.didUpdatePeerList(Array(connectedPeers))
|
|
}
|
|
|
|
func simulateDisconnectedPeer(_ peerID: String) {
|
|
connectedPeers.remove(peerID)
|
|
delegate?.didDisconnectFromPeer(peerID)
|
|
delegate?.didUpdatePeerList(Array(connectedPeers))
|
|
}
|
|
|
|
override func sendMessage(_ content: String, mentions: [String], to room: String? = nil, messageID: String? = nil, timestamp: Date? = nil) {
|
|
let message = BitchatMessage(
|
|
id: messageID ?? UUID().uuidString,
|
|
sender: mockNickname,
|
|
content: content,
|
|
timestamp: timestamp ?? Date(),
|
|
isRelay: false,
|
|
originalSender: nil,
|
|
isPrivate: false,
|
|
recipientNickname: nil,
|
|
senderPeerID: myPeerID,
|
|
mentions: mentions.isEmpty ? nil : mentions
|
|
)
|
|
|
|
if let payload = message.toBinaryPayload() {
|
|
let packet = BitchatPacket(
|
|
type: 0x01,
|
|
senderID: myPeerID.data(using: .utf8)!,
|
|
recipientID: nil,
|
|
timestamp: UInt64(Date().timeIntervalSince1970 * 1000),
|
|
payload: payload,
|
|
signature: nil,
|
|
ttl: 3
|
|
)
|
|
|
|
sentMessages.append((message, packet))
|
|
sentPackets.append(packet)
|
|
|
|
// Simulate local echo
|
|
DispatchQueue.main.async { [weak self] in
|
|
self?.delegate?.didReceiveMessage(message)
|
|
}
|
|
|
|
// Call delivery handler if set
|
|
messageDeliveryHandler?(message)
|
|
}
|
|
}
|
|
|
|
override func sendPrivateMessage(_ content: String, to recipientPeerID: String, recipientNickname: String, messageID: String? = nil) {
|
|
let message = BitchatMessage(
|
|
id: messageID ?? UUID().uuidString,
|
|
sender: mockNickname,
|
|
content: content,
|
|
timestamp: Date(),
|
|
isRelay: false,
|
|
originalSender: nil,
|
|
isPrivate: true,
|
|
recipientNickname: recipientNickname,
|
|
senderPeerID: myPeerID,
|
|
mentions: nil
|
|
)
|
|
|
|
if let payload = message.toBinaryPayload() {
|
|
let packet = BitchatPacket(
|
|
type: 0x01,
|
|
senderID: myPeerID.data(using: .utf8)!,
|
|
recipientID: recipientPeerID.data(using: .utf8)!,
|
|
timestamp: UInt64(Date().timeIntervalSince1970 * 1000),
|
|
payload: payload,
|
|
signature: nil,
|
|
ttl: 3
|
|
)
|
|
|
|
sentMessages.append((message, packet))
|
|
sentPackets.append(packet)
|
|
|
|
// Simulate local echo
|
|
DispatchQueue.main.async { [weak self] in
|
|
self?.delegate?.didReceiveMessage(message)
|
|
}
|
|
|
|
// Call delivery handler if set
|
|
messageDeliveryHandler?(message)
|
|
}
|
|
}
|
|
|
|
func simulateIncomingMessage(_ message: BitchatMessage) {
|
|
delegate?.didReceiveMessage(message)
|
|
}
|
|
|
|
func simulateIncomingPacket(_ packet: BitchatPacket) {
|
|
// Process through the actual handling logic
|
|
if let message = BitchatMessage.fromBinaryPayload(packet.payload) {
|
|
delegate?.didReceiveMessage(message)
|
|
}
|
|
packetDeliveryHandler?(packet)
|
|
}
|
|
|
|
func getConnectedPeers() -> [String] {
|
|
return Array(connectedPeers)
|
|
}
|
|
} |