@gateway.fm/gtw-dvf-client-js
Version:
DVF client js lib with gateway.fm rpc endpoints
144 lines (117 loc) • 3.48 kB
JavaScript
const nock = require('nock')
const instance = require('./test/helpers/instance')
const _ = require('lodash')
const mockGetConf = require('./test/fixtures/getConf')
let dvf
describe('dvf.getWithdrawals', () => {
beforeAll(async () => {
mockGetConf()
dvf = await instance()
})
it(`Query withdrawals for all tokens`, async () => {
const apiResponse = [
{
token: 'ETH',
amount: 1000000
},
{
token: 'USDT',
amount: 2000000
},
{
token: 'USDT',
status: 'ready',
amount: 5000000
},
{
token: 'ZRX',
status: 'ready',
amount: 25000000
}
]
const payloadValidator = jest.fn(body => {
expect(typeof body.nonce).toBe('string')
expect(typeof body.signature).toBe('string')
expect(typeof body.token).toBe('undefined')
return true
})
nock(dvf.config.api)
.post('/v1/trading/r/getPendingWithdrawals', payloadValidator)
.reply(200, apiResponse)
const result = await dvf.getWithdrawals()
expect(payloadValidator).toBeCalled()
expect(result).toEqual(apiResponse)
})
it(`Query withdrawals for a specified token`, async () => {
const nonce = Date.now() / 1000 + ''
const signature = await dvf.sign(nonce.toString(16))
const token = 'ETH'
const address = '0x49e4d1e2aa7d026188251392dd2d335c176d846d8a894a8092c835f3b345e2ad'
const apiResponse = [
{
token: 'ETH',
amount: 1000000
},
{
token: 'ETH',
amount: 2000000
},
{
token: 'ETH',
status: 'ready',
amount: 5000000
}
]
const payloadValidator = jest.fn(body => {
expect(body.nonce).toEqual(nonce)
expect(body.signature).toEqual(signature)
expect(body.token).toEqual(token)
return true
})
nock(dvf.config.api)
.post('/v1/trading/r/getPendingWithdrawals', payloadValidator)
.reply(200, apiResponse)
const result = await dvf.getWithdrawals(token, address, nonce, signature)
expect(payloadValidator).toBeCalled()
expect(result).toEqual(apiResponse)
})
it(`Lets nonce and signature to be optional`, async () => {
const token = 'ZRX'
const apiResponse = []
const payloadValidator = jest.fn(body => {
expect(typeof body.nonce).toBe('string')
expect(typeof body.signature).toBe('string')
return true
})
nock(dvf.config.api)
.post('/v1/trading/r/getPendingWithdrawals', payloadValidator)
.reply(200, apiResponse)
const result = await dvf.getWithdrawals(token)
expect(payloadValidator).toBeCalled()
expect(result).toEqual(apiResponse)
})
it('Posts to get withdrawals config API and gets error response', async () => {
const apiErrorResponse = {
statusCode: 422,
error: 'Unprocessable Entity',
message:
'Please contact support if you believe there should not be an error here',
details: {
error: {
type: 'DVFError',
message: 'WITHDRAWAL_NOT_FOUND'
}
}
}
const payloadValidator = jest.fn(() => true)
nock(dvf.config.api)
.post('/v1/trading/r/getPendingWithdrawals', payloadValidator)
.reply(422, apiErrorResponse)
try {
await dvf.getWithdrawals()
} catch (e) {
expect(e.error).toEqual(apiErrorResponse)
expect(payloadValidator).toBeCalled()
}
})
})