Skip to content

Commit 3795a75

Browse files
committed
add invoice sending to polar integration test
1 parent 96d8853 commit 3795a75

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

xcode/DirectBindingsApp/DirectBindingsAppTests/test-batteries/bitcoin/PolarIntegrationTest.swift

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class PolarIntegrationTest: XCTestCase {
1212

1313
// EDIT ME
1414
static let POLAR_LND_PEER_PUBKEY_HEX = "02e62868ab834e7c062a929ca2f22ee8707827a5821e3a8eec343f106cbee24e7c"
15+
static let POLAR_LND_PEER_INVOICE = "lnbcrt200u1p39ea7ppp52w26dtzvj48272l5g974zdg85uqpyrp07clzdge09wzdvn2erxrqdqqcqzpgxqyz5vqsp5kgurpluuqr5ydzn2fsyqa364u5yzcm2d8qegkk0x0tj0mu9e37gs9qyyssqj9vj7ca9jj6qtu4s93qyd8tanlhv5jlws64qxagrjlpys4nk3m99hmcr73p052z6jyxym49adg5v72wegn6hpce22rrr24eha9rh5aqp5gyhkw"
1516

1617
func testPolarFlow() async throws {
1718
let rpcInterface = try RegtestBlockchainManager(rpcProtocol: .http, rpcDomain: "localhost", rpcPort: 18443, rpcUsername: "polaruser", rpcPassword: "polarpass")
@@ -40,6 +41,11 @@ public class PolarIntegrationTest: XCTestCase {
4041
let chaintipHeight = try await rpcInterface.getChaintipHeight()
4142
let networkGraph = NetworkGraph(genesis_hash: reversedGenesisHash)
4243

44+
let scoringParams = ProbabilisticScoringParameters()
45+
let probabalisticScorer = ProbabilisticScorer(params: scoringParams, network_graph: networkGraph)
46+
let score = probabalisticScorer.as_Score()
47+
let multiThreadedScorer = MultiThreadedLockableScore(score: score)
48+
4349
print("Genesis hash: \(PolarIntegrationTest.bytesToHexString(bytes: genesisHash))")
4450
print("Genesis hash reversed: \(PolarIntegrationTest.bytesToHexString(bytes: reversedGenesisHash))")
4551
print("Block 1 hash: \(try await rpcInterface.getBlockHashHex(height: 1))")
@@ -83,7 +89,7 @@ public class PolarIntegrationTest: XCTestCase {
8389
let listener = Listener(channelManager: channelManager, chainMonitor: chainMonitor)
8490
rpcInterface.registerListener(listener);
8591
async let monitor = try rpcInterface.monitorBlockchain()
86-
channelManagerConstructor.chain_sync_completed(persister: channelManagerAndNetworkGraphPersisterAndEventHandler, scorer: nil)
92+
channelManagerConstructor.chain_sync_completed(persister: channelManagerAndNetworkGraphPersisterAndEventHandler, scorer: multiThreadedScorer)
8793

8894
let lndPubkey = PolarIntegrationTest.hexStringToBytes(hexString: PolarIntegrationTest.POLAR_LND_PEER_PUBKEY_HEX)!
8995
let connectionSuccess = tcpPeerHandler.connect(address: "127.0.0.1", port: 9735, theirNodeId: lndPubkey)
@@ -144,6 +150,27 @@ public class PolarIntegrationTest: XCTestCase {
144150
try! await Task.sleep(nanoseconds: 0_100_000_000)
145151
}
146152
XCTAssertGreaterThanOrEqual(usableChannels.count, 1)
153+
154+
let invoicePayer = channelManagerConstructor.payer!
155+
let invoiceResult = Invoice.from_str(s: PolarIntegrationTest.POLAR_LND_PEER_INVOICE)
156+
XCTAssertTrue(invoiceResult.isOk())
157+
158+
let invoice = invoiceResult.getValue()!
159+
let invoicePaymentResult = invoicePayer.pay_invoice(invoice: invoice)
160+
XCTAssertTrue(invoicePaymentResult.isOk())
161+
162+
do {
163+
// process payment
164+
let events = await channelManagerAndNetworkGraphPersisterAndEventHandler.getManagerEvents(expectedCount: 2)
165+
let paymentSentEvent = events[0]
166+
let paymentPathSuccessfulEvent = events[1]
167+
XCTAssertEqual(paymentSentEvent.getValueType(), .PaymentSent)
168+
XCTAssertEqual(paymentPathSuccessfulEvent.getValueType(), .PaymentPathSuccessful)
169+
let paymentSent = paymentSentEvent.getValueAsPaymentSent()!
170+
let paymentPathSuccessful = paymentPathSuccessfulEvent.getValueAsPaymentPathSuccessful()!
171+
print("sent payment \(paymentSent.getPayment_id()) with fee \(paymentSent.getFee_paid_msat().getValue()) via \(paymentPathSuccessful.getPath().map { h in h.get_short_channel_id() })")
172+
}
173+
147174
}
148175

149176
private func ascertainSpareMoney(rpcInterface: RegtestBlockchainManager) async throws {

0 commit comments

Comments
 (0)