(owners, threshold, signers, done)
| 64 | } |
| 65 | |
| 66 | let executeSendSuccess = async function(owners, threshold, signers, done) { |
| 67 | |
| 68 | let multisig = await SimpleMultiSig.new(threshold, owners, CHAINID, {from: accounts[0]}) |
| 69 | let randomAddr = web3.sha3(Math.random().toString()).slice(0,42) |
| 70 | let executor = accounts[0] |
| 71 | let msgSender = accounts[0] |
| 72 | |
| 73 | // Receive funds |
| 74 | await web3SendTransaction({from: accounts[0], to: multisig.address, value: web3.toWei(web3.toBigNumber(0.1), 'ether')}) |
| 75 | |
| 76 | let nonce = await multisig.nonce.call() |
| 77 | assert.equal(nonce.toNumber(), 0) |
| 78 | |
| 79 | let bal = await web3GetBalance(multisig.address) |
| 80 | assert.equal(bal, web3.toWei(0.1, 'ether')) |
| 81 | |
| 82 | // check that owners are stored correctly |
| 83 | for (var i=0; i<owners.length; i++) { |
| 84 | let ownerFromContract = await multisig.ownersArr.call(i) |
| 85 | assert.equal(owners[i], ownerFromContract) |
| 86 | } |
| 87 | |
| 88 | let value = web3.toWei(web3.toBigNumber(0.01), 'ether') |
| 89 | |
| 90 | let sigs = createSigs(signers, multisig.address, nonce, randomAddr, value, '', executor, 21000) |
| 91 | |
| 92 | await multisig.execute(sigs.sigV, sigs.sigR, sigs.sigS, randomAddr, value, '', executor, 21000, {from: msgSender, gasLimit: 1000000}) |
| 93 | |
| 94 | // Check funds sent |
| 95 | bal = await web3GetBalance(randomAddr) |
| 96 | assert.equal(bal.toString(), value.toString()) |
| 97 | |
| 98 | // Check nonce updated |
| 99 | nonce = await multisig.nonce.call() |
| 100 | assert.equal(nonce.toNumber(), 1) |
| 101 | |
| 102 | // Send again |
| 103 | // Check that it succeeds with executor = Zero address |
| 104 | sigs = createSigs(signers, multisig.address, nonce, randomAddr, value, '', ZEROADDR, 21000) |
| 105 | await multisig.execute(sigs.sigV, sigs.sigR, sigs.sigS, randomAddr, value, '', ZEROADDR, 21000, {from: msgSender, gasLimit: 1000000}) |
| 106 | |
| 107 | // Check funds |
| 108 | bal = await web3GetBalance(randomAddr) |
| 109 | assert.equal(bal.toString(), (value*2).toString()) |
| 110 | |
| 111 | // Check nonce updated |
| 112 | nonce = await multisig.nonce.call() |
| 113 | assert.equal(nonce.toNumber(), 2) |
| 114 | |
| 115 | // Test contract interactions |
| 116 | let reg = await TestRegistry.new({from: accounts[0]}) |
| 117 | |
| 118 | let number = 12345 |
| 119 | let data = lightwallet.txutils._encodeFunctionTxData('register', ['uint256'], [number]) |
| 120 | |
| 121 | sigs = createSigs(signers, multisig.address, nonce, reg.address, value, data, executor, 100000) |
| 122 | await multisig.execute(sigs.sigV, sigs.sigR, sigs.sigS, reg.address, value, data, executor, 100000, {from: msgSender, gasLimit: 1000000}) |
| 123 |
no test coverage detected