2023-10-27 14:13:44 -04:00
|
|
|
import XCTest
|
|
|
|
@testable import BitcoinDevKit
|
|
|
|
|
2024-06-24 10:15:46 -04:00
|
|
|
private let descriptor = try! Descriptor(
|
|
|
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
|
|
|
network: Network.signet
|
|
|
|
)
|
|
|
|
private let changeDescriptor = try! Descriptor(
|
|
|
|
descriptor: "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/1/*)",
|
|
|
|
network: Network.signet
|
|
|
|
)
|
|
|
|
|
2023-10-27 14:13:44 -04:00
|
|
|
final class OfflineWalletTests: XCTestCase {
|
2024-02-28 13:34:23 -06:00
|
|
|
var dbFilePath: URL!
|
|
|
|
|
|
|
|
override func setUpWithError() throws {
|
|
|
|
super.setUp()
|
2024-02-08 16:02:15 -05:00
|
|
|
let fileManager = FileManager.default
|
|
|
|
let documentDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
|
2024-05-28 09:36:20 -04:00
|
|
|
let uniqueDbFileName = "bdk_persistence_\(UUID().uuidString).sqlite"
|
2024-02-28 13:34:23 -06:00
|
|
|
dbFilePath = documentDirectory.appendingPathComponent(uniqueDbFileName)
|
2024-02-08 16:02:15 -05:00
|
|
|
|
|
|
|
if fileManager.fileExists(atPath: dbFilePath.path) {
|
|
|
|
try fileManager.removeItem(at: dbFilePath)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-02-28 13:34:23 -06:00
|
|
|
override func tearDownWithError() throws {
|
|
|
|
let fileManager = FileManager.default
|
|
|
|
if fileManager.fileExists(atPath: dbFilePath.path) {
|
|
|
|
try fileManager.removeItem(at: dbFilePath)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-10-27 14:13:44 -04:00
|
|
|
func testNewAddress() throws {
|
2024-02-28 13:34:23 -06:00
|
|
|
let wallet = try Wallet(
|
2024-02-08 16:02:15 -05:00
|
|
|
descriptor: descriptor,
|
2024-06-24 10:15:46 -04:00
|
|
|
changeDescriptor: changeDescriptor,
|
2024-02-08 16:02:15 -05:00
|
|
|
network: .testnet
|
|
|
|
)
|
2024-06-24 10:15:46 -04:00
|
|
|
let addressInfo: AddressInfo = wallet.revealNextAddress(keychain: KeychainKind.external)
|
2024-02-08 16:02:15 -05:00
|
|
|
|
|
|
|
XCTAssertTrue(addressInfo.address.isValidForNetwork(network: Network.testnet),
|
|
|
|
"Address is not valid for testnet network")
|
|
|
|
XCTAssertTrue(addressInfo.address.isValidForNetwork(network: Network.signet),
|
|
|
|
"Address is not valid for signet network")
|
|
|
|
XCTAssertFalse(addressInfo.address.isValidForNetwork(network: Network.regtest),
|
|
|
|
"Address is valid for regtest network, but it shouldn't be")
|
|
|
|
XCTAssertFalse(addressInfo.address.isValidForNetwork(network: Network.bitcoin),
|
|
|
|
"Address is valid for bitcoin network, but it shouldn't be")
|
|
|
|
|
2024-06-24 10:15:46 -04:00
|
|
|
XCTAssertEqual(addressInfo.address.description, "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989")
|
2023-10-27 14:13:44 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
func testBalance() throws {
|
2024-02-28 13:34:23 -06:00
|
|
|
let wallet = try Wallet(
|
2024-02-08 16:02:15 -05:00
|
|
|
descriptor: descriptor,
|
2024-06-24 10:15:46 -04:00
|
|
|
changeDescriptor: changeDescriptor,
|
2024-02-08 16:02:15 -05:00
|
|
|
network: .testnet
|
|
|
|
)
|
|
|
|
|
2024-06-24 10:15:46 -04:00
|
|
|
XCTAssertEqual(wallet.balance().total.toSat(), 0)
|
2023-10-27 14:13:44 -04:00
|
|
|
}
|
|
|
|
}
|