mirror of
https://github.com/status-im/liquid-funding.git
synced 2025-02-16 21:36:46 +00:00
update to ganache-cli 7.0.0 w/ ws support
This commit is contained in:
parent
a5651f2186
commit
1942b38c4e
4585
package-lock.json
generated
4585
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -40,7 +40,7 @@
|
||||
"eslint-plugin-import": "^2.6.0",
|
||||
"eslint-plugin-jsx-a11y": "^6.0.2",
|
||||
"eslint-plugin-react": "^7.1.0",
|
||||
"ethereumjs-testrpc": "git://github.com/perissology/testrpc.git#81216dbc",
|
||||
"ganache-cli": "^7.0.0-beta.0",
|
||||
"lerna": "^2.2.0",
|
||||
"random-bytes": "^1.0.0",
|
||||
"mocha": "^3.5.0",
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* eslint-env mocha */
|
||||
/* eslint-disable no-await-in-loop */
|
||||
const TestRPC = require('ethereumjs-testrpc');
|
||||
const TestRPC = require("ganache-cli");
|
||||
const Web3 = require('web3');
|
||||
const chai = require('chai');
|
||||
const liquidpledging = require('../index.js');
|
||||
@ -75,21 +75,21 @@ describe('LiquidPledging plugins test', function () {
|
||||
});
|
||||
|
||||
it('Should fail to create giver with invalid plugin', async function() {
|
||||
await assertFail(async () => {
|
||||
await liquidPledging.addGiver('Giver2', '', 0, vault.$address, { from: giver1 });
|
||||
});
|
||||
await assertFail(
|
||||
liquidPledging.addGiver('Giver2', '', 0, vault.$address, { from: giver1, gas: 4000000 })
|
||||
);
|
||||
});
|
||||
|
||||
it('Should fail to create delegate with invalid plugin', async function() {
|
||||
await assertFail(async () => {
|
||||
await liquidPledging.addDelegate('delegate1', '', 0, liquidPledging.$address, { from: adminDelegate1});
|
||||
});
|
||||
await assertFail(
|
||||
liquidPledging.addDelegate('delegate1', '', 0, liquidPledging.$address, { from: adminDelegate1, gas: 4000000})
|
||||
);
|
||||
});
|
||||
|
||||
it('Should fail to create project with invalid plugin', async function() {
|
||||
await assertFail(async () => {
|
||||
await liquidPledging.addProject('Project1', '', giver1, 0, 0, vault.$address, { from: adminProject1});
|
||||
});
|
||||
await assertFail(
|
||||
liquidPledging.addProject('Project1', '', giver1, 0, 0, vault.$address, { from: adminProject1, gas: 4000000})
|
||||
);
|
||||
});
|
||||
|
||||
it('Should deploy TestSimpleProjectPlugin and add project', async function() {
|
||||
@ -114,9 +114,9 @@ describe('LiquidPledging plugins test', function () {
|
||||
});
|
||||
|
||||
it('Should allow all plugins', async function() {
|
||||
await liquidPledging.useWhitelist(false, { gas: 100000 });
|
||||
await liquidPledging.useWhitelist(false);
|
||||
|
||||
await liquidPledging.addGiver('Giver2', '', 0, vault.$address, { from: giver1, gas: 200000 });
|
||||
await liquidPledging.addGiver('Giver2', '', 0, vault.$address, { from: giver1 });
|
||||
|
||||
const nAdmins = await liquidPledging.numberOfPledgeAdmins();
|
||||
assert.equal(nAdmins, 3);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* eslint-env mocha */
|
||||
/* eslint-disable no-await-in-loop */
|
||||
const TestRPC = require('ethereumjs-testrpc');
|
||||
const TestRPC = require("ganache-cli");
|
||||
const Web3 = require('web3');
|
||||
const chai = require('chai');
|
||||
const liquidpledging = require('../index.js');
|
||||
@ -73,9 +73,9 @@ describe('LiquidPledging cancelPledge normal scenario', function () {
|
||||
});
|
||||
|
||||
it('Should only allow pledge owner to cancel pledge', async () => {
|
||||
await assertFail(async () => {
|
||||
await liquidPledging.cancelPledge(2, 1000, { from: giver1 });
|
||||
});
|
||||
await assertFail(
|
||||
liquidPledging.cancelPledge(2, 1000, { from: giver1, gas: 4000000 })
|
||||
);
|
||||
});
|
||||
|
||||
it('Should cancel pledge and return to oldPledge', async () => {
|
||||
@ -88,9 +88,9 @@ describe('LiquidPledging cancelPledge normal scenario', function () {
|
||||
});
|
||||
|
||||
it('Should not allow to cancel pledge if oldPledge === 0', async () => {
|
||||
await assertFail(async () => {
|
||||
await liquidPledging.cancelPledge(1, 1000, { from: giver1 });
|
||||
});
|
||||
await assertFail(
|
||||
liquidPledging.cancelPledge(1, 1000, { from: giver1, gas: 4000000 })
|
||||
);
|
||||
})
|
||||
});
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* eslint-env mocha */
|
||||
/* eslint-disable no-await-in-loop */
|
||||
const TestRPC = require('ethereumjs-testrpc');
|
||||
const TestRPC = require("ganache-cli");
|
||||
const Web3 = require('web3');
|
||||
const chai = require('chai');
|
||||
const liquidpledging = require('../index.js');
|
||||
@ -38,8 +38,7 @@ describe('DelegationChain test', function () {
|
||||
before(async () => {
|
||||
testrpc = TestRPC.server({
|
||||
ws: true,
|
||||
gasLimit: 6700000,
|
||||
total_accounts: 10,
|
||||
gasLimit: 6700000, total_accounts: 10,
|
||||
});
|
||||
|
||||
testrpc.listen(8545, '127.0.0.1');
|
||||
@ -98,11 +97,11 @@ describe('DelegationChain test', function () {
|
||||
|
||||
it('Should allow any delegate in chain to transfer pledge and undelegate all delegates occurring later in chain', async () => {
|
||||
// add delegate2 to chain
|
||||
await liquidPledging.transfer(2, 2, 1000, 3, {from: delegate1, $extraGas: 100000});
|
||||
await liquidPledging.transfer(2, 2, 1000, 3, {from: delegate1});
|
||||
// add delegate3 to chain
|
||||
await liquidPledging.transfer(3, 3, 1000, 4, {from: delegate2, $extraGas: 100000});
|
||||
await liquidPledging.transfer(3, 3, 1000, 4, {from: delegate2});
|
||||
// delegate 1 transfer pledge to project1. should also undelegate all delegates occurring later in chain
|
||||
await liquidPledging.transfer(2, 4, 1000, 5, {from: delegate1, $extraGas: 200000});
|
||||
await liquidPledging.transfer(2, 4, 1000, 5, {from: delegate1});
|
||||
|
||||
const st = await liquidPledgingState.getState();
|
||||
assert.equal(st.pledges[5].amount, 1000);
|
||||
@ -114,15 +113,15 @@ describe('DelegationChain test', function () {
|
||||
});
|
||||
|
||||
it('Should throw if delegate2 is not in delegationChain', async () => {
|
||||
await assertFail(async () => await liquidPledging.transfer(3, 5, 1000, 1, {from: delegate2}));
|
||||
await assertFail(liquidPledging.transfer(3, 5, 1000, 1, {from: delegate2, gas: 4000000}));
|
||||
});
|
||||
|
||||
it('Delegate1 should not be able to transfer to another giver', async () => {
|
||||
await assertFail(async () => await liquidPledging.transfer(2, 5, 1000, 6, {from: delegate1}));
|
||||
await assertFail(liquidPledging.transfer(2, 5, 1000, 6, {from: delegate1, gas: 4000000}));
|
||||
});
|
||||
|
||||
it('Delegate1 should be able to transfer pledge back to owner', async () => {
|
||||
await liquidPledging.transfer(2, 5, 1000, 1, {from: delegate1, $extraGas: 100000});
|
||||
await liquidPledging.transfer(2, 5, 1000, 1, {from: delegate1});
|
||||
const st = await liquidPledgingState.getState();
|
||||
assert.equal(st.pledges[1].amount, 1000);
|
||||
assert.equal(st.pledges[1].delegates.length, 0);
|
||||
@ -131,11 +130,11 @@ describe('DelegationChain test', function () {
|
||||
|
||||
it('Delegate1 should be able to change delegation', async () => {
|
||||
// add delegate1 to chain
|
||||
await liquidPledging.transfer(1, 1, 1000, 2, {from: giver1, $extraGas: 100000});
|
||||
await liquidPledging.transfer(1, 1, 1000, 2, {from: giver1});
|
||||
// delegate1 add delegate2 to chain
|
||||
await liquidPledging.transfer(2, 2, 1000, 3, {from: delegate1, $extraGas: 100000});
|
||||
await liquidPledging.transfer(2, 2, 1000, 3, {from: delegate1});
|
||||
// delegate1 remove delegate2 and add delegate3 to chain
|
||||
await liquidPledging.transfer(2, 3, 1000, 4, {from: delegate1, $extraGas: 100000});
|
||||
await liquidPledging.transfer(2, 3, 1000, 4, {from: delegate1});
|
||||
|
||||
const st = await liquidPledgingState.getState();
|
||||
assert.equal(st.pledges[1].amount, 0);
|
||||
@ -147,9 +146,9 @@ describe('DelegationChain test', function () {
|
||||
|
||||
it('delegate in chain should be able to delegate to previous delegate, thus undelegating themselves and any delegate after the previous delegate', async () => {
|
||||
// add delegate2 to chain
|
||||
await liquidPledging.transfer(4, 6, 1000, 3, {from: delegate3, $extraGas: 100000});
|
||||
await liquidPledging.transfer(4, 6, 1000, 3, {from: delegate3});
|
||||
// delegate2 transfer back to delegate1, thus undelegating delegate2 & delegate3
|
||||
await liquidPledging.transfer(3, 7, 1000, 2, {from: delegate2, $extraGas: 100000});
|
||||
await liquidPledging.transfer(3, 7, 1000, 2, {from: delegate2});
|
||||
|
||||
const st = await liquidPledgingState.getState();
|
||||
assert.equal(st.pledges[7].amount, 0);
|
||||
@ -176,14 +175,14 @@ describe('DelegationChain test', function () {
|
||||
|
||||
it('Pledge should have longest commitTime in delegation chain', async () => {
|
||||
// delegate1 add delegate2 to chain
|
||||
await liquidPledging.transfer(2, 2, 1000, 3, {from: delegate1, $extraGas: 100000});
|
||||
await liquidPledging.transfer(2, 2, 1000, 3, {from: delegate1});
|
||||
|
||||
// set the time
|
||||
const now = Math.floor(new Date().getTime() / 1000);
|
||||
await liquidPledging.setMockedTime(now);
|
||||
|
||||
// propose project delegation
|
||||
await liquidPledging.transfer(3, 3, 1000, 5, { from: delegate2, $extraGas: 100000 });
|
||||
await liquidPledging.transfer(3, 3, 1000, 5, { from: delegate2 });
|
||||
|
||||
const pledge = await liquidPledging.getPledge(8);
|
||||
assert.equal(pledge.commitTime, now + 259200); // 259200 is longest commitTime in delegationChain
|
||||
@ -191,7 +190,7 @@ describe('DelegationChain test', function () {
|
||||
|
||||
it('delegation chain should remain the same when owner veto\'s delegation', async () => {
|
||||
// owner veto delegation to project1
|
||||
await liquidPledging.transfer(1, 8, 1000, 3, { from: giver1, $extraGas: 100000 });
|
||||
await liquidPledging.transfer(1, 8, 1000, 3, { from: giver1 });
|
||||
|
||||
const st = await liquidPledgingState.getState();
|
||||
assert.equal(st.pledges[ 8 ].amount, 0);
|
||||
@ -203,9 +202,9 @@ describe('DelegationChain test', function () {
|
||||
|
||||
it('delegation chain should remain the same upto delegate of reciever when owner veto\'s delegation', async () => {
|
||||
// propose project1 delegation
|
||||
await liquidPledging.transfer(3, 3, 1000, 5, { from: delegate2, $extraGas: 100000 });
|
||||
await liquidPledging.transfer(3, 3, 1000, 5, { from: delegate2 });
|
||||
// owner veto delegation to project1 and remove delegate2
|
||||
await liquidPledging.transfer(1, 8, 1000, 2, { from: giver1, $extraGas: 100000 });
|
||||
await liquidPledging.transfer(1, 8, 1000, 2, { from: giver1 });
|
||||
|
||||
const pledge = await liquidPledging.getPledge(2);
|
||||
assert.equal(pledge.amount, 1000);
|
||||
@ -213,9 +212,9 @@ describe('DelegationChain test', function () {
|
||||
|
||||
it('owner should be able to transfer pledge to a new delegate at any time', async () => {
|
||||
// propose project1 delegation
|
||||
await liquidPledging.transfer(2, 2, 1000, 5, { from: delegate1, $extraGas: 100000 });
|
||||
await liquidPledging.transfer(2, 2, 1000, 5, { from: delegate1 });
|
||||
// owner veto delegation to project1 and assign new delgate
|
||||
await liquidPledging.transfer(1, 9, 1000, 3, { from: giver1, $extraGas: 100000 });
|
||||
await liquidPledging.transfer(1, 9, 1000, 3, { from: giver1 });
|
||||
|
||||
const pledge = await liquidPledging.getPledge(10);
|
||||
assert.equal(pledge.amount, 1000);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* eslint-env mocha */
|
||||
/* eslint-disable no-await-in-loop */
|
||||
const TestRPC = require('ethereumjs-testrpc');
|
||||
const TestRPC = require("ganache-cli");
|
||||
const Web3 = require('web3');
|
||||
const chai = require('chai');
|
||||
const liquidpledging = require('../index.js');
|
||||
@ -224,10 +224,10 @@ describe('LiquidPledging test', function () {
|
||||
const p = await liquidPledging.getPledge(5);
|
||||
assert.equal(utils.fromWei(p.amount), 0.05);
|
||||
|
||||
await assertFail(async () => {
|
||||
await liquidPledging.withdraw(5, utils.toWei('0.01'), { from: adminProject1 });
|
||||
await assertFail(
|
||||
liquidPledging.withdraw(5, utils.toWei('0.01'), { from: adminProject1, gas: 4000000 })
|
||||
);
|
||||
});
|
||||
});
|
||||
it('Delegate should send part of this ETH to project2', async () => {
|
||||
await liquidPledging.transfer(2, 5, utils.toWei('0.03'), 4, {from: delegate1});
|
||||
const st = await liquidPledgingState.getState(liquidPledging);
|
||||
@ -279,9 +279,9 @@ describe('LiquidPledging test', function () {
|
||||
await liquidPledging.cancelProject(4, { from: adminProject2 });
|
||||
});
|
||||
it('Should not be able to withdraw it', async () => {
|
||||
await assertFail(async () => {
|
||||
await liquidPledging.withdraw(12, utils.toWei('0.005'), { from: giver1 });
|
||||
});
|
||||
await assertFail(
|
||||
liquidPledging.withdraw(12, utils.toWei('0.005'), { from: giver1, gas: 4000000 })
|
||||
);
|
||||
});
|
||||
it('Should be able to cancel payment', async () => {
|
||||
// bug somewhere which will throw invalid op_code if we don't provide gas or extraGas
|
||||
@ -306,7 +306,7 @@ describe('LiquidPledging test', function () {
|
||||
return '0x' + utils.padLeft(utils.toHex(p.amount).substring(2), 48) + utils.padLeft(utils.toHex(p.id).substring(2), 16);
|
||||
});
|
||||
|
||||
await liquidPledging.mWithdraw(encodedPledges, { from: giver1, $extraGas: 500000 });
|
||||
await liquidPledging.mWithdraw(encodedPledges, { from: giver1 });
|
||||
|
||||
const initialBalance = await web3.eth.getBalance(giver1);
|
||||
await vault.multiConfirm([2, 3, 4, 5, 6]);
|
||||
@ -362,8 +362,8 @@ describe('LiquidPledging test', function () {
|
||||
await liquidPledging.addProject('ProjectLevel19', '', adminProject1, ++nAdmins, 86400, 0, { from: adminProject1 });
|
||||
await liquidPledging.addProject('ProjectLevel20', '', adminProject1, ++nAdmins, 86400, 0, { from: adminProject1 });
|
||||
|
||||
assertFail(async () => {
|
||||
await liquidPledging.addProject('ProjectLevel21', '', adminProject1, ++nAdmins, 86400, 0, { from: adminProject1 });
|
||||
});
|
||||
assertFail(
|
||||
liquidPledging.addProject('ProjectLevel21', '', adminProject1, ++nAdmins, 86400, 0, { from: adminProject1, gas: 4000000 })
|
||||
);
|
||||
})
|
||||
});
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* eslint-env mocha */
|
||||
/* eslint-disable no-await-in-loop */
|
||||
const TestRPC = require('ethereumjs-testrpc');
|
||||
const TestRPC = require("ganache-cli");
|
||||
const Web3 = require('web3');
|
||||
const chai = require('chai');
|
||||
const liquidpledging = require('../index.js');
|
||||
@ -10,7 +10,6 @@ const PledgeAdmins = require('../js/pledgeAdmins');
|
||||
const LiquidPledging = liquidpledging.LiquidPledgingMock;
|
||||
const LiquidPledgingState = liquidpledging.LiquidPledgingState;
|
||||
const LPVault = liquidpledging.LPVault;
|
||||
const assertFail = require('./helpers/assertFail');
|
||||
const assert = chai.assert;
|
||||
|
||||
const printState = async (liquidPledgingState) => {
|
||||
@ -84,25 +83,25 @@ describe('NormalizePledge test', function () {
|
||||
|
||||
it('Should commit pledges if commitTime has passed', async () => {
|
||||
// commitTime 259200
|
||||
await liquidPledging.donate(1, 2, {from: giver1, value: 1000, $extraGas: 50000});
|
||||
await liquidPledging.donate(1, 2, {from: giver1, value: 1000});
|
||||
// commitTime 86400
|
||||
await liquidPledging.donate(1, 3, {from: giver1, value: 1000, $extraGas: 50000});
|
||||
await liquidPledging.donate(1, 3, {from: giver1, value: 1000});
|
||||
// commitTime 0
|
||||
await liquidPledging.donate(6, 3, {from: giver2, value: 1000, $extraGas: 50000});
|
||||
await liquidPledging.donate(6, 3, {from: giver2, value: 1000});
|
||||
|
||||
// set the time
|
||||
const now = Math.floor(new Date().getTime() / 1000);
|
||||
await liquidPledging.setMockedTime(now);
|
||||
|
||||
// delegate to project
|
||||
await liquidPledging.transfer(2, 2, 1000, 4, {from: delegate1, $extraGas: 100000});
|
||||
await liquidPledging.transfer(3, 3, 1000, 4, {from: delegate2, $extraGas: 100000});
|
||||
await liquidPledging.transfer(3, 5, 1000, 4, {from: delegate2, $extraGas: 100000});
|
||||
await liquidPledging.transfer(2, 2, 1000, 4, {from: delegate1});
|
||||
await liquidPledging.transfer(3, 3, 1000, 4, {from: delegate2});
|
||||
await liquidPledging.transfer(3, 5, 1000, 4, {from: delegate2});
|
||||
|
||||
// advance the time
|
||||
await liquidPledging.setMockedTime( now + 100000 );
|
||||
|
||||
await liquidPledging.mNormalizePledge([6, 7, 8], {$extraGas: 100000});
|
||||
await liquidPledging.mNormalizePledge([6, 7, 8]);
|
||||
|
||||
const st = await liquidPledgingState.getState();
|
||||
assert.equal(st.pledges.length, 11);
|
||||
@ -116,13 +115,13 @@ describe('NormalizePledge test', function () {
|
||||
});
|
||||
|
||||
it('Should transfer pledge to oldestPledgeNotCanceled', async () => {
|
||||
await liquidPledging.transfer(4, 10, 1000, 5, {from: adminProject1, $extraGas: 100000});
|
||||
await liquidPledging.transfer(4, 10, 1000, 5, {from: adminProject1});
|
||||
|
||||
// cancel projects
|
||||
await liquidPledging.cancelProject(4, {from: adminProject1});
|
||||
await liquidPledging.cancelProject(5, {from: adminProject2});
|
||||
|
||||
await liquidPledging.mNormalizePledge([9, 11], {$extraGas: 100000});
|
||||
await liquidPledging.mNormalizePledge([9, 11]);
|
||||
|
||||
const st = await liquidPledgingState.getState();
|
||||
assert.equal(st.pledges.length, 12);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* eslint-env mocha */
|
||||
/* eslint-disable no-await-in-loop */
|
||||
const TestRPC = require('ethereumjs-testrpc');
|
||||
const TestRPC = require("ganache-cli");
|
||||
const Web3 = require('web3');
|
||||
const chai = require('chai');
|
||||
const liquidpledging = require('../index.js');
|
||||
@ -52,13 +52,13 @@ describe('Vault test', function () {
|
||||
});
|
||||
|
||||
it('Should deploy Vault contract', async function () {
|
||||
vault = await LPVault.new(web3, accounts[0], accounts[1]);
|
||||
vault = await LPVault.new(web3, escapeHatchCaller, escapeHatchDestination, {from: vaultOwner});
|
||||
const storage = await EternalStorage.new(web3, accounts[0], accounts[1]);
|
||||
|
||||
liquidPledging = await LiquidPledging.new(web3, storage.$address, vault.$address, accounts[0], accounts[0], {gas: 6700000})
|
||||
|
||||
await storage.changeOwnership(liquidPledging.$address);
|
||||
await vault.setLiquidPledging(liquidPledging.$address);
|
||||
await vault.setLiquidPledging(liquidPledging.$address, {from: vaultOwner});
|
||||
|
||||
liquidPledgingState = new LiquidPledgingState(liquidPledging);
|
||||
|
||||
@ -78,14 +78,10 @@ describe('Vault test', function () {
|
||||
|
||||
it('escapeFunds should fail', async function () {
|
||||
// only vaultOwner can escapeFunds
|
||||
await assertFail(async () => {
|
||||
await vault.escapeFunds(0x0, 1000);
|
||||
});
|
||||
await assertFail(vault.escapeFunds(0x0, 1000, {gas: 4000000}));
|
||||
|
||||
// can't send more then the balance
|
||||
await assertFail(async () => {
|
||||
await vault.escapeFunds(0x0, 11000, { from: vaultOwner });
|
||||
});
|
||||
await assertFail(vault.escapeFunds(0x0, 11000, { from: vaultOwner, gas: 4000000 }));
|
||||
});
|
||||
|
||||
it('escapeFunds should send funds to escapeHatchDestination', async function () {
|
||||
@ -96,7 +92,7 @@ describe('Vault test', function () {
|
||||
const vaultBalance = await web3.eth.getBalance(vault.$address);
|
||||
assert.equal(9000, vaultBalance);
|
||||
|
||||
const expected = web3.utils.toBN(preBalance).add(web3.utils.toBN('1000'));
|
||||
const expected = web3.utils.toBN(preBalance).add(web3.utils.toBN('1000')).toString();
|
||||
const postBalance = await web3.eth.getBalance(escapeHatchDestination);
|
||||
|
||||
assert.equal(expected, postBalance);
|
||||
|
@ -1,10 +1,15 @@
|
||||
const chai = require('chai');
|
||||
const assert = chai.assert;
|
||||
|
||||
module.exports = async function(callback) {
|
||||
module.exports = async function(promise) {
|
||||
let web3_error_thrown = false;
|
||||
try {
|
||||
await callback();
|
||||
await promise
|
||||
.then(({ status }) => {
|
||||
if (status === '0x00') {
|
||||
web3_error_thrown = true;
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
if (error.message.includes("invalid opcode") || error.message.includes('revert')) web3_error_thrown = true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user