Sanity test the new initializer behavior and fix existing uses.

This commit is contained in:
Kevin Gorham 2020-11-24 00:53:09 -05:00
parent e9e2593369
commit 8f8d3db9d9
No known key found for this signature in database
GPG Key ID: CCA55602DF49FC38
8 changed files with 68 additions and 10 deletions

View File

@ -50,7 +50,7 @@ class ListTransactionsFragment : BaseDemoFragment<FragmentListTransactionsBindin
App.instance.defaultConfig.let { config ->
initializer = Initializer(App.instance) {
it.import(seed, config.birthdayHeight)
it.importWallet(seed, config.birthdayHeight)
it.server(config.host, config.port)
}
address = DerivationTool.deriveShieldedAddress(seed)

View File

@ -67,7 +67,7 @@ class ListUtxosFragment : BaseDemoFragment<FragmentListUtxosBinding>() {
// have the seed stored
seed = Mnemonics.MnemonicCode(sharedViewModel.seedPhrase.value).toSeed()
initializer = Initializer(App.instance) {
it.import(seed, config.birthdayHeight)
it.importWallet(seed, config.birthdayHeight)
it.alias = "Demo_Utxos"
}
synchronizer = Synchronizer(initializer)

View File

@ -51,7 +51,7 @@ class SendFragment : BaseDemoFragment<FragmentSendBinding>() {
App.instance.defaultConfig.let { config ->
Initializer(App.instance) {
it.import(seed, config.birthdayHeight)
it.importWallet(seed, config.birthdayHeight)
it.server(config.host, config.port)
}.let { initializer ->
synchronizer = Synchronizer(initializer)

View File

@ -1,18 +1,29 @@
package cash.z.ecc.android.sdk
import androidx.test.platform.app.InstrumentationRegistry
import cash.z.ecc.android.sdk.exception.InitializerException
import cash.z.ecc.android.sdk.ext.TroubleshootingTwig
import cash.z.ecc.android.sdk.ext.Twig
import cash.z.ecc.android.sdk.ext.ZcashSdk
import org.junit.After
import org.junit.Assert.*
import org.junit.Test
class InitializerTest {
lateinit var initializer: Initializer
@After
fun cleanUp() {
// don't leave databases sitting around after this test is run
if (::initializer.isInitialized) initializer.erase()
}
@Test
fun testInit() {
val height = 980000
val initializer = Initializer(context) { config ->
initializer = Initializer(context) { config ->
config.importedWalletBirthday(height)
config.setViewingKeys("zxviews1qvn6j50dqqqqpqxqkvqgx2sp63jccr4k5t8zefadpzsu0yy73vczfznwc794xz6lvy3yp5ucv43lww48zz95ey5vhrsq83dqh0ky9junq0cww2wjp9c3cd45n5l5x8l2g9atnx27e9jgyy8zasjy26gugjtefphan9al3tx208m8ekev5kkx3ug6pd0qk4gq4j4wfuxajn388pfpq54wklwktqkyjz9e6gam0n09xjc35ncd3yah5aa9ezj55lk4u7v7hn0v86vz7ygq4qj2v",
"zxviews1qv886f6hqqqqpqy2ajg9sm22vs4gm4hhajthctfkfws34u45pjtut3qmz0eatpqzvllgsvlk3x0y35ktx5fnzqqzueyph20k3328kx46y3u5xs4750cwuwjuuccfp7la6rh8yt2vjz6tylsrwzy3khtjjzw7etkae6gw3vq608k7quka4nxkeqdxxsr9xxdagv2rhhwugs6w0cquu2ykgzgaln2vyv6ah3ram2h6lrpxuznyczt2xl3lyxcwlk4wfz5rh7wzfd7642c2ae5d7")
@ -25,15 +36,62 @@ class InitializerTest {
@Test
fun testErase() {
val alias = "VkInitTest2"
Initializer(context) { config ->
initializer = Initializer(context) { config ->
config.importedWalletBirthday(1_419_900)
config.setViewingKeys("zxviews1qvn6j50dqqqqpqxqkvqgx2sp63jccr4k5t8zefadpzsu0yy73vczfznwc794xz6lvy3yp5ucv43lww48zz95ey5vhrsq83dqh0ky9junq0cww2wjp9c3cd45n5l5x8l2g9atnx27e9jgyy8zasjy26gugjtefphan9al3tx208m8ekev5kkx3ug6pd0qk4gq4j4wfuxajn388pfpq54wklwktqkyjz9e6gam0n09xjc35ncd3yah5aa9ezj55lk4u7v7hn0v86vz7ygq4qj2v",
"zxviews1qv886f6hqqqqpqy2ajg9sm22vs4gm4hhajthctfkfws34u45pjtut3qmz0eatpqzvllgsvlk3x0y35ktx5fnzqqzueyph20k3328kx46y3u5xs4750cwuwjuuccfp7la6rh8yt2vjz6tylsrwzy3khtjjzw7etkae6gw3vq608k7quka4nxkeqdxxsr9xxdagv2rhhwugs6w0cquu2ykgzgaln2vyv6ah3ram2h6lrpxuznyczt2xl3lyxcwlk4wfz5rh7wzfd7642c2ae5d7")
config.alias = alias
}
assertFalse("Expected false when erasing nothing.", Initializer.erase(context))
assertTrue("Failed to erase initializer", Initializer.erase(context, alias))
assertFalse("Expected false when erasing nothing.", Initializer.erase(context))
}
@Test(expected = InitializerException.MissingDefaultBirthdayException::class)
fun testMissingBirthday() {
val config = Initializer.Config { config ->
config.setViewingKeys("vk1")
}
config.validate()
}
@Test(expected = InitializerException.InvalidBirthdayHeightException::class)
fun testOutOfBoundsBirthday() {
val config = Initializer.Config { config ->
config.setViewingKeys("vk1")
config.setBirthdayHeight(ZcashSdk.SAPLING_ACTIVATION_HEIGHT - 1)
}
config.validate()
}
@Test
fun testImportedWalletUsesSaplingActivation() {
initializer = Initializer(context) { config ->
config.setViewingKeys("vk1")
config.importWallet(ByteArray(32))
}
assertEquals("Incorrect height used for import.", ZcashSdk.SAPLING_ACTIVATION_HEIGHT, initializer.birthday.height)
}
@Test
fun testDefaultToOldestHeight_true() {
initializer = Initializer(context) { config ->
config.setViewingKeys("vk1")
config.setBirthdayHeight(null, true)
}
assertEquals("Height should equal sapling activation height when defaultToOldestHeight is true", ZcashSdk.SAPLING_ACTIVATION_HEIGHT, initializer.birthday.height)
}
@Test
fun testDefaultToOldestHeight_false() {
val initialHeight = 750_000
initializer = Initializer(context) { config ->
config.setViewingKeys("vk1")
config.setBirthdayHeight(initialHeight, false)
}
val h = initializer.birthday.height
assertNotEquals("Height should not equal sapling activation height when defaultToOldestHeight is false", ZcashSdk.SAPLING_ACTIVATION_HEIGHT, h)
assertTrue("expected $h to be higher", h >= initialHeight)
}
companion object {

View File

@ -84,7 +84,7 @@ class BalancePrinterUtil {
}.collect { seed ->
// TODO: clear the dataDb but leave the cacheDb
val initializer = Initializer(context) { config ->
config.import(seed, birthdayHeight)
config.importWallet(seed, birthdayHeight)
config.server(host, port)
config.alias = alias
}

View File

@ -69,7 +69,7 @@ class DarksideTestCoordinator(val host: String = "127.0.0.1", val testName: Stri
twig("*************** INITIALIZING TEST COORDINATOR (ONLY ONCE) ***********************")
val initializer = Initializer(context) { config ->
config.seedPhrase(seedPhrase)
config.birthdayHeight = birthdayHeight
config.setBirthdayHeight(birthdayHeight)
config.alias = testName
}
synchronizer = Synchronizer(initializer) as SdkSynchronizer

View File

@ -65,7 +65,7 @@ class DataDbScannerUtil {
@Test
fun scanExistingDb() {
synchronizer = Synchronizer(Initializer(context) { it.birthdayHeight = birthdayHeight})
synchronizer = Synchronizer(Initializer(context) { it.setBirthdayHeight(birthdayHeight)})
println("sync!")
synchronizer.start()

View File

@ -108,7 +108,7 @@ class IntegrationTest {
private val initializer = Initializer(context) { config ->
config.setSeed(seed)
config.server(host, port)
config.birthdayHeight = birthdayHeight
config.setBirthdayHeight(birthdayHeight)
}
private val synchronizer: Synchronizer = Synchronizer(initializer)