8b010f887d
* Add console.table * First steps in validate script * env rename * Added parameter names * Descriptions * Print and configuration * Added more parameters * Rename gas oracle to gas supplier * More changes * Removed env examples for now * RPC rename * Bridge address rename * More changes * jobs * Renames * Typo * jobs * Changes * jobs * Changes * Monitor changes * jovs * Typo * Changes * REACT_APP_ env prefix * Typo * Rollback changes * Oracle deployment * Defaults * Monitor * Naming * Typo * Typo * Envs * ui deployment * ALl jobs * Vars in ultimate * Lint * Lint * Lint * Another way to add REACT_APP prefixing * Unnecessary mapping * No output timeout * No output timeout * Got rid of ERC20_TOKEN_ADDRESS * Configuration readme * Configuration * Prefixes * timeout * Docs * Docs * docs * docs * docs * Roll back ERC20_TOKEN_ADDRESS for erc-to-erc * Typo * lint * Rollback * ROllback validator * Rollback yarn.lock * dai and wetc update * Rollback ERC20_TOKEN_ADDRESS * erc to native * examples * all jobs * roll back * roll back ERC20_TOKEN_ADDRESS: "0xdbeE25CbE97e4A5CC6c499875774dc7067E9426B" * ui env example * typo * Allow rpc for ultimate * Test * ERC20_TOKEN_ADDRESS rollback * Specify port * React port * All jobs * cosmetics * Values * Restore erc20 token * Rearrange example for easier comparision * Rearrange ultimate for easier comparision * Rearrange for easier comparision * Refactor * Conditional app styles * Loading environment variables in react app * Add missing vars for UI in wetc and dai * Bring back test parameters readme * Readme for monitor vars * Reading environment variables in e2e-commons (#207)
166 lines
5.7 KiB
JavaScript
166 lines
5.7 KiB
JavaScript
const sinon = require('sinon')
|
|
const { expect } = require('chai')
|
|
const proxyquire = require('proxyquire').noPreserveCache()
|
|
const { DEFAULT_UPDATE_INTERVAL } = require('../src/utils/constants')
|
|
|
|
describe('gasPrice', () => {
|
|
describe('start', () => {
|
|
const utils = { setIntervalAndRun: sinon.spy() }
|
|
beforeEach(() => {
|
|
utils.setIntervalAndRun.resetHistory()
|
|
})
|
|
it('should call setIntervalAndRun with ORACLE_HOME_GAS_PRICE_UPDATE_INTERVAL interval value on Home', async () => {
|
|
// given
|
|
process.env.ORACLE_HOME_GAS_PRICE_UPDATE_INTERVAL = 15000
|
|
const gasPrice = proxyquire('../src/services/gasPrice', { '../utils/utils': utils })
|
|
|
|
// when
|
|
await gasPrice.start('home')
|
|
|
|
// then
|
|
expect(process.env.ORACLE_HOME_GAS_PRICE_UPDATE_INTERVAL).to.equal('15000')
|
|
expect(process.env.ORACLE_HOME_GAS_PRICE_UPDATE_INTERVAL).to.not.equal(DEFAULT_UPDATE_INTERVAL.toString())
|
|
expect(utils.setIntervalAndRun.args[0][1]).to.equal(process.env.ORACLE_HOME_GAS_PRICE_UPDATE_INTERVAL.toString())
|
|
})
|
|
it('should call setIntervalAndRun with ORACLE_FOREIGN_GAS_PRICE_UPDATE_INTERVAL interval value on Foreign', async () => {
|
|
// given
|
|
process.env.ORACLE_FOREIGN_GAS_PRICE_UPDATE_INTERVAL = 15000
|
|
const gasPrice = proxyquire('../src/services/gasPrice', { '../utils/utils': utils })
|
|
|
|
// when
|
|
await gasPrice.start('foreign')
|
|
|
|
// then
|
|
expect(process.env.ORACLE_FOREIGN_GAS_PRICE_UPDATE_INTERVAL).to.equal('15000')
|
|
expect(process.env.ORACLE_HOME_GAS_PRICE_UPDATE_INTERVAL).to.not.equal(DEFAULT_UPDATE_INTERVAL.toString())
|
|
expect(utils.setIntervalAndRun.args[0][1]).to.equal(
|
|
process.env.ORACLE_FOREIGN_GAS_PRICE_UPDATE_INTERVAL.toString()
|
|
)
|
|
})
|
|
it('should call setIntervalAndRun with default interval value on Home', async () => {
|
|
// given
|
|
delete process.env.ORACLE_HOME_GAS_PRICE_UPDATE_INTERVAL
|
|
const gasPrice = proxyquire('../src/services/gasPrice', { '../utils/utils': utils })
|
|
|
|
// when
|
|
await gasPrice.start('home')
|
|
|
|
// then
|
|
expect(process.env.ORACLE_HOME_GAS_PRICE_UPDATE_INTERVAL).to.equal(undefined)
|
|
expect(utils.setIntervalAndRun.args[0][1]).to.equal(DEFAULT_UPDATE_INTERVAL)
|
|
})
|
|
it('should call setIntervalAndRun with default interval value on Foreign', async () => {
|
|
// given
|
|
delete process.env.ORACLE_FOREIGN_GAS_PRICE_UPDATE_INTERVAL
|
|
const gasPrice = proxyquire('../src/services/gasPrice', { '../utils/utils': utils })
|
|
|
|
// when
|
|
await gasPrice.start('foreign')
|
|
|
|
// then
|
|
expect(process.env.ORACLE_FOREIGN_GAS_PRICE_UPDATE_INTERVAL).to.equal(undefined)
|
|
expect(utils.setIntervalAndRun.args[0][1]).to.equal(DEFAULT_UPDATE_INTERVAL)
|
|
})
|
|
})
|
|
|
|
describe('fetching gas price', () => {
|
|
const utils = { setIntervalAndRun: () => {} }
|
|
|
|
it('should fall back to default if contract and oracle/supplier are not working', async () => {
|
|
// given
|
|
process.env.COMMON_HOME_GAS_PRICE_FALLBACK = '101000000000'
|
|
const gasPrice = proxyquire('../src/services/gasPrice', { '../utils/utils': utils })
|
|
await gasPrice.start('home')
|
|
|
|
// when
|
|
await gasPrice.fetchGasPrice('standard', 1, null, null)
|
|
|
|
// then
|
|
expect(gasPrice.getPrice()).to.equal('101000000000')
|
|
})
|
|
|
|
it('should fetch gas from oracle/supplier', async () => {
|
|
// given
|
|
process.env.COMMON_HOME_GAS_PRICE_FALLBACK = '101000000000'
|
|
const gasPrice = proxyquire('../src/services/gasPrice', { '../utils/utils': utils })
|
|
await gasPrice.start('home')
|
|
|
|
const oracleFetchFn = () => ({
|
|
json: () => ({
|
|
standard: '103'
|
|
})
|
|
})
|
|
|
|
// when
|
|
await gasPrice.fetchGasPrice('standard', 1, null, oracleFetchFn)
|
|
|
|
// then
|
|
expect(gasPrice.getPrice().toString()).to.equal('103000000000')
|
|
})
|
|
|
|
it('should fetch gas from contract', async () => {
|
|
// given
|
|
process.env.COMMON_HOME_GAS_PRICE_FALLBACK = '101000000000'
|
|
const gasPrice = proxyquire('../src/services/gasPrice', { '../utils/utils': utils })
|
|
await gasPrice.start('home')
|
|
|
|
const bridgeContractMock = {
|
|
methods: {
|
|
gasPrice: sinon.stub().returns({
|
|
call: sinon.stub().returns(Promise.resolve('102000000000'))
|
|
})
|
|
}
|
|
}
|
|
|
|
// when
|
|
await gasPrice.fetchGasPrice('standard', 1, bridgeContractMock, null)
|
|
|
|
// then
|
|
expect(gasPrice.getPrice().toString()).to.equal('102000000000')
|
|
})
|
|
|
|
it('should fetch the gas price from the oracle first', async () => {
|
|
// given
|
|
process.env.COMMON_HOME_GAS_PRICE_FALLBACK = '101000000000'
|
|
const gasPrice = proxyquire('../src/services/gasPrice', { '../utils/utils': utils })
|
|
await gasPrice.start('home')
|
|
|
|
const bridgeContractMock = {
|
|
methods: {
|
|
gasPrice: sinon.stub().returns({
|
|
call: sinon.stub().returns(Promise.resolve('102000000000'))
|
|
})
|
|
}
|
|
}
|
|
|
|
const oracleFetchFn = () => ({
|
|
json: () => ({
|
|
standard: '103'
|
|
})
|
|
})
|
|
|
|
// when
|
|
await gasPrice.fetchGasPrice('standard', 1, bridgeContractMock, oracleFetchFn)
|
|
|
|
// then
|
|
expect(gasPrice.getPrice().toString()).to.equal('103000000000')
|
|
})
|
|
|
|
it('log errors using the logger', async () => {
|
|
// given
|
|
const fakeLogger = { error: sinon.spy() }
|
|
const gasPrice = proxyquire('../src/services/gasPrice', {
|
|
'../utils/utils': utils,
|
|
'../services/logger': { child: () => fakeLogger }
|
|
})
|
|
await gasPrice.start('home')
|
|
|
|
// when
|
|
await gasPrice.fetchGasPrice('standard', 1, null, null)
|
|
|
|
// then
|
|
expect(fakeLogger.error.calledTwice).to.equal(true) // two errors
|
|
})
|
|
})
|
|
})
|