diff options
Diffstat (limited to 'helpers/FakeHttpProvider.js')
-rw-r--r-- | helpers/FakeHttpProvider.js | 68 |
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; + |