mirror of
https://github.com/Xahau/xahau.js.git
synced 2026-04-29 15:37:50 +00:00
* To simplify submit transaction requests by having only one version of them that supports both signed/unsigned transactions, the signed versions of them (submitSigned(), submitSignedReliable()) are deleted. * Their signed logic is merged into submit() and submitAndWait() (renamed from submitReliable()). * Change order of submit method params to be consistent. * Add a SubmitOptions method param to include options for wallet to sign a transaction, and booleans to autofill/failHard a transaction.
75 lines
2.2 KiB
TypeScript
75 lines
2.2 KiB
TypeScript
import assert from 'assert'
|
|
|
|
import _ from 'lodash'
|
|
|
|
import { Client } from 'xrpl-local'
|
|
import { AccountSet, SignerListSet } from 'xrpl-local/models/transactions'
|
|
import { convertStringToHex } from 'xrpl-local/utils'
|
|
import { multisign } from 'xrpl-local/wallet/signer'
|
|
|
|
import serverUrl from './serverUrl'
|
|
import { setupClient, teardownClient } from './setup'
|
|
import {
|
|
generateFundedWallet,
|
|
ledgerAccept,
|
|
testTransaction,
|
|
verifySubmittedTransaction,
|
|
} from './utils'
|
|
|
|
// how long before each test case times out
|
|
const TIMEOUT = 20000
|
|
|
|
describe('integration tests', function () {
|
|
this.timeout(TIMEOUT)
|
|
|
|
beforeEach(_.partial(setupClient, serverUrl))
|
|
afterEach(teardownClient)
|
|
|
|
it('isConnected', function () {
|
|
assert(this.client.isConnected())
|
|
})
|
|
|
|
it('submit multisigned transaction', async function () {
|
|
const client: Client = this.client
|
|
const signerWallet1 = await generateFundedWallet(client)
|
|
const signerWallet2 = await generateFundedWallet(client)
|
|
|
|
// set up the multisigners for the account
|
|
const signerListSet: SignerListSet = {
|
|
TransactionType: 'SignerListSet',
|
|
Account: this.wallet.classicAddress,
|
|
SignerEntries: [
|
|
{
|
|
SignerEntry: {
|
|
Account: signerWallet1.classicAddress,
|
|
SignerWeight: 1,
|
|
},
|
|
},
|
|
{
|
|
SignerEntry: {
|
|
Account: signerWallet2.classicAddress,
|
|
SignerWeight: 1,
|
|
},
|
|
},
|
|
],
|
|
SignerQuorum: 2,
|
|
}
|
|
await testTransaction(this.client, signerListSet, this.wallet)
|
|
|
|
// try to multisign
|
|
const accountSet: AccountSet = {
|
|
TransactionType: 'AccountSet',
|
|
Account: this.wallet.classicAddress,
|
|
Domain: convertStringToHex('example.com'),
|
|
}
|
|
const accountSetTx = await client.autofill(accountSet, 2)
|
|
const { tx_blob: tx_blob1 } = signerWallet1.sign(accountSetTx, true)
|
|
const { tx_blob: tx_blob2 } = signerWallet2.sign(accountSetTx, true)
|
|
const multisignedTx = multisign([tx_blob1, tx_blob2])
|
|
const submitResponse = await client.submit(multisignedTx)
|
|
await ledgerAccept(client)
|
|
assert.strictEqual(submitResponse.result.engine_result, 'tesSUCCESS')
|
|
await verifySubmittedTransaction(this.client, multisignedTx)
|
|
})
|
|
})
|