Merge pull request #517 from darkdarkdragon/develop-RLJS-463

Add schema for RippleAPI constructor options
This commit is contained in:
Chris Clark
2015-08-24 11:39:21 -07:00
4 changed files with 26 additions and 0 deletions

View File

@@ -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
}

View File

@@ -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')
};

View File

@@ -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);
}

View File

@@ -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']}));
});
});