mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-06-07 21:50:12 +02:00
This removes a source of complexity and indirection that makes it harder to understand path checking code. Path checks will be simplified in upcoming commits. There is no change in behavior in this commit other than a slightly more descriptive error message in `loadwallet` if the default "" wallet can't be found. (The error message is improved more in upcoming commit "wallet: Remove path checking code from loadwallet RPC".)
44 lines
1.6 KiB
C++
44 lines
1.6 KiB
C++
// Copyright (c) 2020 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 <key.h>
|
|
#include <script/standard.h>
|
|
#include <test/util/setup_common.h>
|
|
#include <wallet/scriptpubkeyman.h>
|
|
#include <wallet/wallet.h>
|
|
|
|
#include <boost/test/unit_test.hpp>
|
|
|
|
BOOST_FIXTURE_TEST_SUITE(scriptpubkeyman_tests, BasicTestingSetup)
|
|
|
|
// Test LegacyScriptPubKeyMan::CanProvide behavior, making sure it returns true
|
|
// for recognized scripts even when keys may not be available for signing.
|
|
BOOST_AUTO_TEST_CASE(CanProvide)
|
|
{
|
|
// Set up wallet and keyman variables.
|
|
NodeContext node;
|
|
std::unique_ptr<interfaces::Chain> chain = interfaces::MakeChain(node);
|
|
CWallet wallet(chain.get(), "", CreateDummyWalletDatabase());
|
|
LegacyScriptPubKeyMan& keyman = *wallet.GetOrCreateLegacyScriptPubKeyMan();
|
|
|
|
// Make a 1 of 2 multisig script
|
|
std::vector<CKey> keys(2);
|
|
std::vector<CPubKey> pubkeys;
|
|
for (CKey& key : keys) {
|
|
key.MakeNewKey(true);
|
|
pubkeys.emplace_back(key.GetPubKey());
|
|
}
|
|
CScript multisig_script = GetScriptForMultisig(1, pubkeys);
|
|
CScript p2sh_script = GetScriptForDestination(ScriptHash(multisig_script));
|
|
SignatureData data;
|
|
|
|
// Verify the p2sh(multisig) script is not recognized until the multisig
|
|
// script is added to the keystore to make it solvable
|
|
BOOST_CHECK(!keyman.CanProvide(p2sh_script, data));
|
|
keyman.AddCScript(multisig_script);
|
|
BOOST_CHECK(keyman.CanProvide(p2sh_script, data));
|
|
}
|
|
|
|
BOOST_AUTO_TEST_SUITE_END()
|