Bitcoin Core
32.99.0
P2P Digital Currency
src
wallet
test
wallet_interfaces_tests.cpp
Go to the documentation of this file.
1
// Copyright (c) 2026-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or https://www.opensource.org/licenses/mit-license.php.
4
5
#include <
interfaces/wallet.h
>
6
#include <
key_io.h
>
7
#include <
test/util/setup_common.h
>
8
#include <
wallet/context.h
>
9
#include <
wallet/test/util.h
>
10
#include <
wallet/wallet.h
>
11
12
#include <boost/test/unit_test.hpp>
13
#include <optional>
14
15
namespace
wallet
{
16
17
BOOST_FIXTURE_TEST_SUITE
(wallet_interfaces_tests,
BasicTestingSetup
)
18
19
BOOST_AUTO_TEST_CASE
(
addhdkey
)
20
{
21
WalletContext
context
;
22
context
.
args
= &m_args;
23
auto
wallet
=
TestCreateWallet
(
context
);
24
auto
interface
=
interfaces::MakeWallet
(
context
,
wallet
);
25
26
auto
result = interface->addHDKey(std::nullopt);
27
BOOST_REQUIRE(result);
28
BOOST_CHECK
(result->pubkey.IsValid());
29
}
30
31
BOOST_AUTO_TEST_CASE
(addhdkey_with_key)
32
{
33
WalletContext
context
;
34
context
.
args
= &m_args;
35
auto
wallet
=
TestCreateWallet
(
context
);
36
auto
interface
=
interfaces::MakeWallet
(
context
,
wallet
);
37
38
CKey
seed_key =
GenerateRandomKey
();
39
CExtKey
key;
40
key.
SetSeed
(seed_key);
41
42
auto
result = interface->addHDKey(key);
43
BOOST_REQUIRE(result);
44
BOOST_CHECK
(result->pubkey.IsValid());
45
BOOST_CHECK_EQUAL
(
EncodeExtPubKey
(*result),
EncodeExtPubKey
(key.
Neuter
()));
46
}
47
48
BOOST_AUTO_TEST_CASE
(addhdkey_with_malformed_key)
49
{
50
WalletContext
context
;
51
context
.
args
= &m_args;
52
auto
wallet
=
TestCreateWallet
(
context
);
53
auto
interface
=
interfaces::MakeWallet
(
context
,
wallet
);
54
55
CExtKey
key;
56
key.
SetSeed
(
GenerateRandomKey
());
57
key.
nChild
= 1;
58
59
auto
result = interface->addHDKey(key);
60
BOOST_REQUIRE(!result);
61
BOOST_CHECK
(result.error().code ==
WalletErrorCode::GenericError
);
62
BOOST_CHECK_EQUAL
(result.error().message.original,
"Invalid HD key"
);
63
}
64
65
BOOST_AUTO_TEST_CASE
(addhdkey_wallet_locked)
66
{
67
WalletContext
context
;
68
context
.
args
= &m_args;
69
auto
wallet
=
TestCreateWallet
(
context
);
70
BOOST_REQUIRE(
wallet
->EncryptWallet(
"hunter2"
));
71
BOOST_REQUIRE(
wallet
->Lock());
72
73
auto
interface
=
interfaces::MakeWallet
(
context
,
wallet
);
74
auto
result = interface->addHDKey(std::nullopt);
75
BOOST_REQUIRE(!result);
76
BOOST_CHECK
(result.error().code ==
WalletErrorCode::UnlockNeeded
);
77
}
78
79
BOOST_AUTO_TEST_SUITE_END
()
80
81
}
// namespace wallet
CKey
An encapsulated private key.
Definition:
key.h:40
BOOST_FIXTURE_TEST_SUITE
BOOST_FIXTURE_TEST_SUITE(cuckoocache_tests, BasicTestingSetup)
Test Suite for CuckooCache.
BOOST_AUTO_TEST_SUITE_END
BOOST_AUTO_TEST_SUITE_END()
BOOST_CHECK_EQUAL
BOOST_CHECK_EQUAL(headers.FindFirst("key"), "value")
wallet.h
GenerateRandomKey
CKey GenerateRandomKey(bool compressed) noexcept
Definition:
key.cpp:354
EncodeExtPubKey
std::string EncodeExtPubKey(const CExtPubKey &key)
Definition:
key_io.cpp:258
key_io.h
interfaces::MakeWallet
std::unique_ptr< Wallet > MakeWallet(wallet::WalletContext &context, const std::shared_ptr< wallet::CWallet > &wallet)
Return implementation of Wallet interface.
Definition:
interfaces.cpp:688
wallet
Definition:
coin_selection.cpp:31
wallet::WalletErrorCode::UnlockNeeded
@ UnlockNeeded
The wallet is locked and the operation requires access to private keys.
wallet::WalletErrorCode::GenericError
@ GenericError
Generic wallet error.
wallet::BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(bnb_test)
Definition:
coinselection_tests.cpp:141
wallet::addhdkey
RPCMethod addhdkey()
Definition:
wallet.cpp:839
wallet::TestCreateWallet
std::shared_ptr< CWallet > TestCreateWallet(std::unique_ptr< WalletDatabase > database, WalletContext &context, uint64_t create_flags)
Definition:
util.cpp:52
BOOST_CHECK
#define BOOST_CHECK(expr)
Definition:
object.cpp:16
setup_common.h
BasicTestingSetup
Basic testing setup.
Definition:
setup_common.h:58
CExtKey
Definition:
key.h:232
CExtKey::Neuter
CExtPubKey Neuter() const
Definition:
key.cpp:394
CExtKey::nChild
unsigned int nChild
Definition:
key.h:235
CExtKey::SetSeed
void SetSeed(std::span< const std::byte > seed)
Definition:
key.cpp:381
wallet::WalletContext
WalletContext struct containing references to state shared between CWallet instances,...
Definition:
context.h:36
wallet::WalletContext::args
ArgsManager * args
Definition:
context.h:39
context.h
util.h
wallet.h
context
WalletContext context
Definition:
wallet_tests.cpp:136
Generated on Tue Sep 22 2026 20:00:41 for Bitcoin Core by
1.9.4