Files
xahau.js/packages/xrpl/test/integration/requests/tx.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

124 lines
3.2 KiB
TypeScript

import { assert } from 'chai'
import {
AccountSet,
hashes,
SubmitResponse,
TxRequest,
TxResponse,
TxV1Response,
} from '../../../src'
import { convertStringToHex } from '../../../src/utils'
import serverUrl from '../serverUrl'
import {
setupClient,
teardownClient,
type XrplIntegrationTestContext,
} from '../setup'
// how long before each test case times out
const TIMEOUT = 20000
const { hashSignedTx } = hashes
describe('tx', function () {
let testContext: XrplIntegrationTestContext
beforeEach(async () => {
testContext = await setupClient(serverUrl)
})
afterEach(async () => teardownClient(testContext))
it(
'base',
async () => {
const account = testContext.wallet.classicAddress
const accountSet: AccountSet = {
TransactionType: 'AccountSet',
Account: account,
Domain: convertStringToHex('example.com'),
}
const response: SubmitResponse = await testContext.client.submit(
accountSet,
{
wallet: testContext.wallet,
},
)
const hash = hashSignedTx(response.result.tx_blob)
const txResponse = await testContext.client.request({
command: 'tx',
transaction: hash,
})
const expectedResponse: TxResponse = {
api_version: 2,
id: txResponse.id,
type: 'response',
result: {
hash: hashSignedTx(response.result.tx_blob),
tx_json: {
...accountSet,
Fee: txResponse.result.tx_json.Fee,
Flags: 0,
LastLedgerSequence: txResponse.result.tx_json.LastLedgerSequence,
Sequence: txResponse.result.tx_json.Sequence,
SigningPubKey: testContext.wallet.publicKey,
TxnSignature: txResponse.result.tx_json.TxnSignature,
},
validated: false,
},
}
assert.deepEqual(txResponse, expectedResponse)
},
TIMEOUT,
)
it(
'uses api_version 1',
async () => {
const account = testContext.wallet.classicAddress
const accountSet: AccountSet = {
TransactionType: 'AccountSet',
Account: account,
Domain: convertStringToHex('example.com'),
}
const response: SubmitResponse = await testContext.client.submit(
accountSet,
{
wallet: testContext.wallet,
},
)
const hash = hashSignedTx(response.result.tx_blob)
const txV1Response = await testContext.client.request<TxRequest, 1>({
command: 'tx',
transaction: hash,
api_version: 1,
})
const expectedResponse: TxV1Response = {
api_version: 1,
id: txV1Response.id,
type: 'response',
result: {
...accountSet,
Fee: txV1Response.result.Fee,
Flags: 0,
LastLedgerSequence: txV1Response.result.LastLedgerSequence,
Sequence: txV1Response.result.Sequence,
SigningPubKey: testContext.wallet.publicKey,
TxnSignature: txV1Response.result.TxnSignature,
hash: hashSignedTx(response.result.tx_blob),
validated: false,
},
}
assert.deepEqual(txV1Response, expectedResponse)
},
TIMEOUT,
)
})