|
| 1 | +const cloudinary = require("../../../../cloudinary"); |
| 2 | +const TIMEOUT = require('../../../testUtils/testConstants').TIMEOUT; |
| 3 | +let runOnlyForInternalPRs = process.env.TRAVIS_SECURE_ENV_VARS ? describe : describe.skip; |
| 4 | + |
| 5 | + |
| 6 | +describe.skip('Provisioning API - Access Keys Management', function () { |
| 7 | + let CLOUD_SECRET; |
| 8 | + let CLOUD_API; |
| 9 | + let CLOUD_NAME; |
| 10 | + let CLOUD_ID; |
| 11 | + let CLOUD_NAME_PREFIX = `justaname${process.hrtime()[1] % 10000}`; |
| 12 | + this.timeout(TIMEOUT.LONG); |
| 13 | + |
| 14 | + before("Setup the required test", async () => { |
| 15 | + let config = cloudinary.config(true); |
| 16 | + if (!(config.provisioning_api_key && config.provisioning_api_secret && config.account_id)) { |
| 17 | + // For external PRs the env variables are not availble, so we skip the provisioning API |
| 18 | + this.skip(); |
| 19 | + } |
| 20 | + |
| 21 | + let CLOUD_TO_CREATE = CLOUD_NAME_PREFIX + Date.now(); |
| 22 | + // Create a sub account(sub cloud) |
| 23 | + let res = await cloudinary.provisioning.account.create_sub_account(CLOUD_TO_CREATE, CLOUD_TO_CREATE, {}, true).catch((err) => { |
| 24 | + throw err; |
| 25 | + }); |
| 26 | + |
| 27 | + CLOUD_API = res.api_access_keys[0].key; |
| 28 | + CLOUD_SECRET = res.api_access_keys[0].secret; |
| 29 | + CLOUD_NAME = res.cloud_name; |
| 30 | + CLOUD_ID = res.id; |
| 31 | + |
| 32 | + return true; |
| 33 | + }); |
| 34 | + |
| 35 | + after('Destroy the sub_account and users that were created', async () => { |
| 36 | + // Skip 'after' in case we don't have account configuration available |
| 37 | + // This means that the beforeHook also didn't run |
| 38 | + let config = cloudinary.config(true); |
| 39 | + if (!(config.provisioning_api_key && config.provisioning_api_secret && config.account_id)) { |
| 40 | + return; |
| 41 | + } |
| 42 | + |
| 43 | + const delRes = await cloudinary.provisioning.account.delete_sub_account(CLOUD_ID); |
| 44 | + expect(delRes.message).to.eql('ok'); |
| 45 | + }); |
| 46 | + |
| 47 | + it('List access keys', async () => { |
| 48 | + const accessKeys = await cloudinary.provisioning.account.access_keys(CLOUD_ID); |
| 49 | + expect(Object.keys(accessKeys)).to.eql(['access_keys', 'total']); |
| 50 | + expect(accessKeys.access_keys.length).to.eql(1); |
| 51 | + expect(Object.keys(accessKeys.access_keys[0])).to.eql(['name', 'api_key', 'api_secret', 'created_at', 'updated_at', 'enabled']); |
| 52 | + }); |
| 53 | + |
| 54 | + it('Generate new access key', async () => { |
| 55 | + const keyName = `test-access-key-${Date.now()}` |
| 56 | + const newAccessKey = await cloudinary.provisioning.account.generate_access_key(CLOUD_ID, { name: keyName }); |
| 57 | + expect(Object.keys(newAccessKey)).to.eql(['name', 'api_key', 'api_secret', 'created_at', 'updated_at', 'enabled']); |
| 58 | + expect(newAccessKey.name).to.eql(keyName); |
| 59 | + }); |
| 60 | + |
| 61 | + it('List access keys with optional query params', async () => { |
| 62 | + const keyName1 = `A-test-access-key-${Date.now()}` |
| 63 | + const newAccessKey1 = await cloudinary.provisioning.account.generate_access_key(CLOUD_ID, { name: keyName1 }); |
| 64 | + expect(Object.keys(newAccessKey1)).to.eql(['name', 'api_key', 'api_secret', 'created_at', 'updated_at', 'enabled']); |
| 65 | + expect(newAccessKey1.name).to.eql(keyName1); |
| 66 | + |
| 67 | + const keyName2 = `B-test-access-key-${Date.now()}` |
| 68 | + const newAccessKey2 = await cloudinary.provisioning.account.generate_access_key(CLOUD_ID, { name: keyName2 }); |
| 69 | + expect(Object.keys(newAccessKey2)).to.eql(['name', 'api_key', 'api_secret', 'created_at', 'updated_at', 'enabled']); |
| 70 | + expect(newAccessKey2.name).to.eql(keyName2); |
| 71 | + |
| 72 | + const keyName3 = `C-test-access-key-${Date.now()}` |
| 73 | + const newAccessKey3 = await cloudinary.provisioning.account.generate_access_key(CLOUD_ID, { name: keyName3 }); |
| 74 | + expect(Object.keys(newAccessKey3)).to.eql(['name', 'api_key', 'api_secret', 'created_at', 'updated_at', 'enabled']); |
| 75 | + expect(newAccessKey3.name).to.eql(keyName3); |
| 76 | + |
| 77 | + const pageSize = 2; |
| 78 | + const accessKeys = await cloudinary.provisioning.account.access_keys(CLOUD_ID, { |
| 79 | + page_size: pageSize, |
| 80 | + page: 1, |
| 81 | + sort_by: 'name', |
| 82 | + sort_order: 'desc' |
| 83 | + }); |
| 84 | + expect(Object.keys(accessKeys)).to.eql(['access_keys', 'total']); |
| 85 | + expect(accessKeys.access_keys.length).to.eql(pageSize); |
| 86 | + expect(Object.keys(accessKeys.access_keys[0])).to.eql(['name', 'api_key', 'api_secret', 'created_at', 'updated_at', 'enabled']); |
| 87 | + }); |
| 88 | + |
| 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']); |
| 93 | + expect(newAccessKey.name).to.eql(keyName); |
| 94 | + |
| 95 | + 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']); |
| 98 | + expect(updatedAccessKey.name).to.eql(newName); |
| 99 | + }); |
| 100 | + |
| 101 | + it('Delete access keys', async () => { |
| 102 | + const keyName = `test-access-key-${Date.now()}` |
| 103 | + const newAccessKey = await cloudinary.provisioning.account.generate_access_key(CLOUD_ID, { name: keyName }); |
| 104 | + expect(Object.keys(newAccessKey)).to.eql(['name', 'api_key', 'api_secret', 'created_at', 'updated_at', 'enabled']); |
| 105 | + expect(newAccessKey.name).to.eql(keyName); |
| 106 | + |
| 107 | + const deleteAccessKey = await cloudinary.provisioning.account.delete_access_key(CLOUD_ID, newAccessKey.api_key); |
| 108 | + expect(Object.keys(deleteAccessKey)).to.eql(['message']); |
| 109 | + expect(deleteAccessKey.message).to.eql('ok'); |
| 110 | + }); |
| 111 | + |
| 112 | + it('Delete access keys by name', async () => { |
| 113 | + const keyName = `test-access-key-${Date.now()}` |
| 114 | + const newAccessKey = await cloudinary.provisioning.account.generate_access_key(CLOUD_ID, { name: keyName }); |
| 115 | + expect(Object.keys(newAccessKey)).to.eql(['name', 'api_key', 'api_secret', 'created_at', 'updated_at', 'enabled']); |
| 116 | + expect(newAccessKey.name).to.eql(keyName); |
| 117 | + |
| 118 | + const deleteAccessKey = await cloudinary.provisioning.account.delete_access_key_by_name(CLOUD_ID, { name: keyName }); |
| 119 | + expect(Object.keys(deleteAccessKey)).to.eql(['message']); |
| 120 | + expect(deleteAccessKey.message).to.eql('ok'); |
| 121 | + }); |
| 122 | +}); |
0 commit comments