Files
xahau.js/packages/xrpl/test/integration/transactions/escrowCancel.test.ts
Omar Khan 8e2aba3b78 feat: add rippled API v2 support and use as default (#2656)
* add apiVersion support to requests and AccountInfoResponse v1/v2 types

* fix submitAndWait signature

* update docker container README

* update tests

* fix apiVersion param in wrong position of Client.request

* add integ tests

* update HISTORY.md

* fix request.api_version

* update RIPPLED_DOCKER_IMAGE to use v2.1.0

* refactor Client.request signature

* update rippled docker image

* fix Client.requestAll

* update rippled docker image to use v2.1.1

* update README

* use import type

* fix faucet; unrelated to PR

* add api_version v2 support and set as default while providing support for v1

* refactor: add apiVersion to Client

* resolve errors

* use DeliverMax for isPartialPayment check

* update fixtures

* resolve lint errors

* add API v1 support for isPartialPayment

* update CONTRIBUTING

* update accountTx JSDoc

* revert deleted JSDoc comments in accountTx

* update JSDoc for account_info response

* only use client.apiVersion in Client.request()

* add ledger_hash

* remove API v1 comment from v2 model

* update meta_blob JSDoc

* delete second AccountTxRequest matching

* add close_time_iso

* set close_time_iso as optional field

* add meta_blob to BaseResponse

* Revert "add meta_blob to BaseResponse"

This reverts commit 89794c629dc515915e28752d7c2552bfeab266a3.

* use DEFAULT_API_VERSION throughout call stack

* improve JSDoc explanation of ledger_index

* remove this.apiVersion from getLedgerIndex

* refactor Client.request()

* refactor RequestManger.resolve()

* add TODO to fix TxResponse type assertion

* use @category ResponsesV1 for API v1 types

* refactor accountTxHasPartialPayment()

* remove TODO
2024-06-28 08:26:21 -04:00

108 lines
2.9 KiB
TypeScript

import { assert } from 'chai'
import { EscrowCancel, EscrowCreate } from '../../../src'
import serverUrl from '../serverUrl'
import {
setupClient,
teardownClient,
type XrplIntegrationTestContext,
} from '../setup'
import {
waitForAndForceProgressLedgerTime,
generateFundedWallet,
getXRPBalance,
testTransaction,
sendLedgerAccept,
} from '../utils'
// how long before each test case times out
const TIMEOUT = 50000
describe('EscrowCancel', function () {
let testContext: XrplIntegrationTestContext
beforeEach(async () => {
testContext = await setupClient(serverUrl)
})
afterEach(async () => teardownClient(testContext))
it(
'base',
async () => {
// Funding the wallet can take some time, so we do it first BEFORE getting the ledger close_time.
const wallet1 = await generateFundedWallet(testContext.client)
// get the most recent close_time from the standalone container for cancel & finish after.
const CLOSE_TIME: number = (
await testContext.client.request({
command: 'ledger',
ledger_index: 'validated',
})
).result.ledger.close_time
const createTx: EscrowCreate = {
Account: testContext.wallet.classicAddress,
TransactionType: 'EscrowCreate',
Amount: '10000',
Destination: wallet1.classicAddress,
CancelAfter: CLOSE_TIME + 3,
FinishAfter: CLOSE_TIME + 2,
}
await testTransaction(testContext.client, createTx, testContext.wallet)
const initialBalanceWallet1 = await getXRPBalance(
testContext.client,
wallet1,
)
// check that the object was actually created
const accountObjects = (
await testContext.client.request({
command: 'account_objects',
account: testContext.wallet.classicAddress,
})
).result.account_objects
assert.equal(accountObjects.length, 1)
const sequence = (
await testContext.client.request({
command: 'tx',
transaction: accountObjects[0].PreviousTxnID,
})
).result.tx_json.Sequence
if (!sequence) {
throw new Error('sequence did not exist')
}
const cancelTx: EscrowCancel = {
TransactionType: 'EscrowCancel',
Account: testContext.wallet.classicAddress,
Owner: testContext.wallet.classicAddress,
OfferSequence: sequence,
}
await waitForAndForceProgressLedgerTime(
testContext.client,
CLOSE_TIME + 3,
)
// rippled uses the close time of the previous ledger
await sendLedgerAccept(testContext.client)
await testTransaction(testContext.client, cancelTx, testContext.wallet, {
count: 20,
delayMs: 2000,
})
// Make sure the Destination wallet did not receive any XRP.
assert.equal(
await getXRPBalance(testContext.client, wallet1),
initialBalanceWallet1,
)
},
TIMEOUT,
)
})