Skip to content

Commit

Permalink
Merge branch '1.0' of https://github.com/ethereum/web3.js into featur…
Browse files Browse the repository at this point in the history
…e/exactVersionDependencies
  • Loading branch information
dacarley committed Oct 24, 2017
2 parents 4c89f47 + edd801b commit b8bcd14
Show file tree
Hide file tree
Showing 9 changed files with 145 additions and 8 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ bower_components
/bower
.idea/
.npm/
.vscode/
2 changes: 1 addition & 1 deletion dist/web3.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/web3-bzz/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"main": "src/index.js",
"dependencies": {
"got": "7.1.0",
"swarm-js": "0.1.35",
"swarm-js": "0.1.37",
"underscore": "1.8.3"
}
}
7 changes: 7 additions & 0 deletions packages/web3-bzz/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,13 @@ Bzz.prototype.setProvider = function(provider) {
this.currentProvider = provider;
} else {
this.currentProvider = null;

var noProviderError = new Error('No provider set, please set one using bzz.setProvider().');

this.download = this.upload = this.isAvailable = function(){
throw noProviderError;
};

return false;
}

Expand Down
4 changes: 4 additions & 0 deletions packages/web3-eth-abi/src/formatters.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@ var formatInputBytes = function (value) {
throw new Error('Given parameter bytes has an invalid length: "'+ value + '"');
}

if (result.length > 64) {
throw new Error('Given parameter bytes is too long: "' + value + '"');
}

var l = Math.floor((result.length + 63) / 64);
result = utils.padRight(result, l * 64);
return new SolidityParam(result);
Expand Down
2 changes: 1 addition & 1 deletion packages/web3/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ declare class Web3 {
Shh: new (provider: t.Provider) => t.Shh
Bzz: new (provider: t.Provider) => t.Bzz
}
constructor(provider: t.Provider)
constructor(provider: t.Provider | string)
version: string
BatchRequest: new () => t.BatchRequest
extend(methods: any): any // TODO
Expand Down
23 changes: 22 additions & 1 deletion packages/web3/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,22 @@ export declare interface TransactionReceipt {
logs?: Array<Log>
events?: {
[eventName: string]: EventLog
},
status: string
}
export declare interface EncodedTransaction {
raw: string,
tx: {
nonce: string,
gasPrice: string,
gas: string,
to: string,
value: string,
input: string,
v: string,
r: string,
s: string,
hash: string
}
}
export declare interface BlockHeader {
Expand Down Expand Up @@ -265,6 +281,10 @@ export declare interface Contract {
options: {
address: string
jsonInterface: ABIDefinition[]
data: string
from: string
gasPrice: string
gas: number
}
methods: {
[fnName: string]: (...args) => TransactionObject<any>
Expand Down Expand Up @@ -313,7 +333,7 @@ export declare class Eth {
}
accounts: {
'new'(entropy?: string): Account
privateToAccount(privKey: string): Account
privateKeyToAccount(privKey: string): Account
publicToAddress(key: string): string
signTransaction(tx: Tx, privateKey: string, returnSignature?: boolean, cb?: (err: Error, result: string | Signature) => void): Promise<string> | Signature
recoverTransaction(signature: string | Signature): string
Expand Down Expand Up @@ -376,6 +396,7 @@ export declare class Eth {
isSyncing(cb?: Callback<boolean>): Promise<boolean>
net: Net
personal: Personal
signTransaction(tx: Tx, address?: string, cb?: Callback<string>): Promise<EncodedTransaction>
sendSignedTransaction(data: string, cb?: Callback<string>): PromiEvent<TransactionReceipt>
sendTransaction(tx: Tx, cb?: Callback<string>): PromiEvent<TransactionReceipt>
submitWork(nonce: string, powHash: string, digest: string, cb?: Callback<boolean>): Promise<boolean>
Expand Down
4 changes: 0 additions & 4 deletions test/abi.encodeParameter.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

108 changes: 108 additions & 0 deletions test/contract.encodeABI.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
var chai = require('chai');
var assert = chai.assert;
var Eth = require('../packages/web3-eth');
var sha3 = require('../packages/web3-utils').sha3;
var FakeIpcProvider = require('./helpers/FakeIpcProvider');
var FakeHttpProvider = require('./helpers/FakeHttpProvider');
var Promise = require('bluebird');

var abi = [
{
constant: true,
inputs: [
{
name: "a",
type: "bytes32"
},
{
name: "b",
type: "bytes32"
}
],
name: "takesTwoBytes32",
outputs: [
{
name: "",
type: "bytes32"
}
],
payable: false,
type: "function",
stateMutability: "view"
}
];

describe('contract', function () {
describe('method.encodeABI', function () {
it('should handle bytes32 arrays that only contain 1 byte', function () {
var provider = new FakeIpcProvider();
var eth = new Eth(provider);

var contract = new eth.Contract(abi);

var result = contract.methods.takesTwoBytes32('0x'.concat('a'.repeat(2)), '0x'.concat('b'.repeat(2))).encodeABI();

assert.equal(result, [
'0x1323517e',
'aa00000000000000000000000000000000000000000000000000000000000000',
'bb00000000000000000000000000000000000000000000000000000000000000'
].join(''));
});

it('should handle bytes32 arrays that are short 1 byte', function () {
var provider = new FakeIpcProvider();
var eth = new Eth(provider);

var contract = new eth.Contract(abi);

var result = contract.methods.takesTwoBytes32('0x'.concat('a'.repeat(62)), '0x'.concat('b'.repeat(62))).encodeABI();

assert.equal(result, [
'0x1323517e',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00',
'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb00'
].join(''));
});

it('should throw an exception on bytes32 arrays that have an invalid length', function () {
var provider = new FakeIpcProvider();
var eth = new Eth(provider);

var contract = new eth.Contract(abi);

var test = function () {
contract.methods.takesTwoBytes32('0x'.concat('a'.repeat(63)), '0x'.concat('b'.repeat(63))).encodeABI();
}

assert.throws(test, 'Given parameter bytes has an invalid length: "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"');
});

it('should handle bytes32 arrays that are full', function () {
var provider = new FakeIpcProvider();
var eth = new Eth(provider);

var contract = new eth.Contract(abi);

var result = contract.methods.takesTwoBytes32('0x'.concat('a'.repeat(64)), '0x'.concat('b'.repeat(64))).encodeABI();

assert.equal(result, [
'0x1323517e',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
].join(''));
});

it('should throw an exception on bytes32 arrays that are too long', function () {
var provider = new FakeIpcProvider();
var eth = new Eth(provider);

var contract = new eth.Contract(abi);

var test = function() {
contract.methods.takesTwoBytes32('0x'.concat('a'.repeat(66)), '0x'.concat('b'.repeat(66))).encodeABI();
}

assert.throws(test, 'Given parameter bytes is too long: "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"');
});
});
});

0 comments on commit b8bcd14

Please sign in to comment.