import assert from 'assert' import { Client, isValidClassicAddress, isValidXAddress, dropsToXrp, } from '../../src' async function generate_faucet_wallet_and_fund_again( client: string, faucetHost: string | undefined = undefined, faucetPath: string | undefined = undefined, ): Promise { const api = new Client(client) await api.connect() const { wallet, balance } = await api.fundWallet(null, { faucetHost, faucetPath, }) assert.notEqual(wallet, undefined) assert(isValidClassicAddress(wallet.classicAddress)) assert(isValidXAddress(wallet.getXAddress())) const info = await api.request({ command: 'account_info', account: wallet.classicAddress, }) assert.equal(dropsToXrp(info.result.account_data.Balance), balance) const { balance: newBalance } = await api.fundWallet(wallet, { faucetHost, faucetPath, }) const afterSent = await api.request({ command: 'account_info', account: wallet.classicAddress, }) assert.equal(dropsToXrp(afterSent.result.account_data.Balance), newBalance) assert(newBalance > balance) await api.disconnect() } // how long before each test case times out const TIMEOUT = 60000 // This test is reliant on external networks, and as such may be flaky. describe('fundWallet', function () { it( 'submit generates a testnet wallet', async function () { await generate_faucet_wallet_and_fund_again( 'wss://s.altnet.rippletest.net:51233', ) }, TIMEOUT, ) it( 'submit generates a devnet wallet', async function () { await generate_faucet_wallet_and_fund_again( 'wss://s.devnet.rippletest.net:51233', ) }, TIMEOUT, ) // TODO: Investigate why this test is timing out on the browser // it('can generate and fund wallets using a custom host and path', async function () { // await generate_faucet_wallet_and_fund_again( // 'wss://s.devnet.rippletest.net:51233/', // 'faucet.devnet.rippletest.net', // '/accounts', // ) // }) it( 'can generate and fund wallets on AMM devnet', async function () { await generate_faucet_wallet_and_fund_again( 'wss://amm.devnet.rippletest.net:51233', ) }, TIMEOUT, ) it( 'can generate wallet on hooks v2 testnet', async function () { const api = new Client('wss://hooks-testnet-v2.xrpl-labs.com') await api.connect() const { wallet, balance } = await api.fundWallet() assert.notEqual(wallet, undefined) assert(isValidClassicAddress(wallet.classicAddress)) assert(isValidXAddress(wallet.getXAddress())) const info = await api.request({ command: 'account_info', account: wallet.classicAddress, }) assert.equal(dropsToXrp(info.result.account_data.Balance), balance) assert.equal(balance, 10000) /* * No test for fund given wallet because the hooks v2 testnet faucet * requires 10 seconds between requests. Would significantly slow down * the test suite. */ await api.disconnect() }, TIMEOUT, ) it( 'submit funds wallet with custom amount', async function () { const api = new Client('wss://s.altnet.rippletest.net:51233') await api.connect() const { wallet, balance } = await api.fundWallet(null, { amount: '2000' }) assert.equal(balance, '2000') assert.notEqual(wallet, undefined) assert(isValidClassicAddress(wallet.classicAddress)) assert(isValidXAddress(wallet.getXAddress())) const info = await api.request({ command: 'account_info', account: wallet.classicAddress, }) assert.equal(dropsToXrp(info.result.account_data.Balance), balance) await api.disconnect() }, TIMEOUT, ) })