diff --git a/impls/monero.ts/src/wallet.ts b/impls/monero.ts/src/wallet.ts index 92832da..fc53c12 100644 --- a/impls/monero.ts/src/wallet.ts +++ b/impls/monero.ts/src/wallet.ts @@ -111,6 +111,10 @@ export class Wallet { ); } + async setRefreshFromBlockHeight(height = 0n): Promise { + return await fns.Wallet_setRefreshFromBlockHeight(this.#ptr, height); + } + async balance(accountIndex = 0): Promise { return await fns.Wallet_balance(this.#ptr, accountIndex); } diff --git a/tests/integration.test.ts b/tests/integration.test.ts index 2570874..eb478f7 100644 --- a/tests/integration.test.ts +++ b/tests/integration.test.ts @@ -238,11 +238,12 @@ Deno.test("0001-polyseed.patch", async (t) => { } }); -Deno.test("0002-wallet-background-sync-with-just-the-view-key.patch", async () => { +Deno.test("0002-wallet-background-sync-with-just-the-view-key.patch (close)", async () => { await clearWallets(); const walletManager = await WalletManager.new(); const wallet = await walletManager.createWallet("tests/wallets/squirrel", "belka"); + await wallet.setRefreshFromBlockHeight(3310000n); await wallet.init({ address: NODE_URL, }); @@ -289,6 +290,51 @@ Deno.test("0002-wallet-background-sync-with-just-the-view-key.patch", async () = await reopenedWallet.close(true); }); +Deno.test("0002-wallet-background-sync-with-just-the-view-key.patch (stopBackgroundSync)", async () => { + await clearWallets(); + + const walletManager = await WalletManager.new(); + const wallet = await walletManager.createWallet("tests/wallets/squirrel", "belka"); + await wallet.setRefreshFromBlockHeight(3310000n); + await wallet.init({ + address: NODE_URL, + }); + + + const walletInfo = { + address: await wallet.address(), + publicSpendKey: await wallet.publicSpendKey(), + secretSpendKey: await wallet.secretSpendKey(), + publicViewKey: await wallet.publicViewKey(), + secretViewKey: await wallet.secretViewKey(), + }; + + await wallet.setupBackgroundSync(2, "belka", "background-belka"); + await wallet.startBackgroundSync(); + + + await wallet.init({ address: NODE_URL }); + await wallet.refreshAsync(); + + const blockChainHeight = await syncBlockchain(wallet); + + await wallet.stopBackgroundSync("belka"); + + assertEquals(await wallet.blockChainHeight(), blockChainHeight); + assertEquals( + walletInfo, + { + address: await wallet.address(), + publicSpendKey: await wallet.publicSpendKey(), + secretSpendKey: await wallet.secretSpendKey(), + publicViewKey: await wallet.publicViewKey(), + secretViewKey: await wallet.secretViewKey(), + }, + ); + + await wallet.close(true); +}); + Deno.test("0004-coin-control.patch", { ignore: coin === "wownero" || !( Deno.env.get("SECRET_WALLET_PASSWORD") &&