aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMarek Kotewicz <marek.kotewicz@gmail.com>2015-02-04 06:00:02 +0800
committerMarek Kotewicz <marek.kotewicz@gmail.com>2015-02-04 06:00:02 +0800
commite58e2f5ee466f054405b3e90a67720254ea17ead (patch)
tree292927f3c2b7ac548376b0d42aa5e6ac67ec85c0 /test
parent45134de7401b58f0118deb16bf0644495715fbdb (diff)
downloadgo-tangerine-e58e2f5ee466f054405b3e90a67720254ea17ead.tar
go-tangerine-e58e2f5ee466f054405b3e90a67720254ea17ead.tar.gz
go-tangerine-e58e2f5ee466f054405b3e90a67720254ea17ead.tar.bz2
go-tangerine-e58e2f5ee466f054405b3e90a67720254ea17ead.tar.lz
go-tangerine-e58e2f5ee466f054405b3e90a67720254ea17ead.tar.xz
go-tangerine-e58e2f5ee466f054405b3e90a67720254ea17ead.tar.zst
go-tangerine-e58e2f5ee466f054405b3e90a67720254ea17ead.zip
jsonrpc.js tests && jsonrpc response validation is more strict
Diffstat (limited to 'test')
-rw-r--r--test/jsonrpc.isValidResponse.js128
-rw-r--r--test/jsonrpc.toBatchPayload.js47
-rw-r--r--test/jsonrpc.toPayload.js40
3 files changed, 215 insertions, 0 deletions
diff --git a/test/jsonrpc.isValidResponse.js b/test/jsonrpc.isValidResponse.js
new file mode 100644
index 000000000..2fe200496
--- /dev/null
+++ b/test/jsonrpc.isValidResponse.js
@@ -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);
+ });
+
+ });
+});
diff --git a/test/jsonrpc.toBatchPayload.js b/test/jsonrpc.toBatchPayload.js
new file mode 100644
index 000000000..1c1aafebb
--- /dev/null
+++ b/test/jsonrpc.toBatchPayload.js
@@ -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);
+ });
+ });
+});
diff --git a/test/jsonrpc.toPayload.js b/test/jsonrpc.toPayload.js
new file mode 100644
index 000000000..6d6f003bb
--- /dev/null
+++ b/test/jsonrpc.toPayload.js
@@ -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');
+ });
+ });
+});