package cash.z.wallet.sdk.sample.demoapp.model import androidx.test.filters.SmallTest import cash.z.ecc.android.sdk.demoapp.model.PersistableWallet import cash.z.ecc.android.sdk.model.ZcashNetwork import cash.z.wallet.sdk.sample.demoapp.count import cash.z.wallet.sdk.sample.demoapp.fixture.PersistableWalletFixture import cash.z.wallet.sdk.sample.demoapp.fixture.SeedPhraseFixture import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Test class PersistableWalletTest { @Test @SmallTest fun serialize() { val persistableWallet = PersistableWalletFixture.new() val jsonObject = persistableWallet.toJson() assertEquals(4, jsonObject.keys().count()) assertTrue(jsonObject.has(PersistableWallet.KEY_VERSION)) assertTrue(jsonObject.has(PersistableWallet.KEY_NETWORK_ID)) assertTrue(jsonObject.has(PersistableWallet.KEY_SEED_PHRASE)) assertTrue(jsonObject.has(PersistableWallet.KEY_BIRTHDAY)) assertEquals(1, jsonObject.getInt(PersistableWallet.KEY_VERSION)) assertEquals(ZcashNetwork.Testnet.id, jsonObject.getInt(PersistableWallet.KEY_NETWORK_ID)) assertEquals(PersistableWalletFixture.SEED_PHRASE.joinToString(), jsonObject.getString(PersistableWallet.KEY_SEED_PHRASE)) // Birthday serialization is tested in a separate file } @Test @SmallTest fun round_trip() { val persistableWallet = PersistableWalletFixture.new() val deserialized = PersistableWallet.from(persistableWallet.toJson()) assertEquals(persistableWallet, deserialized) assertFalse(persistableWallet === deserialized) } @Test @SmallTest fun toString_security() { val actual = PersistableWalletFixture.new().toString() assertFalse(actual.contains(SeedPhraseFixture.SEED_PHRASE)) } }