LCOV - code coverage report
Current view: top level - src/wallet/test - scriptpubkeyman_tests.cpp (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 19 19 100.0 %
Date: 2020-09-26 01:30:44 Functions: 9 9 100.0 %

          Line data    Source code
       1             : // Copyright (c) 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 <key.h>
       6             : #include <script/standard.h>
       7             : #include <test/util/setup_common.h>
       8             : #include <wallet/scriptpubkeyman.h>
       9             : #include <wallet/wallet.h>
      10             : 
      11             : #include <boost/test/unit_test.hpp>
      12             : 
      13          89 : BOOST_FIXTURE_TEST_SUITE(scriptpubkeyman_tests, BasicTestingSetup)
      14             : 
      15             : // Test LegacyScriptPubKeyMan::CanProvide behavior, making sure it returns true
      16             : // for recognized scripts even when keys may not be available for signing.
      17          95 : BOOST_AUTO_TEST_CASE(CanProvide)
      18             : {
      19             :     // Set up wallet and keyman variables.
      20           1 :     NodeContext node;
      21           1 :     std::unique_ptr<interfaces::Chain> chain = interfaces::MakeChain(node);
      22           1 :     CWallet wallet(chain.get(), "", CreateDummyWalletDatabase());
      23           1 :     LegacyScriptPubKeyMan& keyman = *wallet.GetOrCreateLegacyScriptPubKeyMan();
      24             : 
      25             :     // Make a 1 of 2 multisig script
      26           1 :     std::vector<CKey> keys(2);
      27           1 :     std::vector<CPubKey> pubkeys;
      28           3 :     for (CKey& key : keys) {
      29           2 :         key.MakeNewKey(true);
      30           2 :         pubkeys.emplace_back(key.GetPubKey());
      31             :     }
      32           1 :     CScript multisig_script = GetScriptForMultisig(1, pubkeys);
      33           1 :     CScript p2sh_script = GetScriptForDestination(ScriptHash(multisig_script));
      34           1 :     SignatureData data;
      35             : 
      36             :     // Verify the p2sh(multisig) script is not recognized until the multisig
      37             :     // script is added to the keystore to make it solvable
      38           1 :     BOOST_CHECK(!keyman.CanProvide(p2sh_script, data));
      39           1 :     keyman.AddCScript(multisig_script);
      40           1 :     BOOST_CHECK(keyman.CanProvide(p2sh_script, data));
      41           1 : }
      42             : 
      43          89 : BOOST_AUTO_TEST_SUITE_END()

Generated by: LCOV version 1.15