@ibm-cloud/platform-services
Version:
Node.js client library for IBM Cloud Platform Services
934 lines (768 loc) • 26.5 kB
JavaScript
/**
* @jest-environment node
*/
/**
* (C) Copyright IBM Corp. 2020, 2022.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
;
const ResourceControllerV2 = require('../dist/resource-controller/v2');
const { readExternalSources } = require('ibm-cloud-sdk-core');
const authHelper = require('../test/resources/auth-helper.js');
const { expectToBePromise } = require('ibm-cloud-sdk-core/lib/sdk-test-helpers');
//
// This file provides an example of how to use the Resource Controller service.
//
// The following configuration properties are assumed to be defined:
//
// RESOURCE_CONTROLLER_URL=<service url>
// RESOURCE_CONTROLLER_AUTH_TYPE=iam
// RESOURCE_CONTROLLER_AUTH_URL=<IAM Token Service url>
// RESOURCE_CONTROLLER_APIKEY=<User's IAM API Key>
// RESOURCE_CONTROLLER_RESOURCE_GROUP=<Short ID of the user's resource group>
// RESOURCE_CONTROLLER_PLAN_ID=<Unique ID of the plan associated with the offering>
// RESOURCE_CONTROLLER_ACCOUNT_ID=<User's account ID>
// RESOURCE_CONTROLLER_ALIAS_TARGET_CRN=<The CRN of target name(space) in a specific environment>
// RESOURCE_CONTROLLER_BINDING_TARGET_CRN=<The CRN of application to bind to in a specific environment>
//
// These configuration properties can be exported as environment variables, or stored
// in a configuration file and then:
// export IBM_CREDENTIALS_FILE=<name of configuration file>
//
const configFile = 'resource_controller.env';
const describe = authHelper.prepareTests(configFile);
// Save original console.log and console.warn
const originalLog = console.log
const originalWarn = console.warn
// Mocks for console.log and console.warn
const consoleLogMock = jest.spyOn(console, 'log');
const consoleWarnMock = jest.spyOn(console, 'warn');
describe('ResourceControllerV2', () => {
jest.setTimeout(30000);
// begin-common
const resourceControllerService = ResourceControllerV2.newInstance({});
// end-common
const config = readExternalSources(ResourceControllerV2.DEFAULT_SERVICE_NAME);
let instanceGuid = null;
let aliasGuid = null;
let bindingGuid = null;
let instanceKeyGuid = null;
let reclamationId = null;
let resourceGroupGuid = config.resourceGroup;
let resourcePlanId = config.reclamationPlanId;
let accountId = config.accountId;
let aliasTargetCRN = config.aliasTargetCrn;
let bindingTargetCRN = config.bindingTargetCrn;
let resourceInstanceName = 'RcSdkInstance1NodeJS';
let resourceInstanceUpdateName = 'RcSdkInstanceUpdate1NodeJS';
let aliasName = 'RcSdkAlias1NodeJS';
let aliasUpdateName = 'RcSdkAliasUpdate1NodeJS';
let bindingName = 'RcSdkBinding1NodeJS';
let bindingUpdateName = 'RcSdkBindingUpdate1NodeJS';
let keyName = 'RcSdkKey1NodeJS';
let keyUpdateName = 'RcSdkKeyUpdate1NodeJS';
let targetRegion = 'global';
test('createResourceInstance request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
originalLog('createResourceInstance() result:');
// begin-create_resource_instance
const params = {
name: resourceInstanceName,
target: targetRegion,
resourceGroup: resourceGroupGuid,
resourcePlanId: resourcePlanId,
};
try {
const res = await resourceControllerService.createResourceInstance(params)
instanceGuid = res.result.guid;
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-create_resource_instance
});
test('getResourceInstance request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(instanceGuid).toBeTruthy();
originalLog('getResourceInstance() result:');
// begin-get_resource_instance
const params = {
id: instanceGuid,
};
try {
const res = await resourceControllerService.getResourceInstance(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-get_resource_instance
});
test('listResourceInstances request example', async () => {
consoleLogMock.mockImplementation((output) => {
originalLog(output);
});
consoleWarnMock.mockImplementation((output) => {
// if an error occurs, display the message and then fail the test
originalWarn(output);
expect(true).toBeFalsy();
});
expect(resourceInstanceName).toBeTruthy();
originalLog('listResourceInstances() result:');
// begin-list_resource_instances
const params = {
name: resourceInstanceName,
};
const allResults = [];
try {
const pager = new ResourceControllerV2.ResourceInstancesPager(
resourceControllerService, params);
while (pager.hasNext()) {
const nextPage = await pager.getNext();
expect(nextPage).not.toBeNull();
allResults.push(...nextPage);
}
console.log(JSON.stringify(allResults, null, 2));
} catch (err) {
console.warn(err);
}
// end-list_resource_instances
});
test('updateResourceInstance request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(instanceGuid).toBeTruthy();
originalLog('updateResourceInstance() result:');
// begin-update_resource_instance
const parameters = {
'exampleParameter': 'exampleValue',
};
const params = {
id: instanceGuid,
name: resourceInstanceUpdateName,
parameters: parameters,
};
try {
const res = await resourceControllerService.updateResourceInstance(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-update_resource_instance
});
test('createResourceAlias request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(instanceGuid).toBeTruthy();
originalLog('createResourceAlias() result:');
// begin-create_resource_alias
const params = {
name: aliasName,
source: instanceGuid,
target: aliasTargetCRN,
};
try {
const res = await resourceControllerService.createResourceAlias(params);
aliasGuid = res.result.guid;
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-create_resource_alias
});
test('getResourceAlias request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(aliasGuid).toBeTruthy();
originalLog('getResourceAlias() result:');
// begin-get_resource_alias
const params = {
id: aliasGuid,
};
try {
const res = await resourceControllerService.getResourceAlias(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-get_resource_alias
});
test('listResourceAliases request example', async () => {
consoleLogMock.mockImplementation((output) => {
originalLog(output);
});
consoleWarnMock.mockImplementation((output) => {
// if an error occurs, display the message and then fail the test
originalWarn(output);
expect(true).toBeFalsy();
});
originalLog('listResourceAliases() result:');
// begin-list_resource_aliases
const params = {
name: aliasName,
};
const allResults = [];
try {
const pager = new ResourceControllerV2.ResourceAliasesPager(
resourceControllerService, params);
while (pager.hasNext()) {
const nextPage = await pager.getNext();
expect(nextPage).not.toBeNull();
allResults.push(...nextPage);
}
console.log(JSON.stringify(allResults, null, 2));
} catch (err) {
console.warn(err);
}
// end-list_resource_aliases
});
test('updateResourceAlias request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(aliasGuid).toBeTruthy();
originalLog('updateResourceAlias() result:');
// begin-update_resource_alias
const params = {
id: aliasGuid,
name: aliasUpdateName,
};
try {
const res = await resourceControllerService.updateResourceAlias(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-update_resource_alias
});
test('listResourceAliasesForInstance request example', async () => {
consoleLogMock.mockImplementation((output) => {
originalLog(output);
});
consoleWarnMock.mockImplementation((output) => {
// if an error occurs, display the message and then fail the test
originalWarn(output);
expect(true).toBeFalsy();
});
expect(instanceGuid).toBeTruthy();
originalLog('listResourceAliasesForInstance() result:');
// begin-list_resource_aliases_for_instance
const params = {
id: instanceGuid,
};
const allResults = [];
try {
const pager = new ResourceControllerV2.ResourceAliasesForInstancePager(
resourceControllerService, params);
while (pager.hasNext()) {
const nextPage = await pager.getNext();
expect(nextPage).not.toBeNull();
allResults.push(...nextPage);
}
console.log(JSON.stringify(allResults, null, 2));
} catch (err) {
console.warn(err);
}
// end-list_resource_aliases_for_instance
});
test('createResourceBinding request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(aliasGuid).toBeTruthy();
originalLog('createResourceBinding() result:');
// begin-create_resource_binding
const parameters = {
'exampleParameter': 'exampleValue'
};
const params = {
name: bindingName,
source: aliasGuid,
target: bindingTargetCRN,
parameters: parameters,
};
try {
const res = await resourceControllerService.createResourceBinding(params);
bindingGuid = res.result.guid;
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-create_resource_binding
});
test('getResourceBinding request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(bindingGuid).toBeTruthy();
originalLog('getResourceBinding() result:');
// begin-get_resource_binding
const params = {
id: bindingGuid,
};
try {
const res = await resourceControllerService.getResourceBinding(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-get_resource_binding
});
test('listResourceBindings request example', async () => {
consoleLogMock.mockImplementation((output) => {
originalLog(output);
});
consoleWarnMock.mockImplementation((output) => {
// if an error occurs, display the message and then fail the test
originalWarn(output);
expect(true).toBeFalsy();
});
originalLog('listResourceBindings() result:');
// begin-list_resource_bindings
const params = {
name: bindingName,
};
const allResults = [];
try {
const pager = new ResourceControllerV2.ResourceBindingsPager(
resourceControllerService, params);
while (pager.hasNext()) {
const nextPage = await pager.getNext();
expect(nextPage).not.toBeNull();
allResults.push(...nextPage);
}
console.log(JSON.stringify(allResults, null, 2));
} catch (err) {
console.warn(err);
}
// end-list_resource_bindings
});
test('updateResourceBinding request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(bindingGuid).toBeTruthy();
originalLog('updateResourceBinding() result:');
// begin-update_resource_binding
const params = {
id: bindingGuid,
name: bindingUpdateName,
};
try {
const res = await resourceControllerService.updateResourceBinding(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-update_resource_binding
});
test('listResourceBindingsForAlias request example', async () => {
consoleLogMock.mockImplementation((output) => {
originalLog(output);
});
consoleWarnMock.mockImplementation((output) => {
// if an error occurs, display the message and then fail the test
originalWarn(output);
expect(true).toBeFalsy();
});
expect(aliasGuid).toBeTruthy();
originalLog('listResourceBindingsForAlias() result:');
// begin-list_resource_bindings_for_alias
const params = {
id: aliasGuid,
};
const allResults = [];
try {
const pager = new ResourceControllerV2.ResourceBindingsForAliasPager(resourceControllerService, params);
while (pager.hasNext()) {
const nextPage = await pager.getNext();
expect(nextPage).not.toBeNull();
allResults.push(...nextPage);
}
console.log(JSON.stringify(allResults, null, 2));
} catch (err) {
console.warn(err);
}
// end-list_resource_bindings_for_alias
});
test('createResourceKey request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(instanceGuid).toBeTruthy();
originalLog('createResourceKey() result:');
// begin-create_resource_key
const parameters = {
'exampleParameter': 'exampleValue'
};
const params = {
name: keyName,
source: instanceGuid,
parameters: parameters,
};
try {
const res = await resourceControllerService.createResourceKey(params);
instanceKeyGuid = res.result.guid;
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-create_resource_key
});
test('getResourceKey request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(instanceKeyGuid).toBeTruthy();
originalLog('getResourceKey() result:');
// begin-get_resource_key
const params = {
id: instanceKeyGuid,
};
try {
const res = await resourceControllerService.getResourceKey(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-get_resource_key
});
test('listResourceKeys request example', async () => {
consoleLogMock.mockImplementation((output) => {
originalLog(output);
});
consoleWarnMock.mockImplementation((output) => {
// if an error occurs, display the message and then fail the test
originalWarn(output);
expect(true).toBeFalsy();
});
originalLog('listResourceKeys() result:');
// begin-list_resource_keys
const params = {
name: keyName,
};
const allResults = [];
try {
const pager = new ResourceControllerV2.ResourceKeysPager(resourceControllerService, params);
while (pager.hasNext()) {
const nextPage = await pager.getNext();
expect(nextPage).not.toBeNull();
allResults.push(...nextPage);
}
console.log(JSON.stringify(allResults, null, 2));
} catch (err) {
console.warn(err);
}
// end-list_resource_keys
});
test('updateResourceKey request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(instanceKeyGuid).toBeTruthy();
originalLog('updateResourceKey() result:');
// begin-update_resource_key
const params = {
id: instanceKeyGuid,
name: keyUpdateName,
};
try {
const res = await resourceControllerService.updateResourceKey(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-update_resource_key
});
test('listResourceKeysForInstance request example', async () => {
consoleLogMock.mockImplementation((output) => {
originalLog(output);
});
consoleWarnMock.mockImplementation((output) => {
// if an error occurs, display the message and then fail the test
originalWarn(output);
expect(true).toBeFalsy();
});
expect(instanceGuid).toBeTruthy();
originalLog('listResourceKeysForInstance() result:');
// begin-list_resource_keys_for_instance
const params = {
id: instanceGuid,
};
const allResults = [];
try {
const pager = new ResourceControllerV2.ResourceKeysForInstancePager(
resourceControllerService, params);
while (pager.hasNext()) {
const nextPage = await pager.getNext();
expect(nextPage).not.toBeNull();
allResults.push(...nextPage);
}
console.log(JSON.stringify(allResults, null, 2));
} catch (err) {
console.warn(err);
}
// end-list_resource_keys_for_instance
});
test('deleteResourceBinding request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(bindingGuid).toBeTruthy();
// begin-delete_resource_binding
const params = {
id: bindingGuid,
};
try {
await resourceControllerService.deleteResourceBinding(params);
} catch (err) {
console.warn(err);
}
// end-delete_resource_binding
});
test('deleteResourceKey request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(instanceKeyGuid).toBeTruthy();
// begin-delete_resource_key
const params = {
id: instanceKeyGuid,
};
try {
await resourceControllerService.deleteResourceKey(params);
} catch (err) {
console.warn(err);
}
// end-delete_resource_key
});
test('deleteResourceAlias request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(aliasGuid).toBeTruthy();
// begin-delete_resource_alias
const params = {
id: aliasGuid,
};
try {
await resourceControllerService.deleteResourceAlias(params);
} catch (err) {
console.warn(err);
}
// end-delete_resource_alias
});
test('lockResourceInstance request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(instanceGuid).toBeTruthy();
originalLog('lockResourceInstance() result:');
// begin-lock_resource_instance
const params = {
id: instanceGuid,
};
try {
const res = await resourceControllerService.lockResourceInstance(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-lock_resource_instance
});
test('unlockResourceInstance request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(instanceGuid).toBeTruthy();
originalLog('unlockResourceInstance() result:');
// begin-unlock_resource_instance
const params = {
id: instanceGuid,
};
try {
const res = await resourceControllerService.unlockResourceInstance(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-unlock_resource_instance
});
test('deleteResourceInstance request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(instanceGuid).toBeTruthy();
// begin-delete_resource_instance
const params = {
id: instanceGuid,
recursive: false,
};
try {
await resourceControllerService.deleteResourceInstance(params);
} catch (err) {
console.warn(err);
}
// end-delete_resource_instance
});
test('listReclamations request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
await new Promise(resolve => setTimeout(resolve, 20000));
originalLog('listReclamations() result:');
// begin-list_reclamations
const params = {
accountId: accountId,
};
try {
const res = await resourceControllerService.listReclamations(params);
var resources = res.result.resources;
resources.forEach(reclaim => {
if (reclaim.resource_instance_id.toString() === instanceGuid) {
reclamationId = reclaim.id;
}
});
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-list_reclamations
});
test('runReclamationAction request example', async () => {
consoleLogMock.mockImplementation(output => {
originalLog(output);
});
consoleWarnMock.mockImplementation(output => {
originalWarn(output);
// when the test fails we need to print out the error message and stop execution right after it
expect(true).toBeFalsy();
});
expect(reclamationId).toBeTruthy();
originalLog('runReclamationAction() result:');
// begin-run_reclamation_action
const params = {
id: reclamationId,
actionName: 'reclaim',
};
try {
const res = await resourceControllerService.runReclamationAction(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
// end-run_reclamation_action
});
});