mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-19 19:55:51 +00:00
* 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
108 lines
2.9 KiB
TypeScript
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,
|
|
)
|
|
})
|