| 17 | |
| 18 | namespace wallet { |
| 19 | std::unique_ptr<CWallet> CreateSyncedWallet(interfaces::Chain& chain, CChain& cchain, ArgsManager& args, const CKey& key) |
| 20 | { |
| 21 | auto wallet = std::make_unique<CWallet>(&chain, "", args, CreateMockWalletDatabase()); |
| 22 | { |
| 23 | LOCK2(wallet->cs_wallet, ::cs_main); |
| 24 | wallet->SetLastBlockProcessed(cchain.Height(), cchain.Tip()->GetBlockHash()); |
| 25 | } |
| 26 | wallet->LoadWallet(); |
| 27 | { |
| 28 | LOCK(wallet->cs_wallet); |
| 29 | wallet->SetWalletFlag(WALLET_FLAG_DESCRIPTORS); |
| 30 | wallet->SetupDescriptorScriptPubKeyMans(); |
| 31 | |
| 32 | FlatSigningProvider provider; |
| 33 | std::string error; |
| 34 | std::unique_ptr<Descriptor> desc = Parse("combo(" + EncodeSecret(key) + ")", provider, error, /* require_checksum=*/ false); |
| 35 | assert(desc); |
| 36 | WalletDescriptor w_desc(std::move(desc), 0, 0, 1, 1); |
| 37 | if (!wallet->AddWalletDescriptor(w_desc, provider, "", false)) assert(false); |
| 38 | } |
| 39 | WalletRescanReserver reserver(*wallet); |
| 40 | reserver.reserve(); |
| 41 | CWallet::ScanResult result = wallet->ScanForWalletTransactions(cchain.Genesis()->GetBlockHash(), 0 /* start_height */, {} /* max_height */, reserver, false /* update */); |
| 42 | BOOST_CHECK_EQUAL(result.status, CWallet::ScanResult::SUCCESS); |
| 43 | BOOST_CHECK_EQUAL(result.last_scanned_block, cchain.Tip()->GetBlockHash()); |
| 44 | BOOST_CHECK_EQUAL(*result.last_scanned_height, cchain.Height()); |
| 45 | BOOST_CHECK(result.last_failed_block.IsNull()); |
| 46 | return wallet; |
| 47 | } |
| 48 | } // namespace wallet |
no test coverage detected