diff --git a/src/broadcast.ts b/src/broadcast.ts index 5de66fd2..23872cc2 100644 --- a/src/broadcast.ts +++ b/src/broadcast.ts @@ -1,13 +1,13 @@ import * as _ from 'lodash' -import {RippleAPI} from './api' +import {RippleAPI, APIOptions} from './api' class RippleAPIBroadcast extends RippleAPI { ledgerVersion: number | undefined = undefined private _apis: RippleAPI[] - constructor(servers, options) { + constructor(servers, options: APIOptions = {}) { super(options) const apis: RippleAPI[] = servers.map(server => new RippleAPI( diff --git a/test/api-test.ts b/test/api-test.ts index 2c6a9f0f..6917aa52 100644 --- a/test/api-test.ts +++ b/test/api-test.ts @@ -4,9 +4,10 @@ import _ from 'lodash'; import { RippleAPI } from 'ripple-api'; import { RecursiveData } from 'ripple-api/ledger/utils'; import binary from 'ripple-binary-codec'; -import { requests, responses } from './fixtures'; -import addresses from './fixtures/addresses'; -import hashes from './fixtures/hashes'; +import requests from './fixtures/requests'; +import responses from './fixtures/responses'; +import addresses from './fixtures/addresses.json'; +import hashes from './fixtures/hashes.json'; import ledgerClosed from './fixtures/rippled/ledger-close-newer.json'; import setupAPI from './setup-api'; const {validate, schemaValidator} = RippleAPI._PRIVATE; @@ -4609,7 +4610,7 @@ describe('RippleAPI', function () { }); } return utils.getRecursive(getter, 10).then(() => { - assert(false, 'Should th row Error'); + assert(false, 'Should throw Error'); }).catch(error => { assert(error instanceof Error); }); diff --git a/test/broadcast-api-test.ts b/test/broadcast-api-test.ts index 36efb573..a84c4ecf 100644 --- a/test/broadcast-api-test.ts +++ b/test/broadcast-api-test.ts @@ -1,7 +1,7 @@ import _ from 'lodash'; import assert from 'assert-diff'; import setupAPI from './setup-api'; -import {responses} from './fixtures'; +import responses from './fixtures/responses'; import ledgerClosed from './fixtures/rippled/ledger-close.json'; import {RippleAPI} from 'ripple-api'; const schemaValidator = RippleAPI._PRIVATE.schemaValidator; diff --git a/test/fixtures/addresses.js b/test/fixtures/addresses.js deleted file mode 100644 index cf5a0f8f..00000000 --- a/test/fixtures/addresses.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; -module.exports = { - ACCOUNT: 'r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59', - ACCOUNT_X: 'X7AcgcsBL6XDcUb289X4mJ8djcdyKaB5hJDWMArnXr61cqZ', - ACCOUNT_T: 'T719a5UwUCnEs54UsxG9CJYYDhwmFCqkr7wxCcNcfZ6p5GZ', - OTHER_ACCOUNT: 'rpZc4mVfWUif9CRoHRKKcmhu1nx2xktxBo', - THIRD_ACCOUNT: 'rwBYyfufTzk77zUSKEu4MvixfarC35av1J', - FOURTH_ACCOUNT: 'rJnZ4YHCUsHvQu7R6mZohevKJDHFzVD6Zr', - ISSUER: 'rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM', - NOTFOUND: 'rajTAg3hon5Lcu1RxQQPxTgHvqfhc1EaUS', - SECRET: 'shsWGZcmZz6YsWWmcnpfr6fLTdtFV', - SOURCE_LOW_FUNDS: 'rhVgDEfS1r1fLyRUZCpab4TdowZcAJwHy2' -}; diff --git a/test/fixtures/addresses.json b/test/fixtures/addresses.json new file mode 100644 index 00000000..585be161 --- /dev/null +++ b/test/fixtures/addresses.json @@ -0,0 +1,12 @@ +{ + "ACCOUNT": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59", + "ACCOUNT_X": "X7AcgcsBL6XDcUb289X4mJ8djcdyKaB5hJDWMArnXr61cqZ", + "ACCOUNT_T": "T719a5UwUCnEs54UsxG9CJYYDhwmFCqkr7wxCcNcfZ6p5GZ", + "OTHER_ACCOUNT": "rpZc4mVfWUif9CRoHRKKcmhu1nx2xktxBo", + "THIRD_ACCOUNT": "rwBYyfufTzk77zUSKEu4MvixfarC35av1J", + "FOURTH_ACCOUNT": "rJnZ4YHCUsHvQu7R6mZohevKJDHFzVD6Zr", + "ISSUER": "rMH4UxPrbuMa1spCBR98hLLyNJp4d8p4tM", + "NOTFOUND": "rajTAg3hon5Lcu1RxQQPxTgHvqfhc1EaUS", + "SECRET": "shsWGZcmZz6YsWWmcnpfr6fLTdtFV", + "SOURCE_LOW_FUNDS": "rhVgDEfS1r1fLyRUZCpab4TdowZcAJwHy2" +} \ No newline at end of file diff --git a/test/fixtures/hashes.js b/test/fixtures/hashes.js deleted file mode 100644 index 07ddd56b..00000000 --- a/test/fixtures/hashes.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -module.exports = { - VALID_TRANSACTION_HASH: - 'F4AB442A6D4CBB935D66E1DA7309A5FC71C7143ED4049053EC14E3875B0CF9BF', - NOTFOUND_TRANSACTION_HASH: - 'D7FA4BBD23FAA88FC208BD194EC435D7A1FD9E2E8887B9C17A811A0739AA4AE4', - INVALID_TRANSACTION_HASH: - 'XF4AB442A6D4CBB935D66E1DA7309A5FC71C7143ED4049053EC14E3875B0CF9BF', - ORDER_HASH: - '71AE74B03DE3B9A06C559AD4D173A362D96B7D2A5AA35F56B9EF21543D627F34' -}; diff --git a/test/fixtures/hashes.json b/test/fixtures/hashes.json new file mode 100644 index 00000000..4183968b --- /dev/null +++ b/test/fixtures/hashes.json @@ -0,0 +1,10 @@ +{ + "VALID_TRANSACTION_HASH": + "F4AB442A6D4CBB935D66E1DA7309A5FC71C7143ED4049053EC14E3875B0CF9BF", + "NOTFOUND_TRANSACTION_HASH": + "D7FA4BBD23FAA88FC208BD194EC435D7A1FD9E2E8887B9C17A811A0739AA4AE4", + "INVALID_TRANSACTION_HASH": + "XF4AB442A6D4CBB935D66E1DA7309A5FC71C7143ED4049053EC14E3875B0CF9BF", + "ORDER_HASH": + "71AE74B03DE3B9A06C559AD4D173A362D96B7D2A5AA35F56B9EF21543D627F34" +} diff --git a/test/fixtures/index.js b/test/fixtures/index.js deleted file mode 100644 index 9f0d0980..00000000 --- a/test/fixtures/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -module.exports = { - responses: require('./responses'), - requests: require('./requests'), - rippled: require('./rippled') -}; diff --git a/test/integration/broadcast-test.js b/test/integration/broadcast-test.ts similarity index 84% rename from test/integration/broadcast-test.js rename to test/integration/broadcast-test.ts index fca74216..61fefc31 100644 --- a/test/integration/broadcast-test.js +++ b/test/integration/broadcast-test.ts @@ -1,5 +1,4 @@ -'use strict'; -const {RippleAPIBroadcast} = require('../../src'); +import {RippleAPIBroadcast} from '../../src'; function main() { const servers = ['wss://s1.ripple.com', 'wss://s2.ripple.com']; diff --git a/test/integration/connection-test.js b/test/integration/connection-test.ts similarity index 94% rename from test/integration/connection-test.js rename to test/integration/connection-test.ts index ecbb54b0..20ebbc4d 100644 --- a/test/integration/connection-test.js +++ b/test/integration/connection-test.ts @@ -1,5 +1,4 @@ -'use strict'; -const Connection = require('../../src/common/connection'); +import Connection from '../../src/common/connection'; const request1 = { command: 'server_info' diff --git a/test/integration/integration-test.js b/test/integration/integration-test.ts similarity index 96% rename from test/integration/integration-test.js rename to test/integration/integration-test.ts index ab29670c..30fc7243 100644 --- a/test/integration/integration-test.js +++ b/test/integration/integration-test.ts @@ -1,15 +1,12 @@ -/* eslint-disable max-nested-callbacks */ -/* eslint-disable max-params */ -'use strict'; -const _ = require('lodash'); -const assert = require('assert'); -const errors = require('../../src/common/errors'); -const wallet = require('./wallet'); -const requests = require('../fixtures/requests'); -const RippleAPI = require('ripple-api').RippleAPI; -const {isValidAddress} = require('ripple-address-codec'); -const {isValidSecret} = require('../../src/common'); -const {payTo, ledgerAccept} = require('./utils'); +import _ from 'lodash'; +import assert from 'assert'; +import wallet from './wallet'; +import requests from '../fixtures/requests'; +import {RippleAPI} from 'ripple-api'; +import {isValidAddress} from 'ripple-address-codec'; +import {payTo, ledgerAccept} from './utils'; +import { errors } from 'ripple-api/common'; +import { isValidSecret } from 'ripple-api/common/utils'; // how long before each test case times out @@ -71,7 +68,7 @@ function testTransaction(testcase, type, lastClosedLedgerVersion, prepared, }); } -function setup(server = 'wss://s1.ripple.com') { +function setup(this: any, server = 'wss://s1.ripple.com') { this.api = new RippleAPI({server}); console.log('CONNECTING...'); return this.api.connect().then(() => { @@ -167,11 +164,11 @@ function setupAccounts(testcase) { return promise; } -function teardown() { +function teardown(this: any) { return this.api.disconnect(); } -function suiteSetup() { +function suiteSetup(this: any) { this.transactions = []; return setup.bind(this)(serverUrl) diff --git a/test/mock-rippled.js b/test/mock-rippled.ts similarity index 96% rename from test/mock-rippled.js rename to test/mock-rippled.ts index 2a13d0d6..800074cb 100644 --- a/test/mock-rippled.js +++ b/test/mock-rippled.ts @@ -1,17 +1,16 @@ -'use strict'; // eslint-disable-line -const _ = require('lodash'); -const assert = require('assert'); -const WebSocketServer = require('ws').Server; -const EventEmitter2 = require('eventemitter2').EventEmitter2; -const fixtures = require('./fixtures/rippled'); -const addresses = require('./fixtures/addresses'); -const hashes = require('./fixtures/hashes'); -const transactionsResponse = require('./fixtures/rippled/account-tx'); -const accountLinesResponse = require('./fixtures/rippled/account-lines'); -const accountObjectsResponse = require('./fixtures/rippled/account-objects'); -const fullLedger = require('./fixtures/rippled/ledger-full-38129.json'); -const { getFreePort } = require('./utils/net-utils'); -const fs = require('fs'); +import _ from 'lodash'; +import fs from 'fs'; +import assert from 'assert'; +import {Server as WebSocketServer} from 'ws'; +import {EventEmitter2} from 'eventemitter2'; +import fixtures from './fixtures/rippled'; +import addresses from './fixtures/addresses.json'; +import hashes from './fixtures/hashes.json'; +import transactionsResponse from './fixtures/rippled/account-tx'; +import accountLinesResponse from './fixtures/rippled/account-lines'; +import accountObjectsResponse from './fixtures/rippled/account-objects'; +import fullLedger from './fixtures/rippled/ledger-full-38129.json'; +import { getFreePort } from './utils/net-utils'; function isUSD(json) { return json === 'USD' || json === '0000000000000000000000005553440000000000'; @@ -49,8 +48,17 @@ function createLedgerResponse(request, response) { return JSON.stringify(newResponse); } -module.exports = function createMockRippled(port) { - const mock = new WebSocketServer({ port: port }); +interface CustomWebSocketServer extends WebSocketServer, EventEmitter2 { + expectedRequests: any + expect: any + config: any + socket: any + onAny: any + event: any +} + +export function createMockRippled(port) { + const mock = new WebSocketServer({ port: port }) as CustomWebSocketServer; _.assign(mock, EventEmitter2.prototype); const close = mock.close; @@ -73,7 +81,7 @@ module.exports = function createMockRippled(port) { mock.expectedRequests = expectedRequests; }; - mock.on('connection', function (conn) { + mock.on('connection', function (this: CustomWebSocketServer, conn: any) { if (mock.config.breakNextConnection) { mock.config.breakNextConnection = false; conn.terminate(); @@ -94,7 +102,7 @@ module.exports = function createMockRippled(port) { mock.config = {}; - mock.onAny(function () { + mock.onAny(function (this: CustomWebSocketServer) { if (this.event.indexOf('request_') !== 0) { return; } diff --git a/test/mocked-server.js b/test/mocked-server.ts similarity index 81% rename from test/mocked-server.js rename to test/mocked-server.ts index 7772c861..249b6f97 100644 --- a/test/mocked-server.js +++ b/test/mocked-server.ts @@ -1,9 +1,5 @@ -'use strict'; - - const port = 34371; - -const createMockRippled = require('./mock-rippled'); +import {createMockRippled} from './mock-rippled'; function main() { if (global.describe) { diff --git a/test/setup-api-web.js b/test/setup-api-web.ts similarity index 79% rename from test/setup-api-web.js rename to test/setup-api-web.ts index eceddde4..ba878435 100644 --- a/test/setup-api-web.js +++ b/test/setup-api-web.ts @@ -1,13 +1,10 @@ -/* eslint-disable max-nested-callbacks */ -'use strict'; // eslint-disable-line - -const {RippleAPI, RippleAPIBroadcast} = require('ripple-api'); -const ledgerClosed = require('./fixtures/rippled/ledger-close'); +import {RippleAPI, RippleAPIBroadcast} from 'ripple-api'; +import ledgerClosed from './fixtures/rippled/ledger-close.json'; const port = 34371; const baseUrl = 'ws://testripple.circleci.com:'; -function setup(port_ = port) { +function setup(this: any, port_ = port) { const tapi = new RippleAPI({server: baseUrl + port_}); return tapi.connect().then(() => { return tapi.connection.request({ @@ -27,7 +24,7 @@ function setup(port_ = port) { }); } -function setupBroadcast() { +function setupBroadcast(this: any) { const servers = [port, port + 1].map(port_ => baseUrl + port_); this.api = new RippleAPIBroadcast(servers); return new Promise((resolve, reject) => { @@ -39,14 +36,14 @@ function setupBroadcast() { }); } -function teardown() { +function teardown(this: any) { if (this.api.isConnected()) { return this.api.disconnect(); } return undefined; } -module.exports = { +export default { setup: setup, teardown: teardown, setupBroadcast: setupBroadcast diff --git a/test/setup-api.js b/test/setup-api.ts similarity index 78% rename from test/setup-api.js rename to test/setup-api.ts index ba1ca82f..97fa8339 100644 --- a/test/setup-api.js +++ b/test/setup-api.ts @@ -1,11 +1,7 @@ -'use strict'; // eslint-disable-line - -const RippleAPI = require('ripple-api').RippleAPI; -const RippleAPIBroadcast = require('ripple-api').RippleAPIBroadcast; -const ledgerClosed = require('./fixtures/rippled/ledger-close'); -const createMockRippled = require('./mock-rippled'); -const {getFreePort} = require('./utils/net-utils'); - +import {RippleAPI, RippleAPIBroadcast} from 'ripple-api'; +import ledgerClosed from './fixtures/rippled/ledger-close.json'; +import {createMockRippled} from './mock-rippled'; +import {getFreePort} from './utils/net-utils'; function setupMockRippledConnection(testcase, port) { return new Promise((resolve, reject) => { @@ -31,19 +27,19 @@ function setupMockRippledConnectionForBroadcast(testcase, ports) { }); } -function setup() { +function setup(this: any) { return getFreePort().then(port => { return setupMockRippledConnection(this, port); }); } -function setupBroadcast() { +function setupBroadcast(this: any) { return Promise.all([getFreePort(), getFreePort()]).then(ports => { return setupMockRippledConnectionForBroadcast(this, ports); }); } -function teardown(done) { +function teardown(this: any, done) { this.api.disconnect().then(() => { if (this.mockRippled !== undefined) { this.mockRippled.close(); @@ -54,7 +50,7 @@ function teardown(done) { }).catch(done); } -module.exports = { +export default { setup: setup, teardown: teardown, setupBroadcast: setupBroadcast, diff --git a/test/utils/net-utils.js b/test/utils/net-utils.ts similarity index 70% rename from test/utils/net-utils.js rename to test/utils/net-utils.ts index 42f5cfad..e98ded4b 100644 --- a/test/utils/net-utils.js +++ b/test/utils/net-utils.ts @@ -1,14 +1,12 @@ -'use strict'; // eslint-disable-line - -const net = require('net'); +import net from 'net'; // using a free port instead of a constant port enables parallelization -function getFreePort() { +export function getFreePort() { return new Promise((resolve, reject) => { const server = net.createServer(); let port; server.on('listening', function() { - port = server.address().port; + port = (server.address() as any).port; server.close(); }); server.on('close', function() { @@ -19,8 +17,4 @@ function getFreePort() { }); server.listen(0); }); -} - -module.exports = { - getFreePort -}; +} \ No newline at end of file