Files
xahau.js/test/setup-api-web.ts
2021-07-26 14:04:46 -05:00

66 lines
1.6 KiB
TypeScript

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<void>((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<void>((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
}