From 513632299f6fa95676c18a0ca74d4c69358fea31 Mon Sep 17 00:00:00 2001 From: Ivan Tivonenko Date: Fri, 21 Aug 2015 05:02:05 +0300 Subject: [PATCH] Add schema for RippleAPI constructor options --- src/api/common/schemas/remote-options.json | 10 ++++++++++ src/api/common/validate.js | 1 + src/api/index.js | 1 + test/api-test.js | 14 ++++++++++++++ 4 files changed, 26 insertions(+) create mode 100644 src/api/common/schemas/remote-options.json diff --git a/src/api/common/schemas/remote-options.json b/src/api/common/schemas/remote-options.json new file mode 100644 index 00000000..1689863f --- /dev/null +++ b/src/api/common/schemas/remote-options.json @@ -0,0 +1,10 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "remote-options", + "type": "object", + "properties": { + "trace": {"type": "boolean"}, + "servers": {"type": "array", "items": {"type": "string", "format": "uri"}} + }, + "additionalProperties": false +} diff --git a/src/api/common/validate.js b/src/api/common/validate.js index 34d26693..0cb9b7c1 100644 --- a/src/api/common/validate.js +++ b/src/api/common/validate.js @@ -76,5 +76,6 @@ module.exports = { getTransactionOptions: _.partial(validateOptions, 'transaction-options'), getLedgerOptions: _.partial(validateOptions, 'ledger-options'), options: _.partial(validateOptions, 'options'), + remoteOptions: _.partial(schemaValidate, 'remote-options'), instructions: _.partial(schemaValidate, 'instructions') }; diff --git a/src/api/index.js b/src/api/index.js index f88951cf..a1d6247d 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -34,6 +34,7 @@ const getLedger = require('./ledger/ledger'); const isValidAddress = common.isValidAddress; function RippleAPI(options: {}) { + common.validate.remoteOptions(options); const _options = _.assign({}, options, {automatic_resubmission: false}); this.remote = new common.core.Remote(_options); } diff --git a/test/api-test.js b/test/api-test.js index a8a50207..53611739 100644 --- a/test/api-test.js +++ b/test/api-test.js @@ -831,4 +831,18 @@ describe('RippleAPI - offline', function() { const api = new RippleAPI({servers: ['wss://s1.ripple.com']}); }); /* eslint-enable no-unused-vars */ + it('RippleAPI invalid options', function() { + assert.throws(() => new RippleAPI({invalid: true})); + }); + + it('RippleAPI valid options', function() { + const api = new RippleAPI({trace: true, servers: ['wss://s:1']}); + assert(api.remote.trace); + assert.deepEqual(api.remote.servers, ['wss://s:1']); + }); + + it('RippleAPI invalid server uri', function() { + assert.throws(() => new RippleAPI({servers: ['wss//s:1']})); + }); + });