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(this: any, port_ = port) { const tapi = new RippleAPI({server: baseUrl + port_}) return tapi .connect() .then(() => { return tapi.connection.request({ command: 'test_command', data: {openOnOtherPort: true} }) }) .then((got) => { return new Promise((resolve, reject) => { this.api = new RippleAPI({server: baseUrl + got.port}) this.api .connect() .then(() => { this.api.once('ledger', () => resolve()) this.api.connection._ws.emit( 'message', JSON.stringify(ledgerClosed) ) }) .catch(reject) }) }) .then(() => { return tapi.disconnect() }) } function setupBroadcast(this: any) { const servers = [port, port + 1].map((port_) => baseUrl + port_) this.api = new RippleAPIBroadcast(servers) return new Promise((resolve, reject) => { this.api .connect() .then(() => { this.api.once('ledger', () => resolve()) this.api._apis[0].connection._ws.emit( 'message', JSON.stringify(ledgerClosed) ) }) .catch(reject) }) } function teardown(this: any) { if (this.api.isConnected()) { return this.api.disconnect() } return undefined } export default { setup: setup, teardown: teardown, setupBroadcast: setupBroadcast }