Skip to content

Commit 2c7c7f6

Browse files
test: add regtest esplora client test
1 parent ac23988 commit 2c7c7f6

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed

bdk-android/lib/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ dependencies {
5656
androidTestImplementation("androidx.test.espresso:espresso-core:3.4.0")
5757
androidTestImplementation("org.jetbrains.kotlin:kotlin-test:1.6.10")
5858
androidTestImplementation("org.jetbrains.kotlin:kotlin-test-junit:1.6.10")
59+
androidTestImplementation("org.kotlinbitcointools:regtest-toolbox:0.2.0")
5960
}
6061

6162
mavenPublishing {

bdk-android/lib/src/androidTest/kotlin/org/bitcoindevkit/Constants.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,5 @@ val NON_EXTENDED_DESCRIPTOR_1: Descriptor = Descriptor(
4141
const val TEST_EXTENDED_PRIVKEY_0 = "tprv8ZgxMBicQKsPdWAHbugK2tjtVtRjKGixYVZUdL7xLHMgXZS6BFbFi1UDb1CHT25Z5PU1F9j7wGxwUiRhqz9E3nZRztikGUV6HoRDYcqPhM4"
4242
const val BIP84_TEST_RECEIVE_PATH_0 = "84h/1h/0h/0"
4343
val TEST_BIP84_DESCRIPTOR_0 = Descriptor("wpkh($TEST_EXTENDED_PRIVKEY_0/$BIP84_TEST_RECEIVE_PATH_0/*)", Network.REGTEST)
44+
45+
const val ESPLORA_REGTEST_URL = "http://10.0.2.2:3002"
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package org.bitcoindevkit
2+
3+
import kotlin.test.Test
4+
import androidx.test.ext.junit.runners.AndroidJUnit4
5+
import kotlinx.coroutines.delay
6+
import kotlinx.coroutines.runBlocking
7+
import org.junit.runner.RunWith
8+
import org.kotlinbitcointools.regtesttoolbox.regenv.RegEnv
9+
import kotlin.time.Duration.Companion.milliseconds
10+
11+
@RunWith(AndroidJUnit4::class)
12+
class EsploraClientTest {
13+
private val conn: Persister = Persister.newInMemory()
14+
15+
@Test
16+
fun walletSyncWithEsploraClient() {
17+
runBlocking {
18+
val regtestEnv = RegEnv.connectTo(
19+
host = "10.0.2.2",
20+
walletName = "faucet",
21+
username = "regtest",
22+
password = "password",
23+
)
24+
25+
val wallet: Wallet = Wallet.createSingle(
26+
descriptor = BIP86_DESCRIPTOR,
27+
network = Network.REGTEST,
28+
persister = conn
29+
)
30+
val newAddress = wallet.revealNextAddress(KeychainKind.EXTERNAL).address
31+
32+
val txidString = regtestEnv.send(newAddress.toString(), 0.12345678, 2.0)
33+
regtestEnv.mine(2)
34+
35+
val esploraClient = EsploraClient(ESPLORA_REGTEST_URL)
36+
val txid = Txid.fromString(txidString)
37+
// Wait for the Esplora client to see the transaction. Try 5x per second for 20 seconds.
38+
repeat(100) {
39+
if (esploraClient.getTx(txid) != null) return@repeat
40+
delay(200.milliseconds)
41+
}
42+
43+
val fullScanRequest: FullScanRequest = wallet.startFullScan().build()
44+
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
45+
46+
wallet.applyUpdate(update)
47+
wallet.persist(conn)
48+
49+
val balance = wallet.balance().total.toSat()
50+
assert(balance > 0uL) {
51+
"Balance should be greater than zero, but was $balance"
52+
}
53+
}
54+
}
55+
}

0 commit comments

Comments
 (0)