mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 22:05:21 +00:00
PeerID 11/n: Noise types use PeerID + create separate files (#750)
* Noise types use PeerID * Fix tests * Extract `NoiseSessionManager` into a separate file * Extract `NoiseSessionState` into a separate file * Remove `failed` state from `NoiseSessionState` * Extract `NoiseSessionError` into a separate file
This commit is contained in:
@@ -301,9 +301,9 @@ final class PrivateChatE2ETests: XCTestCase {
|
||||
|
||||
// MARK: - Helper Methods
|
||||
|
||||
private func createMockService(peerID: String, nickname: String) -> MockBluetoothMeshService {
|
||||
private func createMockService(peerID: PeerID, nickname: String) -> MockBluetoothMeshService {
|
||||
let service = MockBluetoothMeshService()
|
||||
service.myPeerID = peerID
|
||||
service.myPeerID = peerID.id
|
||||
service.mockNickname = nickname
|
||||
return service
|
||||
}
|
||||
|
||||
@@ -200,9 +200,9 @@ final class PublicChatE2ETests: XCTestCase {
|
||||
}
|
||||
|
||||
// Inject at Bob with TTL=2 so Charlie sees it (TTL->1) and does not relay to David
|
||||
let msg = TestHelpers.createTestMessage(content: TestConstants.testMessage1, sender: TestConstants.testNickname1, senderPeerID: alice.peerID)
|
||||
let msg = TestHelpers.createTestMessage(content: TestConstants.testMessage1, sender: TestConstants.testNickname1, senderPeerID: PeerID(str: alice.peerID))
|
||||
if let payload = msg.toBinaryPayload() {
|
||||
let pkt = TestHelpers.createTestPacket(senderID: alice.peerID, payload: payload, ttl: 2)
|
||||
let pkt = TestHelpers.createTestPacket(senderID: PeerID(str: alice.peerID), payload: payload, ttl: 2)
|
||||
bob.simulateIncomingPacket(pkt)
|
||||
}
|
||||
|
||||
@@ -419,9 +419,9 @@ final class PublicChatE2ETests: XCTestCase {
|
||||
|
||||
// MARK: - Helper Methods
|
||||
|
||||
private func createMockService(peerID: String, nickname: String) -> MockBluetoothMeshService {
|
||||
private func createMockService(peerID: PeerID, nickname: String) -> MockBluetoothMeshService {
|
||||
let service = MockBluetoothMeshService()
|
||||
service.myPeerID = peerID
|
||||
service.myPeerID = peerID.id
|
||||
service.mockNickname = nickname
|
||||
return service
|
||||
}
|
||||
|
||||
@@ -484,10 +484,13 @@ final class IntegrationTests: XCTestCase {
|
||||
|
||||
guard let aliceManager = noiseManagers["Alice"],
|
||||
let bobManager = noiseManagers["Bob"],
|
||||
let alicePeerID = nodes["Alice"]?.peerID,
|
||||
let bobPeerID = nodes["Bob"]?.peerID else {
|
||||
let aliceStringPeerID = nodes["Alice"]?.peerID,
|
||||
let bobStringPeerID = nodes["Bob"]?.peerID else {
|
||||
return XCTFail("Missing managers or peer IDs")
|
||||
}
|
||||
|
||||
let alicePeerID = PeerID(str: aliceStringPeerID)
|
||||
let bobPeerID = PeerID(str: bobStringPeerID)
|
||||
|
||||
// Baseline: encrypt from Alice, decrypt at Bob
|
||||
let plaintext1 = Data("hello-secure".utf8)
|
||||
@@ -587,9 +590,9 @@ final class IntegrationTests: XCTestCase {
|
||||
|
||||
// MARK: - Helper Methods
|
||||
|
||||
private func createNode(_ name: String, peerID: String) {
|
||||
private func createNode(_ name: String, peerID: PeerID) {
|
||||
let node = MockBluetoothMeshService()
|
||||
node.myPeerID = peerID
|
||||
node.myPeerID = peerID.id
|
||||
node.mockNickname = name
|
||||
nodes[name] = node
|
||||
|
||||
@@ -666,9 +669,9 @@ final class IntegrationTests: XCTestCase {
|
||||
let peer1ID = nodes[node1]?.peerID,
|
||||
let peer2ID = nodes[node2]?.peerID else { return }
|
||||
|
||||
let msg1 = try manager1.initiateHandshake(with: peer2ID)
|
||||
let msg2 = try manager2.handleIncomingHandshake(from: peer1ID, message: msg1)!
|
||||
let msg3 = try manager1.handleIncomingHandshake(from: peer2ID, message: msg2)!
|
||||
_ = try manager2.handleIncomingHandshake(from: peer1ID, message: msg3)
|
||||
let msg1 = try manager1.initiateHandshake(with: PeerID(str: peer2ID))
|
||||
let msg2 = try manager2.handleIncomingHandshake(from: PeerID(str: peer1ID), message: msg1)!
|
||||
let msg3 = try manager1.handleIncomingHandshake(from: PeerID(str: peer2ID), message: msg2)!
|
||||
_ = try manager2.handleIncomingHandshake(from: PeerID(str: peer1ID), message: msg3)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -342,8 +342,8 @@ final class MockBLEService: NSObject {
|
||||
|
||||
// MARK: - Compatibility methods for old tests
|
||||
|
||||
func sendPrivateMessage(_ content: String, to recipientPeerID: String, recipientNickname: String, messageID: String? = nil) {
|
||||
sendPrivateMessage(content, to: recipientPeerID, recipientNickname: recipientNickname, messageID: messageID ?? UUID().uuidString)
|
||||
func sendPrivateMessage(_ content: String, to recipientPeerID: PeerID, recipientNickname: String, messageID: String? = nil) {
|
||||
sendPrivateMessage(content, to: recipientPeerID.id, recipientNickname: recipientNickname, messageID: messageID ?? UUID().uuidString)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ final class BinaryProtocolTests: XCTestCase {
|
||||
// Verify recipient
|
||||
XCTAssertNotNil(decodedPacket.recipientID)
|
||||
let decodedRecipientID = decodedPacket.recipientID?.trimmingNullBytes()
|
||||
XCTAssertEqual(String(data: decodedRecipientID!, encoding: .utf8), recipientID)
|
||||
XCTAssertTrue(String(data: decodedRecipientID!, encoding: .utf8) == recipientID)
|
||||
}
|
||||
|
||||
func testPacketWithSignature() throws {
|
||||
@@ -251,7 +251,7 @@ final class BinaryProtocolTests: XCTestCase {
|
||||
originalSender: TestConstants.testNickname3,
|
||||
isPrivate: false,
|
||||
recipientNickname: nil,
|
||||
senderPeerID: TestConstants.testPeerID1,
|
||||
senderPeerID: TestConstants.testPeerID1.id,
|
||||
mentions: nil
|
||||
)
|
||||
|
||||
|
||||
@@ -7,16 +7,17 @@
|
||||
//
|
||||
|
||||
import Foundation
|
||||
@testable import bitchat
|
||||
|
||||
struct TestConstants {
|
||||
static let defaultTimeout: TimeInterval = 5.0
|
||||
static let shortTimeout: TimeInterval = 1.0
|
||||
static let longTimeout: TimeInterval = 10.0
|
||||
|
||||
static let testPeerID1 = "PEER1234"
|
||||
static let testPeerID2 = "PEER5678"
|
||||
static let testPeerID3 = "PEER9012"
|
||||
static let testPeerID4 = "PEER3456"
|
||||
static let testPeerID1: PeerID = "PEER1234"
|
||||
static let testPeerID2: PeerID = "PEER5678"
|
||||
static let testPeerID3: PeerID = "PEER9012"
|
||||
static let testPeerID4: PeerID = "PEER3456"
|
||||
|
||||
static let testNickname1 = "Alice"
|
||||
static let testNickname2 = "Bob"
|
||||
|
||||
@@ -30,7 +30,7 @@ final class TestHelpers {
|
||||
static func createTestMessage(
|
||||
content: String = TestConstants.testMessage1,
|
||||
sender: String = TestConstants.testNickname1,
|
||||
senderPeerID: String = TestConstants.testPeerID1,
|
||||
senderPeerID: PeerID = TestConstants.testPeerID1,
|
||||
isPrivate: Bool = false,
|
||||
recipientNickname: String? = nil,
|
||||
mentions: [String]? = nil
|
||||
@@ -44,23 +44,23 @@ final class TestHelpers {
|
||||
originalSender: nil,
|
||||
isPrivate: isPrivate,
|
||||
recipientNickname: recipientNickname,
|
||||
senderPeerID: senderPeerID,
|
||||
senderPeerID: senderPeerID.id,
|
||||
mentions: mentions
|
||||
)
|
||||
}
|
||||
|
||||
static func createTestPacket(
|
||||
type: UInt8 = 0x01,
|
||||
senderID: String = TestConstants.testPeerID1,
|
||||
recipientID: String? = nil,
|
||||
senderID: PeerID = TestConstants.testPeerID1,
|
||||
recipientID: PeerID? = nil,
|
||||
payload: Data = "test payload".data(using: .utf8)!,
|
||||
signature: Data? = nil,
|
||||
ttl: UInt8 = 3
|
||||
) -> BitchatPacket {
|
||||
return BitchatPacket(
|
||||
type: type,
|
||||
senderID: senderID.data(using: .utf8)!,
|
||||
recipientID: recipientID?.data(using: .utf8),
|
||||
senderID: senderID.id.data(using: .utf8)!,
|
||||
recipientID: recipientID?.id.data(using: .utf8),
|
||||
timestamp: UInt64(Date().timeIntervalSince1970 * 1000),
|
||||
payload: payload,
|
||||
signature: signature,
|
||||
@@ -119,4 +119,16 @@ enum TestError: Error {
|
||||
case timeout
|
||||
case unexpectedValue
|
||||
case testFailure(String)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - PeerID String Helpers
|
||||
|
||||
/// Raw String can be passed as PeerID
|
||||
extension PeerID: @retroactive ExpressibleByStringLiteral {
|
||||
public init(stringLiteral value: String) {
|
||||
self.init(str: value)
|
||||
}
|
||||
}
|
||||
|
||||
/// Interpolated String can be passed as PeerID
|
||||
extension PeerID: @retroactive ExpressibleByStringInterpolation {}
|
||||
|
||||
Reference in New Issue
Block a user