diff --git a/lib/IAMClient.d.ts b/lib/IAMClient.d.ts index 9ecb977..40dd715 100644 --- a/lib/IAMClient.d.ts +++ b/lib/IAMClient.d.ts @@ -135,6 +135,20 @@ declare class VaultClient { * @returns {undefined} */ getAccountLimits(accountName: string, callback: any): undefined; + /** + * A getter for account rate limit configuration given a list of canonicalIDs + * @param {String[]} canonicalIds - list of canonicalIDs + * @param {Object} options - additional arguments + * @param {string} options.reqUid - the request UID + * @param {werelogs.RequestLogger} [options.logger] - Logger instance + * @param {Function} callback - the callback handling the response object + * and the error, if there is one + * @returns {undefined} + */ + getAccountLimitsByCanonicalIds(canonicalIds: string[], options: { + reqUid: string; + logger?: werelogs.RequestLogger; + }, callback: Function): undefined; /** * Get Quota of an account * diff --git a/lib/IAMClient.d.ts.map b/lib/IAMClient.d.ts.map index 26d28c4..7170168 100644 --- a/lib/IAMClient.d.ts.map +++ b/lib/IAMClient.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"IAMClient.d.ts","sourceRoot":"","sources":["IAMClient.js"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"IAMClient.d.ts","sourceRoot":"","sources":["IAMClient.js"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/IAMClient.js b/lib/IAMClient.js index 42a6316..feb76a8 100644 --- a/lib/IAMClient.js +++ b/lib/IAMClient.js @@ -348,12 +348,10 @@ class VaultClient { limits: JSON.stringify(limits), }; assert(!this.parameterValidation || (limits && typeof limits === 'object'), - 'Limits must be an object'); - if (accountName) { - assert(!this.parameterValidation || typeof accountName === 'string', - 'the account name, if set, should be a string'); - data.AccountName = accountName; - } + 'limits must be an object'); + assert(!this.parameterValidation || typeof accountName === 'string', + 'the account name should be a string'); + data.AccountName = accountName; this.request('POST', '/', true, callback, data); } @@ -370,11 +368,9 @@ class VaultClient { Version: '2010-05-08', }; - if (accountName) { - assert(!this.parameterValidation || typeof accountName === 'string', - 'the account name, if set, should be a string'); - data.AccountName = accountName; - } + assert(!this.parameterValidation || typeof accountName === 'string', + 'the account name should be a string'); + data.AccountName = accountName; this.request('POST', '/', true, callback, data); } @@ -391,14 +387,43 @@ class VaultClient { Version: '2010-05-08', }; - if (accountName) { - assert(!this.parameterValidation || typeof accountName === 'string', - 'the account name, if set, should be a string'); - data.AccountName = accountName; - } + assert(!this.parameterValidation || typeof accountName === 'string', + 'the account name should be a string'); + data.AccountName = accountName; this.request('POST', '/', true, callback, data); } + /** + * A getter for account rate limit configuration given a list of canonicalIDs + * @param {String[]} canonicalIds - list of canonicalIDs + * @param {Object} options - additional arguments + * @param {string} options.reqUid - the request UID + * @param {werelogs.RequestLogger} [options.logger] - Logger instance + * @param {Function} callback - the callback handling the response object + * and the error, if there is one + * @returns {undefined} + */ + getAccountLimitsByCanonicalIds(canonicalIds, options, callback) { + this.getAccounts(null, null, canonicalIds, options, (err, res, code) => { + if (err) { + return callback(err); + } + const body = res.reduce((accounts, account) => { + // eslint-disable-next-line no-param-reassign + accounts[account.canId] = account.limits; + return accounts; + }, {}); + + return callback(null, { + message: { + body, + code, + message: 'Attributes retrieved', + }, + }); + }); + } + /** * Get Quota of an account * diff --git a/tests/unit/deleteAccountLimits.js b/tests/unit/deleteAccountLimits.js index 8984bfe..d3064d5 100644 --- a/tests/unit/deleteAccountLimits.js +++ b/tests/unit/deleteAccountLimits.js @@ -31,17 +31,11 @@ describe('IAMClient - deleteAccountLimits', () => { }); }); - it('should call the request method with the correct parameters when accountName is not provided', () => { + it('should throw an error when accountName is not provided', () => { client = createClient(true); - client.deleteAccountLimits(undefined, () => {}); - - assert.strictEqual(lastRequestData.method, 'POST'); - assert.strictEqual(lastRequestData.path, '/'); - assert.strictEqual(lastRequestData.iamAuthenticate, true); - assert.deepStrictEqual(lastRequestData.data, { - Action: 'DeleteAccountLimits', - Version: '2010-05-08', - }); + assert.throws(() => { + client.deleteAccountLimits(undefined, () => {}); + }, /the account name should be a string/); }); it('should throw an error if accountName is not a string', () => { @@ -49,7 +43,7 @@ describe('IAMClient - deleteAccountLimits', () => { const accountName = 123; assert.throws(() => { client.deleteAccountLimits(accountName, () => {}); - }, /the account name, if set, should be a string/); + }, /the account name should be a string/); }); it('should call the request method when wrong options are provided and parameterValidation is false', () => { diff --git a/tests/unit/getAccountLimits.js b/tests/unit/getAccountLimits.js index d2b299a..d11f9ec 100644 --- a/tests/unit/getAccountLimits.js +++ b/tests/unit/getAccountLimits.js @@ -32,18 +32,12 @@ describe('GetAccountLimits', () => { assert.deepStrictEqual(lastRequestData.data, expectedData); }); - it('should call the request method with default parameters when accountName is not provided', () => { + it('should throw an error when accountName is not provided', () => { client = createClient(true); const callback = () => {}; - client.getAccountLimits(undefined, callback); - const expectedData = { - Action: 'GetAccountLimits', - Version: '2010-05-08', - }; - assert.strictEqual(lastRequestData.method, 'POST'); - assert.strictEqual(lastRequestData.path, '/'); - assert.strictEqual(lastRequestData.iamAuthenticate, true); - assert.deepStrictEqual(lastRequestData.data, expectedData); + assert.throws(() => { + client.getAccountLimits(undefined, callback); + }, /the account name should be a string/); }); it('should throw an error if accountName is not a string', () => { @@ -52,7 +46,7 @@ describe('GetAccountLimits', () => { const callback = () => {}; assert.throws(() => { client.getAccountLimits(accountName, callback); - }, /the account name, if set, should be a string/); + }, /the account name should be a string/); }); it('should not throw an error if accountName is not a string and parameterValidation is false', () => { diff --git a/tests/unit/getAccountLimitsByCanonicalId.js b/tests/unit/getAccountLimitsByCanonicalId.js new file mode 100644 index 0000000..c4c0c99 --- /dev/null +++ b/tests/unit/getAccountLimitsByCanonicalId.js @@ -0,0 +1,49 @@ +'use strict'; + +const assert = require('assert'); +const IAMClient = require('../../lib/IAMClient'); + +const canonicalIds = ['canId1', 'canId2']; +const opt = { reqUid: 'test.getAccounts.reqUid' }; +const mockCB = () => {}; + +const expectedData = { + Action: 'GetAccounts', + Version: '2010-05-08', +}; + +describe('getAccountLimitsByCanonicalIds', () => { + let client; + let spyArg = null; + + beforeEach('spy on request', done => { + client = new IAMClient('127.0.0.1', 8500); + client.request = function spy(...args) { + spyArg = args; + }; + done(); + }); + + afterEach('reset spyArg', () => { spyArg = null; }); + + it('should send request with correct arguments', () => { + client.getAccountLimitsByCanonicalIds(canonicalIds, opt, mockCB); + const [method, path, auth, cb, data, reqUid, contentType] = spyArg; + assert.strictEqual(method, 'GET'); + assert.strictEqual(path, '/'); + assert.strictEqual(auth, false); + assert.strictEqual(typeof cb, 'function'); + assert.strictEqual(reqUid, opt.reqUid); + assert.strictEqual(contentType, null); + assert.deepStrictEqual( + data, + { ...expectedData, canonicalIds }, + ); + }); + + + it('should throw with invalid arguments', () => { + assert.throws(() => client.getAccountLimitsByCanonicalIds('foobar', opt, mockCB), + assert.AssertionError); + }); +}); diff --git a/tests/unit/updateAccountLimits.js b/tests/unit/updateAccountLimits.js index 9168a72..2e014ed 100644 --- a/tests/unit/updateAccountLimits.js +++ b/tests/unit/updateAccountLimits.js @@ -35,21 +35,13 @@ describe('updateAccountLimits', () => { assert.deepStrictEqual(lastRequestData.data, expectedData); }); - it('should call the request method with the correct parameters when accountName is not provided', () => { + it('should throw when accountName is not provided', () => { client = createClient(true); const limits = { rateLimit: 1000 }; - - const expectedData = { - Action: 'UpdateAccountLimits', - Version: '2010-05-08', - limits: JSON.stringify(limits), - }; - - client.updateAccountLimits(undefined, limits, () => {}); - assert.strictEqual(lastRequestData.method, 'POST'); - assert.strictEqual(lastRequestData.path, '/'); - assert.strictEqual(lastRequestData.iamAuthenticate, true); - assert.deepStrictEqual(lastRequestData.data, expectedData); + assert.throws( + () => client.updateAccountLimits(undefined, limits, () => {}) + , /the account name should be a string/ + ); }); it('should handle complex limits object correctly', () => { @@ -82,7 +74,7 @@ describe('updateAccountLimits', () => { assert.throws(() => { client.updateAccountLimits(accountName, limits, () => {}); - }, /Limits must be an object/); + }, /limits must be an object/); }); it('should throw an error if limits is null', () => { @@ -92,7 +84,7 @@ describe('updateAccountLimits', () => { assert.throws(() => { client.updateAccountLimits(accountName, limits, () => {}); - }, /Limits must be an object/); + }, /limits must be an object/); }); it('should not throw an error if limits is not an object and parameterValidation is false', () => { @@ -121,7 +113,7 @@ describe('updateAccountLimits', () => { assert.throws(() => { client.updateAccountLimits(accountName, limits, () => {}); - }, /the account name, if set, should be a string/); + }, /the account name should be a string/); }); it('should not throw an error if accountName is not a string and parameterValidation is false', () => {