diff options
Diffstat (limited to 'contract.js')
-rw-r--r-- | contract.js | 434 |
1 files changed, 0 insertions, 434 deletions
diff --git a/contract.js b/contract.js deleted file mode 100644 index 2632575f..00000000 --- a/contract.js +++ /dev/null @@ -1,434 +0,0 @@ -var chai = require('chai'); -var assert = chai.assert; -var web3 = require('../index'); -var FakeHttpProvider = require('./helpers/FakeHttpProvider'); -var FakeHttpProvider2 = require('./helpers/FakeHttpProvider2'); -var utils = require('../lib/utils/utils'); -var BigNumber = require('bignumber.js'); -var sha3 = require('../lib/utils/sha3'); - -var desc = [{ - "name": "balance(address)", - "type": "function", - "inputs": [{ - "name": "who", - "type": "address" - }], - "constant": true, - "outputs": [{ - "name": "value", - "type": "uint256" - }] -}, { - "name": "send(address,uint256)", - "type": "function", - "inputs": [{ - "name": "to", - "type": "address" - }, { - "name": "value", - "type": "uint256" - }], - "outputs": [] -}, { - "name": "testArr(int[])", - "type": "function", - "inputs": [{ - "name": "value", - "type": "int[]" - }], - "constant": true, - "outputs": [{ - "name": "d", - "type": "int" - }] -}, { - "name":"Changed", - "type":"event", - "inputs": [ - {"name":"from","type":"address","indexed":true}, - {"name":"amount","type":"uint256","indexed":true}, - {"name":"t1","type":"uint256","indexed":false}, - {"name":"t2","type":"uint256","indexed":false} - ], -}]; - -var address = '0x1234567890123456789012345678901234567890'; - -describe('web3.eth.contract', function () { - describe('event', function () { - it('should create event filter', function (done) { - var provider = new FakeHttpProvider(); - web3.setProvider(provider); - web3.reset(); // reset different polls - var signature = 'Changed(address,uint256,uint256,uint256)'; - var step = 0; - provider.injectValidation(function (payload) { - if (step === 0) { - step = 1; - provider.injectResult('0x3'); - assert.equal(payload.jsonrpc, '2.0'); - assert.equal(payload.method, 'eth_newFilter'); - assert.deepEqual(payload.params[0], { - topics: [ - '0x' + sha3(signature), - '0x0000000000000000000000001234567890123456789012345678901234567890', - null - ], - address: '0x1234567890123456789012345678901234567890' - }); - } else if (step === 1) { - step = 2; - provider.injectResult([{ - address: address, - topics: [ - '0x' + sha3(signature), - '0x0000000000000000000000001234567890123456789012345678901234567890', - '0x0000000000000000000000000000000000000000000000000000000000000001' - ], - number: 2, - data: '0x0000000000000000000000000000000000000000000000000000000000000001' + - '0000000000000000000000000000000000000000000000000000000000000008' - }]); - assert.equal(payload.jsonrpc, '2.0'); - assert.equal(payload.method, 'eth_getFilterLogs'); - } else if (step === 2 && utils.isArray(payload)) { - provider.injectBatchResults([[{ - address: address, - topics: [ - '0x' + sha3(signature), - '0x0000000000000000000000001234567890123456789012345678901234567890', - '0x0000000000000000000000000000000000000000000000000000000000000001' - ], - number: 2, - data: '0x0000000000000000000000000000000000000000000000000000000000000001' + - '0000000000000000000000000000000000000000000000000000000000000008' - }]]); - var r = payload.filter(function (p) { - return p.jsonrpc === '2.0' && p.method === 'eth_getFilterChanges' && p.params[0] === '0x3'; - }); - assert.equal(r.length > 0, true); - } - }); - - var contract = web3.eth.contract(desc).at(address); - - var res = 0; - var event = contract.Changed({from: address}); - event.watch(function(err, result) { - assert.equal(result.args.from, address); - assert.equal(result.args.amount, 1); - assert.equal(result.args.t1, 1); - assert.equal(result.args.t2, 8); - res++; - if (res === 2) { - done(); - } - }); - }); - - it('should call constant function', function () { - var provider = new FakeHttpProvider(); - web3.setProvider(provider); - web3.reset(); - provider.injectResult('0x0000000000000000000000000000000000000000000000000000000000000032'); - var signature = 'balance(address)' - var address = '0x1234567890123456789012345678901234567890'; - - provider.injectValidation(function (payload) { - assert.equal(payload.method, 'eth_call'); - assert.deepEqual(payload.params, [{ - data: '0x' + sha3(signature).slice(0, 8) + '0000000000000000000000001234567890123456789012345678901234567890', - to: address - }, 'latest']); - }); - - var contract = web3.eth.contract(desc).at(address); - - var r = contract.balance(address); - assert.deepEqual(new BigNumber(0x32), r); - }); - - it('should call constant function with default block', function () { - var provider = new FakeHttpProvider(); - web3.setProvider(provider); - web3.reset(); - provider.injectResult('0x0000000000000000000000000000000000000000000000000000000000000032'); - var signature = 'balance(address)' - var address = '0x1234567890123456789012345678901234567890'; - - provider.injectValidation(function (payload) { - assert.equal(payload.method, 'eth_call'); - assert.deepEqual(payload.params, [{ - data: '0x' + sha3(signature).slice(0, 8) + '0000000000000000000000001234567890123456789012345678901234567890', - to: address - }, '0xb']); - }); - - var contract = web3.eth.contract(desc).at(address); - - var r = contract.balance(address, 11); - assert.deepEqual(new BigNumber(0x32), r); - }); - - it('should sendTransaction to contract function', function () { - var provider = new FakeHttpProvider(); - web3.setProvider(provider); - web3.reset(); - var signature = 'send(address,uint256)'; - var address = '0x1234567890123456789012345678901234567890'; - provider.injectValidation(function (payload) { - assert.equal(payload.method, 'eth_sendTransaction'); - assert.deepEqual(payload.params, [{ - data: '0x' + sha3(signature).slice(0, 8) + - '0000000000000000000000001234567890123456789012345678901234567890' + - '0000000000000000000000000000000000000000000000000000000000000011' , - to: address - }]); - }); - - var contract = web3.eth.contract(desc).at(address); - - contract.send(address, 17); - }); - - it('should make a call with optional params', function () { - - var provider = new FakeHttpProvider(); - web3.setProvider(provider); - web3.reset(); - provider.injectResult('0x0000000000000000000000000000000000000000000000000000000000000032'); - var signature = 'balance(address)'; - var address = '0x1234567890123456789012345678901234567890'; - provider.injectValidation(function (payload) { - assert.equal(payload.method, 'eth_call'); - assert.deepEqual(payload.params, [{ - data: '0x' + sha3(signature).slice(0, 8) + '0000000000000000000000001234567890123456789012345678901234567890', - to: address, - from: address, - gas: '0xc350' - }, 'latest']); - }); - - var contract = web3.eth.contract(desc).at(address); - - var r = contract.balance(address, {from: address, gas: 50000}); - assert.deepEqual(new BigNumber(0x32), r); - - }); - - it('should explicitly make a call with optional params', function () { - - var provider = new FakeHttpProvider(); - web3.setProvider(provider); - web3.reset(); - provider.injectResult('0x0000000000000000000000000000000000000000000000000000000000000032'); - var signature = 'balance(address)'; - var address = '0x1234567890123456789012345678901234567890'; - provider.injectValidation(function (payload) { - assert.equal(payload.method, 'eth_call'); - assert.deepEqual(payload.params, [{ - data: '0x' + sha3(signature).slice(0, 8) + '0000000000000000000000001234567890123456789012345678901234567890', - to: address, - from: address, - gas: '0xc350' - }, 'latest']); - }); - - var contract = web3.eth.contract(desc).at(address); - - var r = contract.balance.call(address, {from: address, gas: 50000}); - assert.deepEqual(new BigNumber(0x32), r); - - }); - - it('should explicitly make a call with optional params and defaultBlock', function () { - - var provider = new FakeHttpProvider(); - web3.setProvider(provider); - web3.reset(); - provider.injectResult('0x0000000000000000000000000000000000000000000000000000000000000032'); - var signature = 'balance(address)'; - var address = '0x1234567890123456789012345678901234567890'; - provider.injectValidation(function (payload) { - assert.equal(payload.method, 'eth_call'); - assert.deepEqual(payload.params, [{ - data: '0x' + sha3(signature).slice(0, 8) + '0000000000000000000000001234567890123456789012345678901234567890', - to: address, - from: address, - gas: '0xc350' - }, '0xb']); - }); - - var contract = web3.eth.contract(desc).at(address); - - var r = contract.balance.call(address, {from: address, gas: 50000}, 11); - assert.deepEqual(new BigNumber(0x32), r); - - }); - - it('should sendTransaction with optional params', function () { - var provider = new FakeHttpProvider(); - web3.setProvider(provider); - web3.reset(); - var signature = 'send(address,uint256)'; - var address = '0x1234567890123456789012345678901234567890'; - provider.injectValidation(function (payload) { - assert.equal(payload.method, 'eth_sendTransaction'); - assert.deepEqual(payload.params, [{ - data: '0x' + sha3(signature).slice(0, 8) + - '0000000000000000000000001234567890123456789012345678901234567890' + - '0000000000000000000000000000000000000000000000000000000000000011' , - to: address, - from: address, - gas: '0xc350', - gasPrice: '0xbb8', - value: '0x2710' - }]); - }); - - var contract = web3.eth.contract(desc).at(address); - - contract.send(address, 17, {from: address, gas: 50000, gasPrice: 3000, value: 10000}); - }); - - it('should explicitly sendTransaction with optional params', function () { - var provider = new FakeHttpProvider(); - web3.setProvider(provider); - web3.reset(); - var signature = 'send(address,uint256)'; - var address = '0x1234567890123456789012345678901234567890'; - provider.injectValidation(function (payload) { - assert.equal(payload.method, 'eth_sendTransaction'); - assert.deepEqual(payload.params, [{ - data: '0x' + sha3(signature).slice(0, 8) + - '0000000000000000000000001234567890123456789012345678901234567890' + - '0000000000000000000000000000000000000000000000000000000000000011' , - to: address, - from: address, - gas: '0xc350', - gasPrice: '0xbb8', - value: '0x2710' - }]); - }); - - var contract = web3.eth.contract(desc).at(address); - - contract.send.sendTransaction(address, 17, {from: address, gas: 50000, gasPrice: 3000, value: 10000}); - }); - - it('should explicitly sendTransaction with optional params and call callback without error', function (done) { - var provider = new FakeHttpProvider(); - web3.setProvider(provider); - web3.reset(); - var address = '0x1234567890123456789012345678901234567890'; - var signature = 'send(address,uint256)'; - provider.injectValidation(function (payload) { - assert.equal(payload.method, 'eth_sendTransaction'); - assert.deepEqual(payload.params, [{ - data: '0x' + sha3(signature).slice(0, 8) + - '0000000000000000000000001234567890123456789012345678901234567890' + - '0000000000000000000000000000000000000000000000000000000000000011' , - to: address, - from: address, - gas: '0xc350', - gasPrice: '0xbb8', - value: '0x2710' - }]); - }); - - var contract = web3.eth.contract(desc).at(address); - - contract.send.sendTransaction(address, 17, {from: address, gas: 50000, gasPrice: 3000, value: 10000}, function (err) { - assert.equal(err, null); - done(); - }); - }); - - it('should explicitly estimateGas with optional params', function () { - var provider = new FakeHttpProvider(); - web3.setProvider(provider); - web3.reset(); - var signature = 'send(address,uint256)'; - var address = '0x1234567890123456789012345678901234567890'; - provider.injectValidation(function (payload) { - assert.equal(payload.method, 'eth_estimateGas'); - assert.deepEqual(payload.params, [{ - data: '0x' + sha3(signature).slice(0, 8) + - '0000000000000000000000001234567890123456789012345678901234567890' + - '0000000000000000000000000000000000000000000000000000000000000011' , - to: address, - from: address, - gas: '0xc350', - gasPrice: '0xbb8', - value: '0x2710' - }]); - }); - - var contract = web3.eth.contract(desc).at(address); - - contract.send.estimateGas(address, 17, {from: address, gas: 50000, gasPrice: 3000, value: 10000}); - }); - - it('should call testArr method and properly parse result', function () { - var provider = new FakeHttpProvider2(); - web3.setProvider(provider); - web3.reset(); - var signature = 'testArr(int[])'; - var address = '0x1234567890123456789012345678901234567890'; - provider.injectResultList([{ - result: '0x0000000000000000000000000000000000000000000000000000000000000005' - }]); - - provider.injectValidation(function (payload) { - assert.equal(payload.method, 'eth_call'); - assert.deepEqual(payload.params, [{ - data: '0x' + sha3(signature).slice(0, 8) + - '0000000000000000000000000000000000000000000000000000000000000020' + - '0000000000000000000000000000000000000000000000000000000000000001' + - '0000000000000000000000000000000000000000000000000000000000000003', - to: address - }, - 'latest' - ]); - }); - - var contract = web3.eth.contract(desc).at(address); - var result = contract.testArr([3]); - - assert.deepEqual(new BigNumber(5), result); - }); - - it('should call testArr method, properly parse result and return the result async', function (done) { - var provider = new FakeHttpProvider2(); - web3.setProvider(provider); - web3.reset(); - var signature = 'testArr(int[])'; - var address = '0x1234567890123456789012345678901234567890'; - provider.injectResultList([{ - result: '0x0000000000000000000000000000000000000000000000000000000000000005' - }]); - provider.injectValidation(function (payload) { - assert.equal(payload.method, 'eth_call'); - assert.deepEqual(payload.params, [{ - data: '0x' + sha3(signature).slice(0, 8) + - '0000000000000000000000000000000000000000000000000000000000000020' + - '0000000000000000000000000000000000000000000000000000000000000001' + - '0000000000000000000000000000000000000000000000000000000000000003', - to: address - }, - 'latest' - ]); - }); - - var contract = web3.eth.contract(desc).at(address); - - contract.testArr([3], function (err, result) { - assert.deepEqual(new BigNumber(5), result); - done(); - }); - - }); - }); -}); - |