Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
e58e2f5e
Commit
e58e2f5e
authored
Feb 03, 2015
by
Marek Kotewicz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
jsonrpc.js tests && jsonrpc response validation is more strict
parent
45134de7
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
235 additions
and
10 deletions
+235
-10
ethereum.js
dist/ethereum.js
+8
-3
ethereum.js.map
dist/ethereum.js.map
+3
-3
ethereum.min.js
dist/ethereum.min.js
+1
-1
jsonrpc.js
lib/jsonrpc.js
+6
-2
providermanager.js
lib/providermanager.js
+2
-1
jsonrpc.isValidResponse.js
test/jsonrpc.isValidResponse.js
+128
-0
jsonrpc.toBatchPayload.js
test/jsonrpc.toBatchPayload.js
+47
-0
jsonrpc.toPayload.js
test/jsonrpc.toPayload.js
+40
-0
No files found.
dist/ethereum.js
View file @
e58e2f5e
...
...
@@ -973,9 +973,13 @@ var toPayload = function (method, params) {
};
/// Should be called to check if jsonrpc response is valid
/// @returns true if response
doesn't have error field
/// @returns true if response
is valid, otherwise false
var
isValidResponse
=
function
(
response
)
{
return
response
&&
!
response
.
error
;
return
!!
response
&&
!
response
.
error
&&
response
.
jsonrpc
===
'2.0'
&&
typeof
response
.
id
===
'number'
&&
(
!!
response
.
result
||
typeof
response
.
result
===
'boolean'
);
};
/// Should be called to create batch payload object
...
...
@@ -1051,6 +1055,7 @@ var ProviderManager = function() {
var
result
=
results
[
index
];
if
(
!
jsonrpc
.
isValidResponse
(
result
))
{
console
.
log
(
result
);
return
;
}
...
...
@@ -1083,7 +1088,7 @@ ProviderManager.prototype.send = function(data) {
var
result
=
this
.
provider
.
send
(
payload
);
if
(
!
jsonrpc
.
isValidResponse
(
result
))
{
console
.
log
(
result
.
error
);
console
.
log
(
result
);
return
null
;
}
...
...
dist/ethereum.js.map
View file @
e58e2f5e
This diff is collapsed.
Click to expand it.
dist/ethereum.min.js
View file @
e58e2f5e
This diff is collapsed.
Click to expand it.
lib/jsonrpc.js
View file @
e58e2f5e
...
...
@@ -39,9 +39,13 @@ var toPayload = function (method, params) {
};
/// Should be called to check if jsonrpc response is valid
/// @returns true if response
doesn't have error field
/// @returns true if response
is valid, otherwise false
var
isValidResponse
=
function
(
response
)
{
return
response
&&
!
response
.
error
;
return
!!
response
&&
!
response
.
error
&&
response
.
jsonrpc
===
'2.0'
&&
typeof
response
.
id
===
'number'
&&
(
!!
response
.
result
||
typeof
response
.
result
===
'boolean'
);
};
/// Should be called to create batch payload object
...
...
lib/providermanager.js
View file @
e58e2f5e
...
...
@@ -54,6 +54,7 @@ var ProviderManager = function() {
var
result
=
results
[
index
];
if
(
!
jsonrpc
.
isValidResponse
(
result
))
{
console
.
log
(
result
);
return
;
}
...
...
@@ -86,7 +87,7 @@ ProviderManager.prototype.send = function(data) {
var
result
=
this
.
provider
.
send
(
payload
);
if
(
!
jsonrpc
.
isValidResponse
(
result
))
{
console
.
log
(
result
.
error
);
console
.
log
(
result
);
return
null
;
}
...
...
test/jsonrpc.isValidResponse.js
0 → 100644
View file @
e58e2f5e
var
assert
=
require
(
'assert'
);
var
jsonrpc
=
require
(
'../lib/jsonrpc'
);
describe
(
'jsonrpc'
,
function
()
{
describe
(
'isValidResponse'
,
function
()
{
it
(
'should validate basic jsonrpc response'
,
function
()
{
// given
var
response
=
{
jsonrpc
:
'2.0'
,
id
:
1
,
result
:
[]
};
// when
var
valid
=
jsonrpc
.
isValidResponse
(
response
);
// then
assert
.
equal
(
valid
,
true
);
});
it
(
'should validate basic undefined response'
,
function
()
{
// given
var
response
=
undefined
;
// when
var
valid
=
jsonrpc
.
isValidResponse
(
response
);
// then
assert
.
equal
(
valid
,
false
);
});
it
(
'should validate jsonrpc response without jsonrpc field'
,
function
()
{
// given
var
response
=
{
id
:
1
,
result
:
[]
};
// when
var
valid
=
jsonrpc
.
isValidResponse
(
response
);
// then
assert
.
equal
(
valid
,
false
);
});
it
(
'should validate jsonrpc response with wrong jsonrpc version'
,
function
()
{
// given
var
response
=
{
jsonrpc
:
'1.0'
,
id
:
1
,
result
:
[]
};
// when
var
valid
=
jsonrpc
.
isValidResponse
(
response
);
// then
assert
.
equal
(
valid
,
false
);
});
it
(
'should validate jsonrpc response without id number'
,
function
()
{
// given
var
response
=
{
jsonrpc
:
'2.0'
,
result
:
[]
};
// when
var
valid
=
jsonrpc
.
isValidResponse
(
response
);
// then
assert
.
equal
(
valid
,
false
);
});
it
(
'should validate jsonrpc response with wrong id field'
,
function
()
{
// given
var
response
=
{
jsonrpc
:
'2.0'
,
id
:
'x'
,
result
:
[]
};
// when
var
valid
=
jsonrpc
.
isValidResponse
(
response
);
// then
assert
.
equal
(
valid
,
false
);
});
it
(
'should validate jsonrpc response without result field'
,
function
()
{
// given
var
response
=
{
jsonrpc
:
'2.0'
,
id
:
1
};
// when
var
valid
=
jsonrpc
.
isValidResponse
(
response
);
// then
assert
.
equal
(
valid
,
false
);
});
it
(
'should validate jsonrpc response with result field === false'
,
function
()
{
// given
var
response
=
{
jsonrpc
:
'2.0'
,
id
:
1
,
result
:
false
};
// when
var
valid
=
jsonrpc
.
isValidResponse
(
response
);
// then
assert
.
equal
(
valid
,
true
);
});
});
});
test/jsonrpc.toBatchPayload.js
0 → 100644
View file @
e58e2f5e
var
assert
=
require
(
'assert'
);
var
jsonrpc
=
require
(
'../lib/jsonrpc'
);
describe
(
'jsonrpc'
,
function
()
{
describe
(
'toBatchPayload'
,
function
()
{
it
(
'should create basic batch payload'
,
function
()
{
// given
var
messages
=
[{
method
:
'helloworld'
},
{
method
:
'test2'
,
params
:
[
1
]
}];
// when
var
payload
=
jsonrpc
.
toBatchPayload
(
messages
);
// then
assert
.
equal
(
payload
instanceof
Array
,
true
);
assert
.
equal
(
payload
.
length
,
2
);
assert
.
equal
(
payload
[
0
].
jsonrpc
,
'2.0'
);
assert
.
equal
(
payload
[
1
].
jsonrpc
,
'2.0'
);
assert
.
equal
(
payload
[
0
].
method
,
'helloworld'
);
assert
.
equal
(
payload
[
1
].
method
,
'test2'
);
assert
.
equal
(
payload
[
0
].
params
instanceof
Array
,
true
);
assert
.
equal
(
payload
[
1
].
params
.
length
,
1
);
assert
.
equal
(
payload
[
1
].
params
[
0
],
1
);
assert
.
equal
(
typeof
payload
[
0
].
id
,
'number'
);
assert
.
equal
(
typeof
payload
[
1
].
id
,
'number'
);
assert
.
equal
(
payload
[
0
].
id
+
1
,
payload
[
1
].
id
);
});
it
(
'should create batch payload for empty input array'
,
function
()
{
// given
var
messages
=
[];
// when
var
payload
=
jsonrpc
.
toBatchPayload
(
messages
);
// then
assert
.
equal
(
payload
instanceof
Array
,
true
);
assert
.
equal
(
payload
.
length
,
0
);
});
});
});
test/jsonrpc.toPayload.js
0 → 100644
View file @
e58e2f5e
var
assert
=
require
(
'assert'
);
var
jsonrpc
=
require
(
'../lib/jsonrpc'
);
describe
(
'jsonrpc'
,
function
()
{
describe
(
'toPayload'
,
function
()
{
it
(
'should create basic payload'
,
function
()
{
// given
var
method
=
'helloworld'
;
// when
var
payload
=
jsonrpc
.
toPayload
(
method
);
// then
assert
.
equal
(
payload
.
jsonrpc
,
'2.0'
);
assert
.
equal
(
payload
.
method
,
method
);
assert
.
equal
(
payload
.
params
instanceof
Array
,
true
);
assert
.
equal
(
payload
.
params
.
length
,
0
);
assert
.
equal
(
typeof
payload
.
id
,
'number'
);
});
it
(
'should create payload with params'
,
function
()
{
// given
var
method
=
'helloworld1'
;
var
params
=
[
123
,
'test'
];
// when
var
payload
=
jsonrpc
.
toPayload
(
method
,
params
);
// then
assert
.
equal
(
payload
.
jsonrpc
,
'2.0'
);
assert
.
equal
(
payload
.
method
,
method
);
assert
.
equal
(
payload
.
params
.
length
,
2
);
assert
.
equal
(
payload
.
params
[
0
],
params
[
0
]);
assert
.
equal
(
payload
.
params
[
1
],
params
[
1
]);
assert
.
equal
(
typeof
payload
.
id
,
'number'
);
});
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment