1 // Copyright (c) 2012-2020 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #include <test/util/setup_common.h>
6 #include <clientversion.h>
7 #include <streams.h>
8 #include <uint256.h>
9 
10 #include <boost/test/unit_test.hpp>
11 
BOOST_FIXTURE_TEST_SUITE(walletdb_tests,BasicTestingSetup)12 BOOST_FIXTURE_TEST_SUITE(walletdb_tests, BasicTestingSetup)
13 
14 BOOST_AUTO_TEST_CASE(walletdb_readkeyvalue)
15 {
16     /**
17      * When ReadKeyValue() reads from either a "key" or "wkey" it first reads the CDataStream steam into a
18      * CPrivKey or CWalletKey respectively and then reads a hash of the pubkey and privkey into a uint256.
19      * Wallets from 0.8 or before do not store the pubkey/privkey hash, trying to read the hash from old
20      * wallets throws an exception, for backwards compatibility this read is wrapped in a try block to
21      * silently fail. The test here makes sure the type of exception thrown from CDataStream::read()
22      * matches the type we expect, otherwise we need to update the "key"/"wkey" exception type caught.
23      */
24     CDataStream ssValue(SER_DISK, CLIENT_VERSION);
25     uint256 dummy;
26     BOOST_CHECK_THROW(ssValue >> dummy, std::ios_base::failure);
27 }
28 
29 BOOST_AUTO_TEST_SUITE_END()
30