Add StoreAndRetrieveSaplingSpendingKey test
This commit is contained in:
@@ -55,8 +55,12 @@ TEST(keystore_tests, sapling_keys) {
|
||||
EXPECT_EQ(in_viewing_key, in_viewing_key_2);
|
||||
|
||||
// Check that the default address from primitives and from sk method are the same
|
||||
auto default_addr = sk.default_address();
|
||||
auto default_addr_2 = in_viewing_key.address(default_d);
|
||||
auto addrOpt = sk.default_address();
|
||||
EXPECT_TRUE(addrOpt);
|
||||
auto default_addr = addrOpt.value();
|
||||
auto addrOpt2 = in_viewing_key.address(default_d);
|
||||
EXPECT_TRUE(addrOpt2);
|
||||
auto default_addr_2 = addrOpt2.value();
|
||||
EXPECT_EQ(default_addr, default_addr_2);
|
||||
|
||||
auto default_addr_3 = libzcash::SaplingPaymentAddress(default_d, default_pk_d);
|
||||
@@ -161,6 +165,42 @@ TEST(keystore_tests, StoreAndRetrieveViewingKey) {
|
||||
EXPECT_EQ(ZCNoteDecryption(sk.receiving_key()), decOut);
|
||||
}
|
||||
|
||||
// Sapling
|
||||
TEST(keystore_tests, StoreAndRetrieveSaplingSpendingKey) {
|
||||
CBasicKeyStore keyStore;
|
||||
libzcash::SaplingSpendingKey skOut;
|
||||
libzcash::SaplingFullViewingKey fvkOut;
|
||||
libzcash::SaplingIncomingViewingKey ivkOut;
|
||||
|
||||
auto sk = libzcash::SaplingSpendingKey::random();
|
||||
auto fvk = sk.full_viewing_key();
|
||||
auto ivk = fvk.in_viewing_key();
|
||||
auto addrOpt = sk.default_address();
|
||||
EXPECT_TRUE(addrOpt);
|
||||
auto addr = addrOpt.value();
|
||||
|
||||
// Sanity-check: we can't get a key we haven't added
|
||||
EXPECT_FALSE(keyStore.HaveSaplingSpendingKey(fvk));
|
||||
EXPECT_FALSE(keyStore.GetSaplingSpendingKey(fvk, skOut));
|
||||
// Sanity-check: we can't get a full viewing key we haven't added
|
||||
EXPECT_FALSE(keyStore.HaveSaplingFullViewingKey(ivk));
|
||||
EXPECT_FALSE(keyStore.GetSaplingFullViewingKey(ivk, fvkOut));
|
||||
// Sanity-check: we can't get an incoming viewing key we haven't added
|
||||
EXPECT_FALSE(keyStore.HaveSaplingIncomingViewingKey(addr));
|
||||
EXPECT_FALSE(keyStore.GetSaplingIncomingViewingKey(addr, ivkOut));
|
||||
|
||||
keyStore.AddSaplingSpendingKey(sk);
|
||||
EXPECT_TRUE(keyStore.HaveSaplingSpendingKey(fvk));
|
||||
EXPECT_TRUE(keyStore.GetSaplingSpendingKey(fvk, skOut));
|
||||
EXPECT_TRUE(keyStore.HaveSaplingFullViewingKey(ivk));
|
||||
EXPECT_TRUE(keyStore.GetSaplingFullViewingKey(ivk, fvkOut));
|
||||
EXPECT_TRUE(keyStore.HaveSaplingIncomingViewingKey(addr));
|
||||
EXPECT_TRUE(keyStore.GetSaplingIncomingViewingKey(addr, ivkOut));
|
||||
EXPECT_EQ(sk, skOut);
|
||||
EXPECT_EQ(fvk, fvkOut);
|
||||
EXPECT_EQ(ivk, ivkOut);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_WALLET
|
||||
class TestCCryptoKeyStore : public CCryptoKeyStore
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user