46 lines
1.7 KiB
Swift
46 lines
1.7 KiB
Swift
//
|
|
// Copyright 2023 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import LibSignalClient
|
|
import XCTest
|
|
|
|
@testable import SignalServiceKit
|
|
|
|
final class RecipientDatabaseTableTest: XCTestCase {
|
|
func testFetchServiceIdForContactThread() {
|
|
let mockDB = InMemoryDB()
|
|
|
|
let s = RecipientDatabaseTable()
|
|
let aci1 = Aci.constantForTesting("00000000-0000-4000-8000-0000000000a1")
|
|
let aci2 = Aci.constantForTesting("00000000-0000-4000-8000-0000000000a2")
|
|
let phoneNumber1 = E164("+16505550101")!
|
|
let phoneNumber2 = E164("+16505550102")!
|
|
let pni1 = Pni.constantForTesting("PNI:00000000-0000-4000-8000-0000000000b1")
|
|
let pni2 = Pni.constantForTesting("PNI:00000000-0000-4000-8000-0000000000b2")
|
|
|
|
mockDB.write { tx in
|
|
_ = try! SignalRecipient.insertRecord(aci: aci1, phoneNumber: phoneNumber1, pni: pni1, tx: tx)
|
|
}
|
|
|
|
func fetchServiceId(_ serviceId: ServiceId?, _ phoneNumber: E164?) -> ServiceId? {
|
|
return mockDB.read { tx in s.fetchServiceId(contactThread: makeThread(serviceId, phoneNumber), tx: tx) }
|
|
}
|
|
|
|
XCTAssertEqual(fetchServiceId(aci2, phoneNumber1), aci2)
|
|
XCTAssertEqual(fetchServiceId(pni1, phoneNumber2), nil)
|
|
XCTAssertEqual(fetchServiceId(pni1, phoneNumber1), aci1)
|
|
XCTAssertEqual(fetchServiceId(pni1, nil), aci1)
|
|
XCTAssertEqual(fetchServiceId(pni2, nil), pni2)
|
|
}
|
|
|
|
private func makeThread(_ serviceId: ServiceId?, _ phoneNumber: E164?) -> TSContactThread {
|
|
return TSContactThread(contactAddress: SignalServiceAddress(
|
|
serviceId: serviceId,
|
|
phoneNumber: phoneNumber?.stringValue,
|
|
cache: SignalServiceAddressCache(),
|
|
))
|
|
}
|
|
}
|