aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/test/walletdb_tests.cpp
diff options
context:
space:
mode:
authorBushstar <bushsolo@gmail.com>2020-03-10 07:42:31 +0000
committerBushstar <bushsolo@gmail.com>2020-03-10 07:42:31 +0000
commit7486e2771e7b5d6fa84df6e954be76350c84e220 (patch)
tree3a2862309ce56cdd23397a769b0bf97cb58856ee /src/wallet/test/walletdb_tests.cpp
parent32def8d1c29e0855fe5429687acabd2f29119316 (diff)
downloadbitcoin-7486e2771e7b5d6fa84df6e954be76350c84e220.tar.xz
Tests: Unit test related to WalletDB ReadKeyValue
Diffstat (limited to 'src/wallet/test/walletdb_tests.cpp')
-rw-r--r--src/wallet/test/walletdb_tests.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/wallet/test/walletdb_tests.cpp b/src/wallet/test/walletdb_tests.cpp
new file mode 100644
index 0000000000..a3859e2e4b
--- /dev/null
+++ b/src/wallet/test/walletdb_tests.cpp
@@ -0,0 +1,29 @@
+// Copyright (c) 2012-2019 The Bitcoin Core developers
+// Distributed under the MIT software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#include <test/util/setup_common.h>
+#include <clientversion.h>
+#include <streams.h>
+#include <uint256.h>
+
+#include <boost/test/unit_test.hpp>
+
+BOOST_FIXTURE_TEST_SUITE(walletdb_tests, BasicTestingSetup)
+
+BOOST_AUTO_TEST_CASE(walletdb_readkeyvalue)
+{
+ /**
+ * When ReadKeyValue() reads from either a "key" or "wkey" it first reads the CDataStream steam into a
+ * CPrivKey or CWalletKey respectively and then reads a hash of the pubkey and privkey into a uint256.
+ * Wallets from 0.8 or before do not store the pubkey/privkey hash, trying to read the hash from old
+ * wallets throws an exception, for backwards compatibility this read is wrapped in a try block to
+ * silently fail. The test here makes sure the type of exception thrown from CDataStream::read()
+ * matches the type we expect, otherwise we need to update the "key"/"wkey" exception type caught.
+ */
+ CDataStream ssValue(SER_DISK, CLIENT_VERSION);
+ uint256 dummy;
+ BOOST_CHECK_THROW(ssValue >> dummy, std::ios_base::failure);
+}
+
+BOOST_AUTO_TEST_SUITE_END()