Line data Source code
1 : // Copyright (c) 2021 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 <wallet/test/util.h> 6 : 7 : #include <chain.h> 8 : #include <key.h> 9 : #include <key_io.h> 10 : #include <test/util/setup_common.h> 11 : #include <wallet/wallet.h> 12 : #include <wallet/walletdb.h> 13 : 14 : #include <boost/test/unit_test.hpp> 15 : 16 : #include <memory> 17 : 18 : namespace wallet { 19 4 : std::unique_ptr<CWallet> CreateSyncedWallet(interfaces::Chain& chain, interfaces::CoinJoin::Loader& coinjoin_loader, CChain& cchain, ArgsManager& args, const CKey& key) 20 : { 21 4 : auto wallet = std::make_unique<CWallet>(&chain, &coinjoin_loader, "", args, CreateMockWalletDatabase()); 22 : { 23 4 : LOCK(wallet->cs_wallet); 24 4 : wallet->SetLastBlockProcessed(cchain.Height(), cchain.Tip()->GetBlockHash()); 25 4 : } 26 4 : wallet->LoadWallet(); 27 : { 28 4 : LOCK(wallet->cs_wallet); 29 4 : wallet->SetWalletFlag(WALLET_FLAG_DESCRIPTORS); 30 4 : wallet->SetupDescriptorScriptPubKeyMans("", ""); 31 : 32 4 : FlatSigningProvider provider; 33 4 : std::string error; 34 4 : std::unique_ptr<Descriptor> desc = Parse("combo(" + EncodeSecret(key) + ")", provider, error, /* require_checksum=*/ false); 35 4 : assert(desc); 36 4 : WalletDescriptor w_desc(std::move(desc), 0, 0, 1, 1); 37 4 : if (!wallet->AddWalletDescriptor(w_desc, provider, "", false)) assert(false); 38 4 : } 39 4 : WalletRescanReserver reserver(*wallet); 40 4 : reserver.reserve(); 41 4 : CWallet::ScanResult result = wallet->ScanForWalletTransactions(cchain.Genesis()->GetBlockHash(), /*start_height=*/0, /*max_height=*/{}, reserver, /*fUpdate=*/false, /*save_progress=*/false); 42 4 : BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::SUCCESS); 43 4 : BOOST_CHECK_EQUAL(result.last_scanned_block, cchain.Tip()->GetBlockHash()); 44 4 : BOOST_CHECK_EQUAL(*result.last_scanned_height, cchain.Height()); 45 4 : BOOST_CHECK(result.last_failed_block.IsNull()); 46 4 : return wallet; 47 4 : } 48 : } // namespace wallet