@webex/test-users 3.12.0-next.5 → 3.12.0-next.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -31,7 +31,6 @@ exports.setPreferredSite = setPreferredSite;
31
31
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
32
32
  var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
33
33
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
34
- var _assert = _interopRequireDefault(require("assert"));
35
34
  var _uuid = _interopRequireDefault(require("uuid"));
36
35
  var _btoa = _interopRequireDefault(require("btoa"));
37
36
  var _lodash = _interopRequireDefault(require("lodash"));
@@ -285,6 +284,9 @@ function loginTestUser(options) {
285
284
  */
286
285
  function removeTestUser() {
287
286
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
287
+ var clientId = options.clientId || process.env.WEBEX_CLIENT_ID;
288
+ var clientSecret = options.clientSecret || process.env.WEBEX_CLIENT_SECRET;
289
+ var idbrokerUrl = options.idbrokerUrl || process.env.IDBROKER_BASE_URL;
288
290
  var cigServiceUrl = options.cigServiceUrl || process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL || process.env.WEBEX_TEST_USERS_CONVERSATION_SERVICE_URL;
289
291
  if (!cigServiceUrl) {
290
292
  throw new Error('options.cigServiceUrl or process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL must be defined');
@@ -292,27 +294,26 @@ function removeTestUser() {
292
294
  if (!options.id) {
293
295
  return _promise.default.reject(new Error('options.id is required'));
294
296
  }
295
- if (!options.token) {
296
- return loginTestUser(options).then(function (token) {
297
- options.token = token;
298
- return removeTestUser(options);
297
+ return getClientCredentials({
298
+ clientId: clientId,
299
+ clientSecret: clientSecret,
300
+ idbrokerUrl: idbrokerUrl
301
+ }).then(function (authorization) {
302
+ return (0, _httpCore.request)({
303
+ method: 'POST',
304
+ json: true,
305
+ headers: {
306
+ authorization: authorization
307
+ },
308
+ body: {
309
+ /* eslint-disable camelcase */
310
+ user_id: options.id,
311
+ refresh_token: options.token && options.token.refresh_token,
312
+ user_type: options.userType || 'PERSON'
313
+ /* eslint-enable camelcase */
314
+ },
315
+ uri: "".concat(cigServiceUrl).concat(BASE_PATH, "/delete")
299
316
  });
300
- }
301
- (0, _assert.default)(options.token.authorization, 'options.token.authorization must be defined');
302
- return (0, _httpCore.request)({
303
- method: 'POST',
304
- json: true,
305
- headers: {
306
- authorization: options.token.authorization
307
- },
308
- body: {
309
- /* eslint-disable camelcase */
310
- user_id: options.id,
311
- refresh_token: options.token.refresh_token,
312
- user_type: options.userType || 'PERSON'
313
- /* eslint-enable camelcase */
314
- },
315
- uri: "".concat(cigServiceUrl).concat(BASE_PATH, "/delete")
316
317
  });
317
318
  }
318
319
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_assert","_interopRequireDefault","require","_uuid","_btoa","_lodash","_nodeRandomName","_httpCore","_whistler","_interopRequireWildcard","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","BASE_PATH_SECURE","BASE_PATH","fixToken","token","now","_now","expires_in","expires","refresh_token_expires_in","refresh_token_expires","token_type","access_token","authorization","concat","clientToken","getClientCredentials","_ref","clientId","clientSecret","idbrokerUrl","_promise","resolve","request","method","uri","json","form","grant_type","scope","client_id","client_secret","headers","btoa","then","res","body","requestWithAuth","options","createTestUser","undefined","process","env","WEBEX_CLIENT_ID","WEBEX_CLIENT_SECRET","IDBROKER_BASE_URL","cigServiceUrl","WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL","WEBEX_TEST_USERS_CONVERSATION_SERVICE_URL","Error","authCodeOnly","displayName","randomName","emailTemplate","emailAddress","entitlements","machineType","orgId","password","uuid","v4","roles","scopes","WEBEX_SCOPE","type","forceCreate","ensureExistsInWebexSites","syncInWebexSites","orgAdminAuthorization","user","email","name","loginTestUser","_","defaultsDeep","removeTestUser","id","reject","assert","user_id","refresh_token","user_type","userType","setPreferredSite","schemas","userPreferences","value","preferredSite","identityServiceUrl","userId"],"sources":["index.js"],"sourcesContent":["import assert from 'assert';\n\nimport uuid from 'uuid';\nimport btoa from 'btoa';\nimport _ from 'lodash';\nimport randomName from 'node-random-name';\nimport {request} from '@webex/http-core';\n\nconst BASE_PATH_SECURE = '/users/test_users_s';\nconst BASE_PATH = '/users/test_users';\n\n/**\n * Computes `expires` and `refresh_token_expires` from `expires_in` and\n * `refresh_token_expires_in` and creates an `authorization` string.\n * @param {Object} token\n * @private\n * @returns {Object}\n */\nfunction fixToken(token) {\n const now = Date.now();\n\n if (token.expires_in && !token.expires) {\n token.expires = now + token.expires_in * 1000;\n }\n\n if (token.refresh_token_expires_in && !token.refresh_token_expires) {\n /* eslint camelcase: [0] */\n token.refresh_token_expires = now + token.refresh_token_expires_in * 1000;\n }\n\n if (token.token_type && token.access_token) {\n token.authorization = `${token.token_type} ${token.access_token}`;\n }\n\n return token;\n}\n\nlet clientToken;\n\n/**\n * Fetches credentials to talk to the test_users_s endpoint\n *\n * Caches result in `clientToken` variable for multiple runs\n * @param {Object} options\n * @param {string} options.clientId\n * @param {string} options.clientSecret\n * @param {string} options.idbrokerUrl\n * @private\n * @returns {String}\n */\nfunction getClientCredentials({clientId, clientSecret, idbrokerUrl}) {\n if (clientToken) {\n return Promise.resolve(clientToken);\n }\n\n return request({\n method: 'POST',\n uri: `${idbrokerUrl}/idb/oauth2/v1/access_token`,\n json: true,\n form: {\n grant_type: 'client_credentials',\n scope:\n 'Identity:SCIM webexsquare:get_conversation spark-test-account:write spark-test-account:read',\n client_id: clientId,\n client_secret: clientSecret,\n },\n headers: {\n // Note: we can't request's auth hash here because this endpoint expects\n // us to send the auth header *without including \"Basic \"* before the\n // token string\n authorization: btoa(`${clientId}:${clientSecret}`),\n },\n })\n .then((res) => {\n const token = fixToken(res.body);\n\n return `${token.token_type} ${token.access_token}`;\n })\n .then((token) => {\n clientToken = token;\n\n return clientToken;\n });\n}\n\n/**\n * Makes a request authorized with client credentials\n * @param {Object} options\n * @param {Object} options.body\n * @param {string} options.body.clientId\n * @param {string} options.body.clientSecret\n * @param {string} options.body.idbrokerUrl\n * @private\n * @returns {Promise<HttpResponseObject>}\n */\nfunction requestWithAuth(options) {\n return getClientCredentials(options.body).then((authorization) => {\n options.headers = options.headers || {};\n options.headers.authorization = authorization;\n\n return request(options);\n });\n}\n\n/**\n * @typedef {Object} AccessTokenObject\n * @property {string} token.access_token\n * @property {Number} token.expires_in\n * @property {string} token.token_type\n * @property {string} token.refresh_token\n * @property {Number} token.refresh_token_expires_in\n * @property {string} token.expires\n * @property {string} token.refresh_token_expires\n */\n\n/**\n * @typedef {Object} CreateUserOptions\n * @property {boolean} [authCodeOnly] generates auth_code\n * @param {string} [clientId] defaults to WEBEX_CLIENT_ID\n * @param {string} [clientSecret] defaults to WEBEX_CLIENT_SECRET\n * @param {string} [cigServiceUrl] defaults to WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL\n * @property {string} [displayName]\n * @property {string} [emailAddress]\n * @property {Array.<string>} [entitlements]\n * @param {string} [idbrokerUrl] defaults to IDBROKER_BASE_URL\n * @property {string} [machineType] used when creating a machine user/device\n * @property {string} [orgId] organization ID to create the user under\n * @property {string} [password] defaults to a random password\n * @property {string} [roles] defaults to []\n * @property {string} [scope] defaults to WEBEX_SCOPE\n * @property {string} [type] used to create a machine\n * @property {boolean} [forceCreate] force creates the user, to be used in conjunction with ensureExistsInWebexSites\n * @property {boolean} [ensureExistsInWebexSites] syncs the user in provided webexSites (syncInWebexSites)\n * @property {Array.<string>} [syncInWebexSites] used to define in which sites account should be synced\n * @property {string} [orgAdminAuthorization] bearer token of org admin to use syncInWebexSites\n */\n\n/**\n * @typedef {Object} TestUserObject\n * @property {string} password\n * @property {string} emailAddress\n * @property {string} displayName\n * @property {string} id\n * @property {string} userName\n * @property {string} email\n * @property {string} name\n * @property {string} givenName\n * @property {string} type\n * @property {Array.<string>} entitlements\n * @property {string} orgId\n * @property {AccessTokenObject} token\n */\n\n/**\n * Creates a test user\n * @param {CreateUserOptions} options\n * @returns {Promise.<TestUserObject>}\n */\nexport function createTestUser(options = {}) {\n const clientId = options.clientId || process.env.WEBEX_CLIENT_ID;\n const clientSecret = options.clientSecret || process.env.WEBEX_CLIENT_SECRET;\n const idbrokerUrl = options.idbrokerUrl || process.env.IDBROKER_BASE_URL;\n const cigServiceUrl =\n options.cigServiceUrl ||\n process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL ||\n process.env.WEBEX_TEST_USERS_CONVERSATION_SERVICE_URL;\n\n if (!clientId) {\n throw new Error('options.clientId or process.env.WEBEX_CLIENT_ID must be defined');\n }\n\n if (!clientSecret) {\n throw new Error('options.clientSecret or process.env.WEBEX_CLIENT_SECRET must be defined');\n }\n\n if (!idbrokerUrl) {\n throw new Error('options.idbrokerUrl or process.env.IDBROKER_BASE_URL must be defined');\n }\n\n if (!cigServiceUrl) {\n throw new Error(\n 'options.cigServiceUrl or process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL must be defined'\n );\n }\n\n const body = {\n authCodeOnly: options.authCodeOnly,\n clientId,\n clientSecret,\n displayName: options.displayName || randomName(),\n emailTemplate: options.emailAddress,\n entitlements: options.entitlements || [\n 'spark',\n 'squaredCallInitiation',\n 'squaredRoomModeration',\n 'squaredInviter',\n 'webExSquared',\n 'basicMessage',\n ],\n idbrokerUrl,\n machineType: options.machineType,\n orgId: options.orgId,\n // The five characters on the end are to hit all the password requirements\n password: options.password || `${uuid.v4()}zAY1*`,\n roles: options.roles || [],\n scopes: options.scope || process.env.WEBEX_SCOPE,\n type: options.type,\n forceCreate: options.forceCreate || false,\n ensureExistsInWebexSites: options.ensureExistsInWebexSites || false,\n syncInWebexSites: options.syncInWebexSites,\n orgAdminAuthorization: options.orgAdminAuthorization,\n };\n\n return requestWithAuth({\n method: 'POST',\n uri: `${cigServiceUrl}${BASE_PATH_SECURE}`,\n json: true,\n body,\n }).then((res) => ({\n password: body.password,\n emailAddress: res.body.user.email,\n displayName: res.body.user.name,\n ...res.body.user,\n token: fixToken(res.body.token),\n }));\n}\n\n/**\n * Exchanges a user name/password for an access token\n * @param {Object} options\n * @param {string} options.id\n * @param {string} options.email\n * @param {string} options.password\n * @param {string} options.clientId\n * @param {string} options.clientSecret\n * @param {string} options.cigServiceUrl\n * @returns {Promise.<AccessTokenObject>}\n */\nexport function loginTestUser(options) {\n const clientId = options.clientId || process.env.WEBEX_CLIENT_ID;\n const clientSecret = options.clientSecret || process.env.WEBEX_CLIENT_SECRET;\n const cigServiceUrl =\n options.cigServiceUrl ||\n process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL ||\n process.env.WEBEX_TEST_USERS_CONVERSATION_SERVICE_URL;\n\n if (!clientId) {\n throw new Error('options.clientId or process.env.WEBEX_CLIENT_ID must be defined');\n }\n\n if (!clientSecret) {\n throw new Error('options.clientSecret or process.env.WEBEX_CLIENT_SECRET must be defined');\n }\n\n if (!cigServiceUrl) {\n throw new Error(\n 'options.cigServiceUrl or process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL must be defined'\n );\n }\n\n return request({\n method: 'POST',\n uri: `${cigServiceUrl}${BASE_PATH}/login`,\n json: true,\n body: _.defaultsDeep(options, {\n clientId,\n clientSecret,\n }),\n }).then((res) => fixToken(res.body));\n}\n\n/**\n * Removes a test user\n * @param {Object} options\n * @param {string} options.id user id to remove\n * @param {string} options.cigServiceUrl\n * @param {Object} options.token\n * @param {string} options.token.authorization\n * @param {string} [options.token.refresh_token]\n * @returns {Promise}\n */\nexport function removeTestUser(options = {}) {\n const cigServiceUrl =\n options.cigServiceUrl ||\n process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL ||\n process.env.WEBEX_TEST_USERS_CONVERSATION_SERVICE_URL;\n\n if (!cigServiceUrl) {\n throw new Error(\n 'options.cigServiceUrl or process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL must be defined'\n );\n }\n\n if (!options.id) {\n return Promise.reject(new Error('options.id is required'));\n }\n\n if (!options.token) {\n return loginTestUser(options).then((token) => {\n options.token = token;\n\n return removeTestUser(options);\n });\n }\n\n assert(options.token.authorization, 'options.token.authorization must be defined');\n\n return request({\n method: 'POST',\n json: true,\n headers: {\n authorization: options.token.authorization,\n },\n body: {\n /* eslint-disable camelcase */\n user_id: options.id,\n refresh_token: options.token.refresh_token,\n user_type: options.userType || 'PERSON',\n /* eslint-enable camelcase */\n },\n uri: `${cigServiceUrl}${BASE_PATH}/delete`,\n });\n}\n\n/**\n * Sets the preferredWebexSite for the provided user\n *\n * This method should be used to ensure a created test user has the right webex site set.\n *\n * @param {Object} options\n * @param {string} options.userId user id to set site\n * @param {string} options.preferredSite new preferred webexsite\n * @param {string} options.orgId orgId of the site\n * @param {string} options.identityServiceUrl url of identity service\n * @param {string} options.authorization\n * @param {string} options.clientId\n * @param {string} options.clientSecret\n * @returns {Promise}\n */\nexport function setPreferredSite(options = {}) {\n const clientId = options.clientId || process.env.WEBEX_CLIENT_ID;\n const clientSecret = options.clientSecret || process.env.WEBEX_CLIENT_SECRET;\n\n if (!clientId) {\n throw new Error('options.clientId or process.env.WEBEX_CLIENT_ID must be defined');\n }\n\n if (!clientSecret) {\n throw new Error('options.clientSecret or process.env.WEBEX_CLIENT_SECRET must be defined');\n }\n\n /* eslint-disable no-useless-escape */\n const body = {\n schemas: ['urn:scim:schemas:core:1.0', 'urn:scim:schemas:extension:cisco:commonidentity:1.0'],\n userPreferences: [\n {\n value: `\\\"preferredWebExSite\\\":\\\"${options.preferredSite}\\\"`,\n },\n ],\n };\n /* eslint-enable no-useless-escape */\n\n return request({\n method: 'PATCH',\n headers: {\n authorization: options.authorization,\n },\n uri: `${options.identityServiceUrl}/identity/scim/${options.orgId}/v1/Users/${options.userId}`,\n json: true,\n body,\n });\n}\n\nexport {\n default as createWhistlerTestUser,\n removeTestUser as removeWhistlerTestUser,\n} from './whistler';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_uuid","_interopRequireDefault","require","_btoa","_lodash","_nodeRandomName","_httpCore","_whistler","_interopRequireWildcard","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","BASE_PATH_SECURE","BASE_PATH","fixToken","token","now","_now","expires_in","expires","refresh_token_expires_in","refresh_token_expires","token_type","access_token","authorization","concat","clientToken","getClientCredentials","_ref","clientId","clientSecret","idbrokerUrl","_promise","resolve","request","method","uri","json","form","grant_type","scope","client_id","client_secret","headers","btoa","then","res","body","requestWithAuth","options","createTestUser","undefined","process","env","WEBEX_CLIENT_ID","WEBEX_CLIENT_SECRET","IDBROKER_BASE_URL","cigServiceUrl","WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL","WEBEX_TEST_USERS_CONVERSATION_SERVICE_URL","Error","authCodeOnly","displayName","randomName","emailTemplate","emailAddress","entitlements","machineType","orgId","password","uuid","v4","roles","scopes","WEBEX_SCOPE","type","forceCreate","ensureExistsInWebexSites","syncInWebexSites","orgAdminAuthorization","user","email","name","loginTestUser","_","defaultsDeep","removeTestUser","id","reject","user_id","refresh_token","user_type","userType","setPreferredSite","schemas","userPreferences","value","preferredSite","identityServiceUrl","userId"],"sources":["index.js"],"sourcesContent":["import uuid from 'uuid';\nimport btoa from 'btoa';\nimport _ from 'lodash';\nimport randomName from 'node-random-name';\nimport {request} from '@webex/http-core';\n\nconst BASE_PATH_SECURE = '/users/test_users_s';\nconst BASE_PATH = '/users/test_users';\n\n/**\n * Computes `expires` and `refresh_token_expires` from `expires_in` and\n * `refresh_token_expires_in` and creates an `authorization` string.\n * @param {Object} token\n * @private\n * @returns {Object}\n */\nfunction fixToken(token) {\n const now = Date.now();\n\n if (token.expires_in && !token.expires) {\n token.expires = now + token.expires_in * 1000;\n }\n\n if (token.refresh_token_expires_in && !token.refresh_token_expires) {\n /* eslint camelcase: [0] */\n token.refresh_token_expires = now + token.refresh_token_expires_in * 1000;\n }\n\n if (token.token_type && token.access_token) {\n token.authorization = `${token.token_type} ${token.access_token}`;\n }\n\n return token;\n}\n\nlet clientToken;\n\n/**\n * Fetches credentials to talk to the test_users_s endpoint\n *\n * Caches result in `clientToken` variable for multiple runs\n * @param {Object} options\n * @param {string} options.clientId\n * @param {string} options.clientSecret\n * @param {string} options.idbrokerUrl\n * @private\n * @returns {String}\n */\nfunction getClientCredentials({clientId, clientSecret, idbrokerUrl}) {\n if (clientToken) {\n return Promise.resolve(clientToken);\n }\n\n return request({\n method: 'POST',\n uri: `${idbrokerUrl}/idb/oauth2/v1/access_token`,\n json: true,\n form: {\n grant_type: 'client_credentials',\n scope:\n 'Identity:SCIM webexsquare:get_conversation spark-test-account:write spark-test-account:read',\n client_id: clientId,\n client_secret: clientSecret,\n },\n headers: {\n // Note: we can't request's auth hash here because this endpoint expects\n // us to send the auth header *without including \"Basic \"* before the\n // token string\n authorization: btoa(`${clientId}:${clientSecret}`),\n },\n })\n .then((res) => {\n const token = fixToken(res.body);\n\n return `${token.token_type} ${token.access_token}`;\n })\n .then((token) => {\n clientToken = token;\n\n return clientToken;\n });\n}\n\n/**\n * Makes a request authorized with client credentials\n * @param {Object} options\n * @param {Object} options.body\n * @param {string} options.body.clientId\n * @param {string} options.body.clientSecret\n * @param {string} options.body.idbrokerUrl\n * @private\n * @returns {Promise<HttpResponseObject>}\n */\nfunction requestWithAuth(options) {\n return getClientCredentials(options.body).then((authorization) => {\n options.headers = options.headers || {};\n options.headers.authorization = authorization;\n\n return request(options);\n });\n}\n\n/**\n * @typedef {Object} AccessTokenObject\n * @property {string} token.access_token\n * @property {Number} token.expires_in\n * @property {string} token.token_type\n * @property {string} token.refresh_token\n * @property {Number} token.refresh_token_expires_in\n * @property {string} token.expires\n * @property {string} token.refresh_token_expires\n */\n\n/**\n * @typedef {Object} CreateUserOptions\n * @property {boolean} [authCodeOnly] generates auth_code\n * @param {string} [clientId] defaults to WEBEX_CLIENT_ID\n * @param {string} [clientSecret] defaults to WEBEX_CLIENT_SECRET\n * @param {string} [cigServiceUrl] defaults to WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL\n * @property {string} [displayName]\n * @property {string} [emailAddress]\n * @property {Array.<string>} [entitlements]\n * @param {string} [idbrokerUrl] defaults to IDBROKER_BASE_URL\n * @property {string} [machineType] used when creating a machine user/device\n * @property {string} [orgId] organization ID to create the user under\n * @property {string} [password] defaults to a random password\n * @property {string} [roles] defaults to []\n * @property {string} [scope] defaults to WEBEX_SCOPE\n * @property {string} [type] used to create a machine\n * @property {boolean} [forceCreate] force creates the user, to be used in conjunction with ensureExistsInWebexSites\n * @property {boolean} [ensureExistsInWebexSites] syncs the user in provided webexSites (syncInWebexSites)\n * @property {Array.<string>} [syncInWebexSites] used to define in which sites account should be synced\n * @property {string} [orgAdminAuthorization] bearer token of org admin to use syncInWebexSites\n */\n\n/**\n * @typedef {Object} TestUserObject\n * @property {string} password\n * @property {string} emailAddress\n * @property {string} displayName\n * @property {string} id\n * @property {string} userName\n * @property {string} email\n * @property {string} name\n * @property {string} givenName\n * @property {string} type\n * @property {Array.<string>} entitlements\n * @property {string} orgId\n * @property {AccessTokenObject} token\n */\n\n/**\n * Creates a test user\n * @param {CreateUserOptions} options\n * @returns {Promise.<TestUserObject>}\n */\nexport function createTestUser(options = {}) {\n const clientId = options.clientId || process.env.WEBEX_CLIENT_ID;\n const clientSecret = options.clientSecret || process.env.WEBEX_CLIENT_SECRET;\n const idbrokerUrl = options.idbrokerUrl || process.env.IDBROKER_BASE_URL;\n const cigServiceUrl =\n options.cigServiceUrl ||\n process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL ||\n process.env.WEBEX_TEST_USERS_CONVERSATION_SERVICE_URL;\n\n if (!clientId) {\n throw new Error('options.clientId or process.env.WEBEX_CLIENT_ID must be defined');\n }\n\n if (!clientSecret) {\n throw new Error('options.clientSecret or process.env.WEBEX_CLIENT_SECRET must be defined');\n }\n\n if (!idbrokerUrl) {\n throw new Error('options.idbrokerUrl or process.env.IDBROKER_BASE_URL must be defined');\n }\n\n if (!cigServiceUrl) {\n throw new Error(\n 'options.cigServiceUrl or process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL must be defined'\n );\n }\n\n const body = {\n authCodeOnly: options.authCodeOnly,\n clientId,\n clientSecret,\n displayName: options.displayName || randomName(),\n emailTemplate: options.emailAddress,\n entitlements: options.entitlements || [\n 'spark',\n 'squaredCallInitiation',\n 'squaredRoomModeration',\n 'squaredInviter',\n 'webExSquared',\n 'basicMessage',\n ],\n idbrokerUrl,\n machineType: options.machineType,\n orgId: options.orgId,\n // The five characters on the end are to hit all the password requirements\n password: options.password || `${uuid.v4()}zAY1*`,\n roles: options.roles || [],\n scopes: options.scope || process.env.WEBEX_SCOPE,\n type: options.type,\n forceCreate: options.forceCreate || false,\n ensureExistsInWebexSites: options.ensureExistsInWebexSites || false,\n syncInWebexSites: options.syncInWebexSites,\n orgAdminAuthorization: options.orgAdminAuthorization,\n };\n\n return requestWithAuth({\n method: 'POST',\n uri: `${cigServiceUrl}${BASE_PATH_SECURE}`,\n json: true,\n body,\n }).then((res) => ({\n password: body.password,\n emailAddress: res.body.user.email,\n displayName: res.body.user.name,\n ...res.body.user,\n token: fixToken(res.body.token),\n }));\n}\n\n/**\n * Exchanges a user name/password for an access token\n * @param {Object} options\n * @param {string} options.id\n * @param {string} options.email\n * @param {string} options.password\n * @param {string} options.clientId\n * @param {string} options.clientSecret\n * @param {string} options.cigServiceUrl\n * @returns {Promise.<AccessTokenObject>}\n */\nexport function loginTestUser(options) {\n const clientId = options.clientId || process.env.WEBEX_CLIENT_ID;\n const clientSecret = options.clientSecret || process.env.WEBEX_CLIENT_SECRET;\n const cigServiceUrl =\n options.cigServiceUrl ||\n process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL ||\n process.env.WEBEX_TEST_USERS_CONVERSATION_SERVICE_URL;\n\n if (!clientId) {\n throw new Error('options.clientId or process.env.WEBEX_CLIENT_ID must be defined');\n }\n\n if (!clientSecret) {\n throw new Error('options.clientSecret or process.env.WEBEX_CLIENT_SECRET must be defined');\n }\n\n if (!cigServiceUrl) {\n throw new Error(\n 'options.cigServiceUrl or process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL must be defined'\n );\n }\n\n return request({\n method: 'POST',\n uri: `${cigServiceUrl}${BASE_PATH}/login`,\n json: true,\n body: _.defaultsDeep(options, {\n clientId,\n clientSecret,\n }),\n }).then((res) => fixToken(res.body));\n}\n\n/**\n * Removes a test user\n * @param {Object} options\n * @param {string} options.id user id to remove\n * @param {string} options.cigServiceUrl\n * @param {Object} options.token\n * @param {string} options.token.authorization\n * @param {string} [options.token.refresh_token]\n * @returns {Promise}\n */\nexport function removeTestUser(options = {}) {\n const clientId = options.clientId || process.env.WEBEX_CLIENT_ID;\n const clientSecret = options.clientSecret || process.env.WEBEX_CLIENT_SECRET;\n const idbrokerUrl = options.idbrokerUrl || process.env.IDBROKER_BASE_URL;\n const cigServiceUrl =\n options.cigServiceUrl ||\n process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL ||\n process.env.WEBEX_TEST_USERS_CONVERSATION_SERVICE_URL;\n\n if (!cigServiceUrl) {\n throw new Error(\n 'options.cigServiceUrl or process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL must be defined'\n );\n }\n\n if (!options.id) {\n return Promise.reject(new Error('options.id is required'));\n }\n\n return getClientCredentials({clientId, clientSecret, idbrokerUrl}).then((authorization) =>\n request({\n method: 'POST',\n json: true,\n headers: {\n authorization,\n },\n body: {\n /* eslint-disable camelcase */\n user_id: options.id,\n refresh_token: options.token && options.token.refresh_token,\n user_type: options.userType || 'PERSON',\n /* eslint-enable camelcase */\n },\n uri: `${cigServiceUrl}${BASE_PATH}/delete`,\n })\n );\n}\n\n/**\n * Sets the preferredWebexSite for the provided user\n *\n * This method should be used to ensure a created test user has the right webex site set.\n *\n * @param {Object} options\n * @param {string} options.userId user id to set site\n * @param {string} options.preferredSite new preferred webexsite\n * @param {string} options.orgId orgId of the site\n * @param {string} options.identityServiceUrl url of identity service\n * @param {string} options.authorization\n * @param {string} options.clientId\n * @param {string} options.clientSecret\n * @returns {Promise}\n */\nexport function setPreferredSite(options = {}) {\n const clientId = options.clientId || process.env.WEBEX_CLIENT_ID;\n const clientSecret = options.clientSecret || process.env.WEBEX_CLIENT_SECRET;\n\n if (!clientId) {\n throw new Error('options.clientId or process.env.WEBEX_CLIENT_ID must be defined');\n }\n\n if (!clientSecret) {\n throw new Error('options.clientSecret or process.env.WEBEX_CLIENT_SECRET must be defined');\n }\n\n /* eslint-disable no-useless-escape */\n const body = {\n schemas: ['urn:scim:schemas:core:1.0', 'urn:scim:schemas:extension:cisco:commonidentity:1.0'],\n userPreferences: [\n {\n value: `\\\"preferredWebExSite\\\":\\\"${options.preferredSite}\\\"`,\n },\n ],\n };\n /* eslint-enable no-useless-escape */\n\n return request({\n method: 'PATCH',\n headers: {\n authorization: options.authorization,\n },\n uri: `${options.identityServiceUrl}/identity/scim/${options.orgId}/v1/Users/${options.userId}`,\n json: true,\n body,\n });\n}\n\nexport {\n default as createWhistlerTestUser,\n removeTestUser as removeWhistlerTestUser,\n} from './whistler';\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -24,18 +24,18 @@
24
24
  "@webex/eslint-config-legacy": "0.0.0",
25
25
  "@webex/jest-config-legacy": "0.0.0",
26
26
  "@webex/legacy-tools": "0.0.0",
27
- "@webex/test-helper-chai": "3.12.0-next.5",
28
- "@webex/test-helper-mocha": "3.12.0-next.5",
29
- "@webex/test-helper-mock-webex": "3.12.0-next.5",
30
- "@webex/test-helper-test-users": "3.12.0-next.5",
27
+ "@webex/test-helper-chai": "3.12.0-next.7",
28
+ "@webex/test-helper-mocha": "3.12.0-next.7",
29
+ "@webex/test-helper-mock-webex": "3.12.0-next.7",
30
+ "@webex/test-helper-test-users": "3.12.0-next.7",
31
31
  "chai": "^4.3.4",
32
32
  "chai-as-promised": "^7.1.1",
33
33
  "eslint": "^8.24.0",
34
34
  "prettier": "^2.7.1"
35
35
  },
36
36
  "dependencies": {
37
- "@webex/http-core": "3.12.0-next.5",
38
- "@webex/test-helper-mocha": "3.12.0-next.5",
37
+ "@webex/http-core": "3.12.0-next.7",
38
+ "@webex/test-helper-mocha": "3.12.0-next.7",
39
39
  "btoa": "^1.2.1",
40
40
  "lodash": "^4.17.21",
41
41
  "node-random-name": "^1.0.1",
@@ -50,5 +50,5 @@
50
50
  "test:integration": "webex-legacy-tools test --integration --runner mocha",
51
51
  "test:style": "eslint ./src/**/*.*"
52
52
  },
53
- "version": "3.12.0-next.5"
53
+ "version": "3.12.0-next.7"
54
54
  }
package/src/index.js CHANGED
@@ -1,5 +1,3 @@
1
- import assert from 'assert';
2
-
3
1
  import uuid from 'uuid';
4
2
  import btoa from 'btoa';
5
3
  import _ from 'lodash';
@@ -280,6 +278,9 @@ export function loginTestUser(options) {
280
278
  * @returns {Promise}
281
279
  */
282
280
  export function removeTestUser(options = {}) {
281
+ const clientId = options.clientId || process.env.WEBEX_CLIENT_ID;
282
+ const clientSecret = options.clientSecret || process.env.WEBEX_CLIENT_SECRET;
283
+ const idbrokerUrl = options.idbrokerUrl || process.env.IDBROKER_BASE_URL;
283
284
  const cigServiceUrl =
284
285
  options.cigServiceUrl ||
285
286
  process.env.WEBEX_TEST_USERS_CI_GATEWAY_SERVICE_URL ||
@@ -295,31 +296,23 @@ export function removeTestUser(options = {}) {
295
296
  return Promise.reject(new Error('options.id is required'));
296
297
  }
297
298
 
298
- if (!options.token) {
299
- return loginTestUser(options).then((token) => {
300
- options.token = token;
301
-
302
- return removeTestUser(options);
303
- });
304
- }
305
-
306
- assert(options.token.authorization, 'options.token.authorization must be defined');
307
-
308
- return request({
309
- method: 'POST',
310
- json: true,
311
- headers: {
312
- authorization: options.token.authorization,
313
- },
314
- body: {
315
- /* eslint-disable camelcase */
316
- user_id: options.id,
317
- refresh_token: options.token.refresh_token,
318
- user_type: options.userType || 'PERSON',
319
- /* eslint-enable camelcase */
320
- },
321
- uri: `${cigServiceUrl}${BASE_PATH}/delete`,
322
- });
299
+ return getClientCredentials({clientId, clientSecret, idbrokerUrl}).then((authorization) =>
300
+ request({
301
+ method: 'POST',
302
+ json: true,
303
+ headers: {
304
+ authorization,
305
+ },
306
+ body: {
307
+ /* eslint-disable camelcase */
308
+ user_id: options.id,
309
+ refresh_token: options.token && options.token.refresh_token,
310
+ user_type: options.userType || 'PERSON',
311
+ /* eslint-enable camelcase */
312
+ },
313
+ uri: `${cigServiceUrl}${BASE_PATH}/delete`,
314
+ })
315
+ );
323
316
  }
324
317
 
325
318
  /**