Tests coverage for closing bridge

This commit is contained in:
Kirill Fedoseev 2019-11-14 13:30:23 +03:00
parent 7f575238e1
commit ec9c8e10c2
6 changed files with 101 additions and 42 deletions

View File

@ -22,3 +22,8 @@ docker start -a tests || true
echo "Saving test results" echo "Saving test results"
docker cp "tests:/tests/results.xml" "./tests/results.xml" > /dev/null 2>&1 || true docker cp "tests:/tests/results.xml" "./tests/results.xml" > /dev/null 2>&1 || true
echo "Killing all remaining docker containers"
docker kill $(docker ps | grep validator[1-3]_ | awk '{print $1}') > /dev/null 2>&1 || true
docker kill ganache_home ganache_side > /dev/null 2>&1 || true
docker kill $(docker ps | grep binance-testnet_ | awk '{print $1}') > /dev/null 2>&1 || true

View File

@ -17,27 +17,32 @@ module.exports = (newValidator) => {
nextValidators = [...initialInfo.validators, newValidator] nextValidators = [...initialInfo.validators, newValidator]
}) })
it('should start voting process', async function () { it('should start closing epoch process', async function () {
await controller1.voteStartVoting() await controller1.voteStartVoting()
await delay(5000) await delay(5000)
info = await controller1.getInfo() info = await controller1.getInfo()
assert.strictEqual(info.bridgeStatus, 'ready', 'Should not change state after one vote') assert.strictEqual(info.bridgeStatus, 'ready', 'Should not change state after one vote')
await controller3.voteStartVoting() await controller3.voteStartVoting()
info = await waitPromise(controller1.getInfo, (newInfo) => newInfo.bridgeStatus === 'voting') info = await waitPromise(controller1.getInfo, (newInfo) => newInfo.bridgeStatus === 'closing_epoch')
assert.deepStrictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly') assert.strictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly')
assert.deepStrictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly') assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly')
assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Next validators are not set correctly') assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Next validators are not set correctly')
await controller3.voteStartVoting() await controller3.voteStartVoting()
await delay(5000) await delay(5000)
info = await controller1.getInfo() info = await controller1.getInfo()
assert.strictEqual(info.bridgeStatus, 'voting', 'Should not do anything after duplicate vote') assert.strictEqual(info.bridgeStatus, 'closing_epoch', 'Should not do anything after duplicate vote')
assert.deepStrictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly') assert.strictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly')
assert.deepStrictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly') assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly')
assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Incorrect set of next validators after third vote') assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Incorrect set of next validators after third vote')
}) })
it('should finish close epoch process and start voting process', async function () {
this.timeout(120000)
info = await waitPromise(controller1.getInfo, (newInfo) => newInfo.bridgeStatus === 'voting')
})
it('should add validator', async function () { it('should add validator', async function () {
await controller1.voteAddValidator(newValidator) await controller1.voteAddValidator(newValidator)
await delay(5000) await delay(5000)
@ -58,12 +63,43 @@ module.exports = (newValidator) => {
await delay(5000) await delay(5000)
info = await controller1.getInfo() info = await controller1.getInfo()
assert.strictEqual(info.bridgeStatus, 'voting', 'Should not do anything after duplicate vote') assert.strictEqual(info.bridgeStatus, 'voting', 'Should not do anything after duplicate vote')
assert.deepStrictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly') assert.strictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly')
assert.deepStrictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly') assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly')
assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly') assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly')
assert.deepStrictEqual(info.nextValidators, nextValidators, 'Incorrect set of next validators after third vote') assert.deepStrictEqual(info.nextValidators, nextValidators, 'Incorrect set of next validators after third vote')
}) })
it('should change close epoch', async function () {
await controller1.voteChangeCloseEpoch(false)
await delay(5000)
info = await controller1.getInfo()
assert.strictEqual(info.bridgeStatus, 'voting', 'Should not change state after one vote')
assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly')
assert.deepStrictEqual(info.nextValidators, nextValidators, 'Next validators are not set correctly')
assert.strictEqual(info.closeEpoch, true, 'Current close epoch is not set correctly')
assert.strictEqual(info.nextCloseEpoch, true, 'Next close epoch is not set correctly')
await controller3.voteChangeCloseEpoch(false)
info = await waitPromise(
controller1.getInfo,
(newInfo) => !newInfo.nextCloseEpoch
)
assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly')
assert.deepStrictEqual(info.nextValidators, nextValidators, 'Next validators are not set correctly')
assert.strictEqual(info.closeEpoch, true, 'Current close epoch is not set correctly')
await controller3.voteChangeCloseEpoch(false)
await delay(5000)
info = await controller1.getInfo()
assert.strictEqual(info.bridgeStatus, 'voting', 'Should not do anything after duplicate vote')
assert.strictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly')
assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly')
assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly')
assert.deepStrictEqual(info.nextValidators, nextValidators, 'Incorrect set of next validators after third vote')
assert.strictEqual(info.closeEpoch, true, 'Current close epoch is not set correctly')
assert.strictEqual(info.nextCloseEpoch, false, 'Next close epoch is not set correctly')
})
it('should start keygen process', async function () { it('should start keygen process', async function () {
await controller1.voteStartKeygen() await controller1.voteStartKeygen()
await delay(5000) await delay(5000)
@ -77,8 +113,8 @@ module.exports = (newValidator) => {
await delay(5000) await delay(5000)
info = await controller1.getInfo() info = await controller1.getInfo()
assert.strictEqual(info.bridgeStatus, 'keygen', 'Should not do anything after duplicate vote') assert.strictEqual(info.bridgeStatus, 'keygen', 'Should not do anything after duplicate vote')
assert.deepStrictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly') assert.strictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly')
assert.deepStrictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly') assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly')
assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly') assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly')
assert.deepStrictEqual(info.nextValidators, nextValidators, 'Incorrect set of next validators after third vote') assert.deepStrictEqual(info.nextValidators, nextValidators, 'Incorrect set of next validators after third vote')
}) })

View File

@ -22,17 +22,18 @@ module.exports = (newThreshold) => {
assert.strictEqual(info.bridgeStatus, 'ready', 'Should not change state after one vote') assert.strictEqual(info.bridgeStatus, 'ready', 'Should not change state after one vote')
await controller2.voteStartVoting() await controller2.voteStartVoting()
info = await waitPromise(controller1.getInfo, (newInfo) => newInfo.bridgeStatus === 'voting') info = await waitPromise(controller1.getInfo, (newInfo) => newInfo.bridgeStatus === 'closingEpoch' || newInfo.bridgeStatus === 'voting')
assert.deepStrictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly') assert.strictEqual(info.bridgeStatus, 'voting', 'Should not started closing epoch after previous epoch')
assert.deepStrictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly') assert.strictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly')
assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly')
assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Next validators are not set correctly') assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Next validators are not set correctly')
await controller3.voteStartVoting() await controller3.voteStartVoting()
await delay(5000) await delay(5000)
info = await controller1.getInfo() info = await controller1.getInfo()
assert.strictEqual(info.bridgeStatus, 'voting', 'Should not do anything after third vote') assert.strictEqual(info.bridgeStatus, 'voting', 'Should not do anything after third vote')
assert.deepStrictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly') assert.strictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly')
assert.deepStrictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly') assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly')
assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Incorrect set of next validators after third vote') assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Incorrect set of next validators after third vote')
}) })
@ -43,8 +44,8 @@ module.exports = (newThreshold) => {
assert.strictEqual(info.bridgeStatus, 'voting', 'Should not change state after one vote') assert.strictEqual(info.bridgeStatus, 'voting', 'Should not change state after one vote')
assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly') assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly')
assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Next validators are not set correctly') assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Next validators are not set correctly')
assert.deepStrictEqual(info.threshold, initialInfo.threshold, 'Threshold not set correctly') assert.strictEqual(info.threshold, initialInfo.threshold, 'Threshold not set correctly')
assert.deepStrictEqual(info.nextThreshold, initialInfo.threshold, 'Next threshold is not set correctly') assert.strictEqual(info.nextThreshold, initialInfo.threshold, 'Next threshold is not set correctly')
await controller2.voteChangeThreshold(newThreshold) await controller2.voteChangeThreshold(newThreshold)
info = await waitPromise( info = await waitPromise(
@ -53,18 +54,18 @@ module.exports = (newThreshold) => {
) )
assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly') assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly')
assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Next validators are not set correctly') assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Next validators are not set correctly')
assert.deepStrictEqual(info.threshold, initialInfo.threshold, 'Threshold not set correctly') assert.strictEqual(info.threshold, initialInfo.threshold, 'Threshold not set correctly')
await controller3.voteChangeThreshold(newThreshold) await controller3.voteChangeThreshold(newThreshold)
await delay(5000) await delay(5000)
info = await controller1.getInfo() info = await controller1.getInfo()
assert.strictEqual(info.bridgeStatus, 'voting', 'Should not do anything after third vote') assert.strictEqual(info.bridgeStatus, 'voting', 'Should not do anything after third vote')
assert.deepStrictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly') assert.strictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly')
assert.deepStrictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly') assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly')
assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly') assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly')
assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Incorrect set of next validators after third vote') assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Incorrect set of next validators after third vote')
assert.deepStrictEqual(info.threshold, initialInfo.threshold, 'Threshold not set correctly') assert.strictEqual(info.threshold, initialInfo.threshold, 'Threshold not set correctly')
assert.deepStrictEqual(info.nextThreshold, newThreshold, 'Next threshold is not set correctly') assert.strictEqual(info.nextThreshold, newThreshold, 'Next threshold is not set correctly')
}) })
it('should start keygen process', async function () { it('should start keygen process', async function () {
@ -80,12 +81,12 @@ module.exports = (newThreshold) => {
await delay(5000) await delay(5000)
info = await controller1.getInfo() info = await controller1.getInfo()
assert.strictEqual(info.bridgeStatus, 'keygen', 'Should not do anything after third vote') assert.strictEqual(info.bridgeStatus, 'keygen', 'Should not do anything after third vote')
assert.deepStrictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly') assert.strictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly')
assert.deepStrictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly') assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly')
assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly') assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly')
assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Incorrect set of next validators after third vote') assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Incorrect set of next validators after third vote')
assert.deepStrictEqual(info.threshold, initialInfo.threshold, 'Threshold not set correctly') assert.strictEqual(info.threshold, initialInfo.threshold, 'Threshold not set correctly')
assert.deepStrictEqual(info.nextThreshold, newThreshold, 'Next threshold is not set correctly') assert.strictEqual(info.nextThreshold, newThreshold, 'Next threshold is not set correctly')
}) })
it('should finish keygen process and start funds transfer', async function () { it('should finish keygen process and start funds transfer', async function () {
@ -102,8 +103,8 @@ module.exports = (newThreshold) => {
assert.deepStrictEqual(info.validators, initialInfo.validators, 'Incorrect set of validators in new epoch') assert.deepStrictEqual(info.validators, initialInfo.validators, 'Incorrect set of validators in new epoch')
assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Incorrect next epoch') assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Incorrect next epoch')
assert.strictEqual(info.bridgeStatus, 'ready', 'Incorrect bridge state in new epoch') assert.strictEqual(info.bridgeStatus, 'ready', 'Incorrect bridge state in new epoch')
assert.deepStrictEqual(info.threshold, newThreshold, 'Threshold not set correctly') assert.strictEqual(info.threshold, newThreshold, 'Threshold not set correctly')
assert.deepStrictEqual(info.nextThreshold, newThreshold, 'Next threshold is not set correctly') assert.strictEqual(info.nextThreshold, newThreshold, 'Next threshold is not set correctly')
await delay(5000) await delay(5000)
const prevBalance = await getBepBalance(initialInfo.foreignBridgeAddress) const prevBalance = await getBepBalance(initialInfo.foreignBridgeAddress)
const newBalance = await getBepBalance(info.foreignBridgeAddress) const newBalance = await getBepBalance(info.foreignBridgeAddress)

View File

@ -36,7 +36,7 @@ describe('bridge tests', function () {
bncPrefundedUser = await createUser(FOREIGN_PRIVATE_KEY, 'bnc') bncPrefundedUser = await createUser(FOREIGN_PRIVATE_KEY, 'bnc')
const bnbBalance = await bncPrefundedUser.getBnbBalance() const bnbBalance = await bncPrefundedUser.getBnbBalance()
assert.ok(bnbBalance >= 1, `Insufficient BNB balance on ${bncPrefundedUser.ethAddress} in Binance network, expected 1 BNB, got ${bnbBalance}`) assert.ok(bnbBalance >= 10, `Insufficient BNB balance on ${bncPrefundedUser.ethAddress} in Binance network, expected 10 BNB, got ${bnbBalance}`)
const bepBalance = await bncPrefundedUser.getBepBalance() const bepBalance = await bncPrefundedUser.getBepBalance()
assert.ok(bepBalance >= 2000, `Insufficient BEP2 balance on ${bncPrefundedUser.ethAddress} in Binance network, expected 2000 ${FOREIGN_ASSET}, got ${bepBalance}`) assert.ok(bepBalance >= 2000, `Insufficient BEP2 balance on ${bncPrefundedUser.ethAddress} in Binance network, expected 2000 ${FOREIGN_ASSET}, got ${bepBalance}`)
@ -63,8 +63,17 @@ describe('bridge tests', function () {
info = await waitPromise(controller1.getInfo, (newInfo) => newInfo.epoch === 1) info = await waitPromise(controller1.getInfo, (newInfo) => newInfo.epoch === 1)
}) })
it('should start correct epoch', async function () {
assert.deepStrictEqual(info.validators, validatorsConfig, 'Validators are not set correctly')
assert.deepStrictEqual(info.nextValidators, validatorsConfig, 'Next validators are not set correctly')
assert.strictEqual(info.closeEpoch, true, 'Current close epoch is not set correctly')
assert.strictEqual(info.nextCloseEpoch, true, 'Next close epoch is not set correctly')
assert.strictEqual(info.threshold, 2, 'Threshold not set correctly')
assert.strictEqual(info.nextThreshold, 2, 'Next threshold is not set correctly')
})
after(async function () { after(async function () {
await bncPrefundedUser.transferBepBnb(info.foreignBridgeAddress, 1000, 0.1) await bncPrefundedUser.transferBepBnb(info.foreignBridgeAddress, 1000, 5)
await ethPrefundedUser.transferErc(HOME_BRIDGE_ADDRESS, 1000) await ethPrefundedUser.transferErc(HOME_BRIDGE_ADDRESS, 1000)
}) })
}) })

View File

@ -17,27 +17,32 @@ module.exports = (oldValidator) => {
nextValidators = initialInfo.validators.filter((validator) => validator !== oldValidator) nextValidators = initialInfo.validators.filter((validator) => validator !== oldValidator)
}) })
it('should start voting process', async function () { it('should start closing epoch process', async function () {
await controller1.voteStartVoting() await controller1.voteStartVoting()
await delay(5000) await delay(5000)
info = await controller1.getInfo() info = await controller1.getInfo()
assert.strictEqual(info.bridgeStatus, 'ready', 'Should not change state after one vote') assert.strictEqual(info.bridgeStatus, 'ready', 'Should not change state after one vote')
await controller2.voteStartVoting() await controller2.voteStartVoting()
info = await waitPromise(controller1.getInfo, (newInfo) => newInfo.bridgeStatus === 'voting') info = await waitPromise(controller1.getInfo, (newInfo) => newInfo.bridgeStatus === 'closing_epoch')
assert.deepStrictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly') assert.strictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly')
assert.deepStrictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly') assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly')
assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Next validators are not set correctly') assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Next validators are not set correctly')
await controller3.voteStartVoting() await controller3.voteStartVoting()
await delay(5000) await delay(5000)
info = await controller1.getInfo() info = await controller1.getInfo()
assert.strictEqual(info.bridgeStatus, 'voting', 'Should not do anything after third vote') assert.strictEqual(info.bridgeStatus, 'closing_epoch', 'Should not do anything after third vote')
assert.deepStrictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly') assert.strictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly')
assert.deepStrictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly') assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly')
assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Incorrect set of next validators after third vote') assert.deepStrictEqual(info.nextValidators, initialInfo.validators, 'Incorrect set of next validators after third vote')
}) })
it('should finish close epoch process and start voting process', async function () {
this.timeout(120000)
info = await waitPromise(controller1.getInfo, (newInfo) => newInfo.bridgeStatus === 'voting')
})
it('should remove validator', async function () { it('should remove validator', async function () {
await controller1.voteRemoveValidator(oldValidator) await controller1.voteRemoveValidator(oldValidator)
await delay(5000) await delay(5000)
@ -58,8 +63,8 @@ module.exports = (oldValidator) => {
await delay(5000) await delay(5000)
info = await controller1.getInfo() info = await controller1.getInfo()
assert.strictEqual(info.bridgeStatus, 'voting', 'Should not do anything after third vote') assert.strictEqual(info.bridgeStatus, 'voting', 'Should not do anything after third vote')
assert.deepStrictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly') assert.strictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly')
assert.deepStrictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly') assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly')
assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly') assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly')
assert.deepStrictEqual(info.nextValidators, nextValidators, 'Incorrect set of next validators after third vote') assert.deepStrictEqual(info.nextValidators, nextValidators, 'Incorrect set of next validators after third vote')
}) })
@ -77,8 +82,8 @@ module.exports = (oldValidator) => {
await delay(5000) await delay(5000)
info = await controller1.getInfo() info = await controller1.getInfo()
assert.strictEqual(info.bridgeStatus, 'keygen', 'Should not do anything after third vote') assert.strictEqual(info.bridgeStatus, 'keygen', 'Should not do anything after third vote')
assert.deepStrictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly') assert.strictEqual(info.epoch, initialInfo.epoch, 'Current epoch is not set correctly')
assert.deepStrictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly') assert.strictEqual(info.nextEpoch, initialInfo.epoch + 1, 'Next epoch is not set correctly')
assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly') assert.deepStrictEqual(info.validators, initialInfo.validators, 'Validators are not set correctly')
assert.deepStrictEqual(info.nextValidators, nextValidators, 'Incorrect set of next validators after third vote') assert.deepStrictEqual(info.nextValidators, nextValidators, 'Incorrect set of next validators after third vote')
}) })

View File

@ -28,6 +28,9 @@ function createController(validatorId) {
}, },
async voteChangeThreshold(threshold) { async voteChangeThreshold(threshold) {
return (await retry(() => proxy.get(`/vote/changeThreshold/${threshold}`))).data return (await retry(() => proxy.get(`/vote/changeThreshold/${threshold}`))).data
},
async voteChangeCloseEpoch(closeEpoch) {
return (await retry(() => proxy.get(`/vote/changeCloseEpoch/${closeEpoch}`))).data
} }
} }
} }