Skip to content

Commit 9ad254e

Browse files
test: add regtest esplora client test
1 parent df8594f commit 9ad254e

3 files changed

Lines changed: 54 additions & 0 deletions

File tree

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 EXPLORA_REGTEST_URL = "http://10.0.2.2:3002"
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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.seconds
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+
regtestEnv.send(newAddress.toString(), 0.12345678, 2.0)
33+
regtestEnv.mine(2)
34+
35+
//Wait 8 second for mining to complete and for esplora to index the new blocks before scanning
36+
delay(8.seconds)
37+
38+
val esploraClient = EsploraClient(EXPLORA_REGTEST_URL)
39+
val fullScanRequest: FullScanRequest = wallet.startFullScan().build()
40+
val update = esploraClient.fullScan(fullScanRequest, 10uL, 1uL)
41+
42+
wallet.applyUpdate(update)
43+
wallet.persist(conn)
44+
45+
val balance = wallet.balance().total.toSat()
46+
assert(balance > 0uL){
47+
"Balance should be greater than zero, but was $balance"
48+
}
49+
}
50+
}
51+
}

0 commit comments

Comments
 (0)