aboutsummaryrefslogtreecommitdiffstats
path: root/helpers/FakeHttpProvider.js
diff options
context:
space:
mode:
Diffstat (limited to 'helpers/FakeHttpProvider.js')
-rw-r--r--helpers/FakeHttpProvider.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/helpers/FakeHttpProvider.js b/helpers/FakeHttpProvider.js
new file mode 100644
index 00000000..20d1f258
--- /dev/null
+++ b/helpers/FakeHttpProvider.js
@@ -0,0 +1,68 @@
+var chai = require('chai');
+var assert = require('assert');
+var utils = require('../../lib/utils/utils');
+
+var getResponseStub = function () {
+ return {
+ jsonrpc: '2.0',
+ id: 1,
+ result: 0
+ };
+};
+
+var FakeHttpProvider = function () {
+ this.response = getResponseStub();
+ this.error = null;
+ this.validation = null;
+};
+
+FakeHttpProvider.prototype.send = function (payload) {
+ assert.equal(utils.isArray(payload) || utils.isObject(payload), true);
+ // TODO: validate jsonrpc request
+ if (this.error) {
+ throw this.error;
+ }
+ if (this.validation) {
+ // imitate plain json object
+ this.validation(JSON.parse(JSON.stringify(payload)));
+ }
+ return this.response;
+};
+
+FakeHttpProvider.prototype.sendAsync = function (payload, callback) {
+ assert.equal(utils.isArray(payload) || utils.isObject(payload), true);
+ assert.equal(utils.isFunction(callback), true);
+ if (this.validation) {
+ // imitate plain json object
+ this.validation(JSON.parse(JSON.stringify(payload)), callback);
+ }
+ callback(this.error, this.response);
+};
+
+FakeHttpProvider.prototype.injectResponse = function (response) {
+ this.response = response;
+};
+
+FakeHttpProvider.prototype.injectResult = function (result) {
+ this.response = getResponseStub();
+ this.response.result = result;
+};
+
+FakeHttpProvider.prototype.injectBatchResults = function (results) {
+ this.response = results.map(function (r) {
+ var response = getResponseStub();
+ response.result = r;
+ return response;
+ });
+};
+
+FakeHttpProvider.prototype.injectError = function (error) {
+ this.error = error;
+};
+
+FakeHttpProvider.prototype.injectValidation = function (callback) {
+ this.validation = callback;
+};
+
+module.exports = FakeHttpProvider;
+