From 4e30b9b2fa750725dd8c5ccc12048b1035540ec6 Mon Sep 17 00:00:00 2001 From: Brandon Wilson Date: Mon, 2 Jul 2018 18:27:03 -0500 Subject: [PATCH] Require threshold and weights in signers settings (#909) Fixes #908 --- src/common/schemas/objects/settings.json | 4 +++- test/api-test.js | 16 +++++++++++++++- test/fixtures/requests/index.js | 6 +++++- .../prepare-settings-signers-no-threshold.json | 18 ++++++++++++++++++ .../prepare-settings-signers-no-weights.json | 5 +++++ 5 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/requests/prepare-settings-signers-no-threshold.json create mode 100644 test/fixtures/requests/prepare-settings-signers-no-weights.json diff --git a/src/common/schemas/objects/settings.json b/src/common/schemas/objects/settings.json index 0b3f3cf6..1f6b6c87 100644 --- a/src/common/schemas/objects/settings.json +++ b/src/common/schemas/objects/settings.json @@ -93,7 +93,9 @@ "minItems": 1, "maxItems": 8 } - } + }, + "required": ["threshold", "weights"], + "additionalProperties": false }, "transferRate": { "description": " The fee to charge when users transfer this account’s issuances, as the decimal amount that must be sent to deliver 1 unit. Has precision up to 9 digits beyond the decimal point. Use `null` to set no fee.", diff --git a/test/api-test.js b/test/api-test.js index 2cf68e42..9a45ecfc 100644 --- a/test/api-test.js +++ b/test/api-test.js @@ -561,12 +561,26 @@ describe('RippleAPI', function () { }); it('prepareSettings - set signers', function () { - const settings = requests.prepareSettings.signers; + const settings = requests.prepareSettings.signers.normal; return this.api.prepareSettings(address, settings, instructions).then( _.partial(checkResult, responses.prepareSettings.signers, 'prepare')); }); + it('prepareSettings - signers no threshold', function () { + const settings = requests.prepareSettings.signers.noThreshold; + assert.throws(() => { + this.api.prepareSettings(address, settings, instructions); + }, this.api.errors.ValidationError); + }); + + it('prepareSettings - signers no weights', function () { + const settings = requests.prepareSettings.signers.noWeights; + assert.throws(() => { + this.api.prepareSettings(address, settings, instructions); + }, this.api.errors.ValidationError); + }); + it('prepareSettings - fee for multisign', function () { const localInstructions = _.defaults({ signersCount: 4 diff --git a/test/fixtures/requests/index.js b/test/fixtures/requests/index.js index 14deb4d1..91aa3ac1 100644 --- a/test/fixtures/requests/index.js +++ b/test/fixtures/requests/index.js @@ -22,7 +22,11 @@ module.exports = { }, prepareSettings: { domain: require('./prepare-settings'), - signers: require('./prepare-settings-signers') + signers: { + normal: require('./prepare-settings-signers'), + noThreshold: require('./prepare-settings-signers-no-threshold'), + noWeights: require('./prepare-settings-signers-no-weights') + } }, prepareEscrowCreation: { normal: require('./prepare-escrow-creation'), diff --git a/test/fixtures/requests/prepare-settings-signers-no-threshold.json b/test/fixtures/requests/prepare-settings-signers-no-threshold.json new file mode 100644 index 00000000..04811606 --- /dev/null +++ b/test/fixtures/requests/prepare-settings-signers-no-threshold.json @@ -0,0 +1,18 @@ +{ + "signers": { + "weights": [ + { + "address": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59", + "weight": 1 + }, + { + "address": "rpZc4mVfWUif9CRoHRKKcmhu1nx2xktxBo", + "weight": 1 + }, + { + "address": "rwBYyfufTzk77zUSKEu4MvixfarC35av1J", + "weight": 1 + } + ] + } +} diff --git a/test/fixtures/requests/prepare-settings-signers-no-weights.json b/test/fixtures/requests/prepare-settings-signers-no-weights.json new file mode 100644 index 00000000..f6265afe --- /dev/null +++ b/test/fixtures/requests/prepare-settings-signers-no-weights.json @@ -0,0 +1,5 @@ +{ + "signers": { + "threshold": 2 + } +}