xmtp-ios/Tests/XMTPTests/ClientTests.swift

67 lines
2.1 KiB
Swift

//
// ClientTests.swift
//
//
// Created by Pat Nakajima on 11/22/22.
//
import Foundation
import XCTest
@testable import XMTP
import XMTPRust
import XMTPTestHelpers
@available(iOS 15, *)
class ClientTests: XCTestCase {
func testTakesAWallet() async throws {
let fakeWallet = try PrivateKey.generate()
_ = try await Client.create(account: fakeWallet)
}
func testCanMessage() async throws {
let fixtures = await fixtures()
let notOnNetwork = try PrivateKey.generate()
let canMessage = try await fixtures.aliceClient.canMessage(fixtures.bobClient.address)
let cannotMessage = try await fixtures.aliceClient.canMessage(notOnNetwork.address)
XCTAssertTrue(canMessage)
XCTAssertFalse(cannotMessage)
}
func testHasPrivateKeyBundleV1() async throws {
let fakeWallet = try PrivateKey.generate()
let client = try await Client.create(account: fakeWallet, apiClient: FakeApiClient())
XCTAssertEqual(1, client.privateKeyBundleV1.preKeys.count)
let preKey = client.privateKeyBundleV1.preKeys[0]
XCTAssert(preKey.publicKey.hasSignature, "prekey not signed")
}
func testCanBeCreatedWithBundle() async throws {
let fakeWallet = try PrivateKey.generate()
let client = try await Client.create(account: fakeWallet)
let bundle = client.privateKeyBundle
let clientFromV1Bundle = try await Client.from(bundle: bundle)
XCTAssertEqual(client.address, clientFromV1Bundle.address)
XCTAssertEqual(client.privateKeyBundleV1.identityKey, clientFromV1Bundle.privateKeyBundleV1.identityKey)
XCTAssertEqual(client.privateKeyBundleV1.preKeys, clientFromV1Bundle.privateKeyBundleV1.preKeys)
}
func testCanBeCreatedWithV1Bundle() async throws {
let fakeWallet = try PrivateKey.generate()
let client = try await Client.create(account: fakeWallet)
let bundleV1 = client.v1keys
let clientFromV1Bundle = try await Client.from(v1Bundle: bundleV1)
XCTAssertEqual(client.address, clientFromV1Bundle.address)
XCTAssertEqual(client.privateKeyBundleV1.identityKey, clientFromV1Bundle.privateKeyBundleV1.identityKey)
XCTAssertEqual(client.privateKeyBundleV1.preKeys, clientFromV1Bundle.privateKeyBundleV1.preKeys)
}
}