Skip to content

Commit 856cb2e

Browse files
committed
feat: add support for dedicated_for parameter in update_access_key
1 parent b89115f commit 856cb2e

File tree

3 files changed

+51
-13
lines changed

3 files changed

+51
-13
lines changed

lib/provisioning/account.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -331,10 +331,16 @@ function generate_access_key(sub_account_id, options = {}, callback) {
331331
* @param [callback] {function}
332332
*/
333333
function update_access_key(sub_account_id, api_key, options = {}, callback) {
334-
const params = pickOnlyExistingValues({
335-
name: options.name,
336-
enabled: options.enabled
337-
}, 'name', 'enabled');
334+
const params = pickOnlyExistingValues(
335+
{
336+
name: options.name,
337+
enabled: options.enabled,
338+
dedicated_for: options.dedicated_for
339+
},
340+
'name',
341+
'enabled',
342+
'dedicated_for'
343+
);
338344
options.content_type = "json";
339345
const uri = ['sub_accounts', sub_account_id, 'access_keys', api_key];
340346
return call_account_api('PUT', uri, params, callback, options);

test/integration/api/provisioning/access_keys_spec.js

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1+
/* eslint-disable no-mixed-spaces-and-tabs */
2+
/* eslint-disable no-tabs */
13
const cloudinary = require("../../../../cloudinary");
24
const TIMEOUT = require('../../../testUtils/testConstants').TIMEOUT;
35
let runOnlyForInternalPRs = process.env.TRAVIS_SECURE_ENV_VARS ? describe : describe.skip;
46

57

6-
describe.skip('Provisioning API - Access Keys Management', function () {
8+
describe('Provisioning API - Access Keys Management', function () {
79
let CLOUD_SECRET;
810
let CLOUD_API;
911
let CLOUD_NAME;
1012
let CLOUD_ID;
1113
let CLOUD_NAME_PREFIX = `justaname${process.hrtime()[1] % 10000}`;
1214
this.timeout(TIMEOUT.LONG);
1315

14-
before("Setup the required test", async () => {
16+
before("Setup the required test", async function (){
1517
let config = cloudinary.config(true);
1618
if (!(config.provisioning_api_key && config.provisioning_api_secret && config.account_id)) {
1719
// For external PRs the env variables are not availble, so we skip the provisioning API
@@ -86,16 +88,45 @@ describe.skip('Provisioning API - Access Keys Management', function () {
8688
expect(Object.keys(accessKeys.access_keys[0])).to.eql(['name', 'api_key', 'api_secret', 'created_at', 'updated_at', 'enabled']);
8789
});
8890

89-
it('Update access key', async () => {
90-
const keyName = `test-access-key-${Date.now()}`
91-
const newAccessKey = await cloudinary.provisioning.account.generate_access_key(CLOUD_ID, { name: keyName });
92-
expect(Object.keys(newAccessKey)).to.eql(['name', 'api_key', 'api_secret', 'created_at', 'updated_at', 'enabled']);
91+
it("Update access key", async () => {
92+
const keyName = `test-access-key-${Date.now()}`;
93+
const newAccessKey =
94+
await cloudinary.provisioning.account.generate_access_key(
95+
CLOUD_ID,
96+
{ name: keyName, enabled: false }
97+
);
98+
expect(Object.keys(newAccessKey)).to.eql([
99+
"name",
100+
"api_key",
101+
"api_secret",
102+
"created_at",
103+
"updated_at",
104+
"enabled"
105+
]);
93106
expect(newAccessKey.name).to.eql(keyName);
107+
expect(newAccessKey.enabled).to.eql(false);
94108

95109
const newName = `${keyName}-updated`;
96-
const updatedAccessKey = await cloudinary.provisioning.account.update_access_key(CLOUD_ID, newAccessKey.api_key, { name: newName });
97-
expect(Object.keys(newAccessKey)).to.eql(['name', 'api_key', 'api_secret', 'created_at', 'updated_at', 'enabled']);
110+
const updatedAccessKey =
111+
await cloudinary.provisioning.account.update_access_key(
112+
CLOUD_ID,
113+
newAccessKey.api_key,
114+
{ name: newName, enabled: true, dedicated_for: "webhooks" }
115+
);
116+
expect(Object.keys(updatedAccessKey)).to.eql([
117+
"name",
118+
"api_key",
119+
"api_secret",
120+
"created_at",
121+
"updated_at",
122+
"enabled",
123+
"dedicated_for"
124+
]);
98125
expect(updatedAccessKey.name).to.eql(newName);
126+
expect(updatedAccessKey.enabled).to.eql(true);
127+
expect(updatedAccessKey.dedicated_for).to.be.an("array");
128+
expect(updatedAccessKey.dedicated_for.length).to.eql(1);
129+
expect(updatedAccessKey.dedicated_for[0]).to.eql("webhooks");
99130
});
100131

101132
it('Delete access keys', async () => {

types/index.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1533,7 +1533,8 @@ declare module 'cloudinary' {
15331533

15341534
function update_access_key(subAccountId: string, apiKey: string, options?: ProvisioningApiOptions | {
15351535
name?: string,
1536-
enabled?: boolean
1536+
enabled?: boolean,
1537+
dedicated_for?: string
15371538
}, callback?: ResponseCallback): Promise<AccessKeyDetails>;
15381539

15391540
function delete_access_key(subAccountId: string, apiKey: string, options?: ProvisioningApiOptions, callback?: ResponseCallback): Promise<DeleteAccessKeyResponse>;

0 commit comments

Comments
 (0)