From 955e21717ac704873ffe152ff15121fd2a68ceae Mon Sep 17 00:00:00 2001 From: Jackson Mills Date: Fri, 24 Sep 2021 10:46:54 -0700 Subject: [PATCH] Add Path and Orderbook integration tests (#1644) Add bookOrder, depositAuthorized, and ripplePathFind, and pathFind integration and browser tests --- src/models/methods/bookOffers.ts | 1 + src/models/methods/ripplePathFind.ts | 6 +++ test/integration/index.ts | 4 ++ test/integration/requests/bookOffers.ts | 45 ++++++++++++++++ .../integration/requests/depositAuthorized.ts | 45 ++++++++++++++++ test/integration/requests/pathFind.ts | 48 +++++++++++++++++ test/integration/requests/ripplePathFind.ts | 51 +++++++++++++++++++ 7 files changed, 200 insertions(+) create mode 100644 test/integration/requests/bookOffers.ts create mode 100644 test/integration/requests/depositAuthorized.ts create mode 100644 test/integration/requests/pathFind.ts create mode 100644 test/integration/requests/ripplePathFind.ts diff --git a/src/models/methods/bookOffers.ts b/src/models/methods/bookOffers.ts index 1eb63cc1..11743610 100644 --- a/src/models/methods/bookOffers.ts +++ b/src/models/methods/bookOffers.ts @@ -31,5 +31,6 @@ export interface BookOffersResponse extends BaseResponse { ledger_index?: number ledger_hash?: string offers: BookOffer[] + validated?: boolean } } diff --git a/src/models/methods/ripplePathFind.ts b/src/models/methods/ripplePathFind.ts index fc218297..cc93c86d 100644 --- a/src/models/methods/ripplePathFind.ts +++ b/src/models/methods/ripplePathFind.ts @@ -28,5 +28,11 @@ export interface RipplePathFindResponse extends BaseResponse { alternatives: PathOption[] destination_account: string destination_currencies: string[] + destination_amount: Amount + full_reply?: boolean + id?: number | string + ledger_current_index?: number + source_account: string + validated: boolean } } diff --git a/test/integration/index.ts b/test/integration/index.ts index 5d210e35..2c1a3d40 100644 --- a/test/integration/index.ts +++ b/test/integration/index.ts @@ -16,6 +16,8 @@ export * from './requests/accountLines' export * from './requests/accountObjects' export * from './requests/accountOffers' export * from './requests/accountTx' +export * from './requests/bookOffers' +export * from './requests/depositAuthorized' export * from './requests/gatewayBalances' export * from './requests/ledger' export * from './requests/ledgerClosed' @@ -24,6 +26,8 @@ export * from './requests/ledgerData' export * from './requests/ledgerEntry' export * from './requests/multisign' export * from './requests/noRippleCheck' +export * from './requests/pathFind' +export * from './requests/ripplePathFind' export * from './requests/submit' export * from './requests/tx' export * from './requests/utility' diff --git a/test/integration/requests/bookOffers.ts b/test/integration/requests/bookOffers.ts new file mode 100644 index 00000000..7688ae6f --- /dev/null +++ b/test/integration/requests/bookOffers.ts @@ -0,0 +1,45 @@ +import { assert } from 'chai' +import _ from 'lodash' + +import { BookOffersRequest, BookOffersResponse } from 'xrpl-local' + +import serverUrl from '../serverUrl' +import { setupClient, suiteClientSetup, teardownClient } from '../setup' + +// how long before each test case times out +const TIMEOUT = 20000 + +describe('book_offers', function () { + this.timeout(TIMEOUT) + + before(suiteClientSetup) + beforeEach(_.partial(setupClient, serverUrl)) + afterEach(teardownClient) + + it('base', async function () { + const bookOffer: BookOffersRequest = { + command: 'book_offers', + taker_gets: { + currency: 'XRP', + }, + taker_pays: { + currency: 'USD', + issuer: this.wallet.getClassicAddress(), + }, + } + const response = await this.client.request(bookOffer) + + const expectedResponse: BookOffersResponse = { + id: response.id, + status: 'success', + type: 'response', + result: { + ledger_current_index: response.result.ledger_current_index, + offers: response.result.offers, + validated: false, + }, + } + + assert.deepEqual(response, expectedResponse) + }) +}) diff --git a/test/integration/requests/depositAuthorized.ts b/test/integration/requests/depositAuthorized.ts new file mode 100644 index 00000000..4ef2b403 --- /dev/null +++ b/test/integration/requests/depositAuthorized.ts @@ -0,0 +1,45 @@ +import { assert } from 'chai' +import _ from 'lodash' + +import { DepositAuthorizedRequest, DepositAuthorizedResponse } from 'xrpl-local' + +import serverUrl from '../serverUrl' +import { setupClient, suiteClientSetup, teardownClient } from '../setup' +import { generateFundedWallet } from '../utils' + +// how long before each test case times out +const TIMEOUT = 20000 + +describe('deposit_authorized', function () { + this.timeout(TIMEOUT) + + before(suiteClientSetup) + beforeEach(_.partial(setupClient, serverUrl)) + afterEach(teardownClient) + + it('base', async function () { + const wallet2 = await generateFundedWallet(this.client) + const depositAuthorized: DepositAuthorizedRequest = { + command: 'deposit_authorized', + source_account: this.wallet.getClassicAddress(), + destination_account: wallet2.getClassicAddress(), + } + + const response = await this.client.request(depositAuthorized) + + const expectedResponse: DepositAuthorizedResponse = { + id: response.id, + status: 'success', + type: 'response', + result: { + deposit_authorized: true, + destination_account: depositAuthorized.destination_account, + ledger_current_index: response.result.ledger_current_index, + source_account: depositAuthorized.source_account, + validated: false, + }, + } + + assert.deepEqual(response, expectedResponse) + }) +}) diff --git a/test/integration/requests/pathFind.ts b/test/integration/requests/pathFind.ts new file mode 100644 index 00000000..226c3a38 --- /dev/null +++ b/test/integration/requests/pathFind.ts @@ -0,0 +1,48 @@ +import { assert } from 'chai' +import _ from 'lodash' + +import { PathFindRequest, PathFindResponse } from 'xrpl-local' + +import serverUrl from '../serverUrl' +import { setupClient, suiteClientSetup, teardownClient } from '../setup' +import { generateFundedWallet } from '../utils' + +// how long before each test case times out +const TIMEOUT = 20000 + +describe('path_find', function () { + this.timeout(TIMEOUT) + + before(suiteClientSetup) + beforeEach(_.partial(setupClient, serverUrl)) + afterEach(teardownClient) + + it('base', async function () { + const wallet2 = await generateFundedWallet(this.client) + const pathFind: PathFindRequest = { + command: 'path_find', + subcommand: 'create', + source_account: this.wallet.getClassicAddress(), + destination_account: wallet2.getClassicAddress(), + destination_amount: '100', + } + + const response = await this.client.request(pathFind) + + const expectedResponse: PathFindResponse = { + id: response.id, + status: 'success', + type: 'response', + result: { + alternatives: response.result.alternatives, + destination_account: pathFind.destination_account, + destination_amount: pathFind.destination_amount, + source_account: pathFind.source_account, + full_reply: false, + id: response.id, + }, + } + + assert.deepEqual(response, expectedResponse) + }) +}) diff --git a/test/integration/requests/ripplePathFind.ts b/test/integration/requests/ripplePathFind.ts new file mode 100644 index 00000000..8be54ec0 --- /dev/null +++ b/test/integration/requests/ripplePathFind.ts @@ -0,0 +1,51 @@ +import { assert } from 'chai' +import _ from 'lodash' + +import { RipplePathFindRequest, RipplePathFindResponse } from 'xrpl-local' + +import serverUrl from '../serverUrl' +import { setupClient, suiteClientSetup, teardownClient } from '../setup' +import { generateFundedWallet } from '../utils' + +// how long before each test case times out +const TIMEOUT = 20000 + +describe('ripple_path_find', function () { + this.timeout(TIMEOUT) + + before(suiteClientSetup) + beforeEach(_.partial(setupClient, serverUrl)) + afterEach(teardownClient) + + it('base', async function () { + const wallet2 = await generateFundedWallet(this.client) + const ripplePathFind: RipplePathFindRequest = { + command: 'ripple_path_find', + subcommand: 'create', + source_account: this.wallet.getClassicAddress(), + destination_account: wallet2.getClassicAddress(), + destination_amount: '100', + } + + const response = await this.client.request(ripplePathFind) + + const expectedResponse: RipplePathFindResponse = { + id: response.id, + status: 'success', + type: 'response', + result: { + alternatives: response.result.alternatives, + destination_account: wallet2.getClassicAddress(), + destination_currencies: response.result.destination_currencies, + destination_amount: ripplePathFind.destination_amount, + full_reply: true, + id: response.id, + ledger_current_index: response.result.ledger_current_index, + source_account: ripplePathFind.source_account, + validated: false, + }, + } + + assert.deepEqual(response, expectedResponse) + }) +})