Bitcoin Core 32.99.0
P2P Digital Currency
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>
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
15namespace wallet {
16
17BOOST_FIXTURE_TEST_SUITE(wallet_interfaces_tests, BasicTestingSetup)
18
20{
22 context.args = &m_args;
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
31BOOST_AUTO_TEST_CASE(addhdkey_with_key)
32{
34 context.args = &m_args;
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());
46}
47
48BOOST_AUTO_TEST_CASE(addhdkey_with_malformed_key)
49{
51 context.args = &m_args;
53 auto interface = interfaces::MakeWallet(context, wallet);
54
55 CExtKey key;
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
65BOOST_AUTO_TEST_CASE(addhdkey_wallet_locked)
66{
68 context.args = &m_args;
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
80
81} // namespace wallet
An encapsulated private key.
Definition: key.h:40
BOOST_FIXTURE_TEST_SUITE(cuckoocache_tests, BasicTestingSetup)
Test Suite for CuckooCache.
BOOST_AUTO_TEST_SUITE_END()
BOOST_CHECK_EQUAL(headers.FindFirst("key"), "value")
CKey GenerateRandomKey(bool compressed) noexcept
Definition: key.cpp:354
std::string EncodeExtPubKey(const CExtPubKey &key)
Definition: key_io.cpp:258
std::unique_ptr< Wallet > MakeWallet(wallet::WalletContext &context, const std::shared_ptr< wallet::CWallet > &wallet)
Return implementation of Wallet interface.
Definition: interfaces.cpp:688
@ UnlockNeeded
The wallet is locked and the operation requires access to private keys.
@ GenericError
Generic wallet error.
BOOST_AUTO_TEST_CASE(bnb_test)
RPCMethod addhdkey()
Definition: wallet.cpp:839
std::shared_ptr< CWallet > TestCreateWallet(std::unique_ptr< WalletDatabase > database, WalletContext &context, uint64_t create_flags)
Definition: util.cpp:52
#define BOOST_CHECK(expr)
Definition: object.cpp:16
Basic testing setup.
Definition: setup_common.h:58
Definition: key.h:232
CExtPubKey Neuter() const
Definition: key.cpp:394
unsigned int nChild
Definition: key.h:235
void SetSeed(std::span< const std::byte > seed)
Definition: key.cpp:381
WalletContext struct containing references to state shared between CWallet instances,...
Definition: context.h:36
ArgsManager * args
Definition: context.h:39
WalletContext context