jsonrpc.js tests && jsonrpc response validation is more strict
This commit is contained in:
1 parent
45134de740
commit
e58e2f5ee4
8 files changed
+235
-10
No files matched your search
@@ -0,0 +1,128 @@
|
||||
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);
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,47 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,40 @@
|
||||
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');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user