Skip to content

Commit 7486e27

Browse files
committed
Tests: Unit test related to WalletDB ReadKeyValue
1 parent 32def8d commit 7486e27

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/Makefile.test.include

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ BITCOIN_TESTS += \
217217
wallet/test/db_tests.cpp \
218218
wallet/test/psbt_wallet_tests.cpp \
219219
wallet/test/wallet_tests.cpp \
220+
wallet/test/walletdb_tests.cpp \
220221
wallet/test/wallet_crypto_tests.cpp \
221222
wallet/test/coinselector_tests.cpp \
222223
wallet/test/init_tests.cpp \

src/wallet/test/walletdb_tests.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Copyright (c) 2012-2019 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+
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()

0 commit comments

Comments
 (0)