@webex/test-helper-test-users 3.0.0-beta.13 → 3.0.0-beta.15

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/README.md CHANGED
@@ -69,7 +69,7 @@ const createConfig = {
69
69
  clientSecret: mySpecificValue,
70
70
  idbrokerUrl: mySpecificValue,
71
71
  cigServiceUrl: mySpecificValue,
72
- scope: mySpecificValue
72
+ scope: mySpecificValue,
73
73
  };
74
74
 
75
75
  testUsers.create({config: createConfig});
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["assert","require","_","retry","createTestUser","removeTestUser","createWhistlerTestUser","removeWhistlerTestUser","allUsers","after","timeout","forEach","user","webex","internal","mercury","disconnect","_remove","_create","options","count","promises","i","push","makeUser","all","config","defaults","scopes","process","env","WEBEX_SCOPE","whistler","then","users","map","reservationUrl","catch","reason","console","warn","token","authorization","resolve","setTimeout","module","exports","create","WEBEX_CLIENT_ID","WEBEX_CLIENT_SECRET","remove"],"sources":["index.js"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-env mocha */\n/* eslint camelcase: [0] */\n\nconst assert = require('assert');\n\nconst _ = require('lodash');\nconst retry = require('@webex/test-helper-retry');\nconst {\n createTestUser,\n removeTestUser,\n createWhistlerTestUser,\n removeWhistlerTestUser\n} = require('@webex/test-users');\n\nconst allUsers = [];\n\nif (after) {\n after(function () {\n /* eslint no-invalid-this: [0] */\n this.timeout(120000);\n allUsers.forEach((user) => user.webex && user.webex.internal.mercury && user.webex.internal.mercury.disconnect());\n\n return _remove(allUsers);\n });\n}\n\n/**\n * Helper\n * @param {Object} options\n * @param {number} options.count amount of users to create\n * @param {boolean} options.whistler use Whistler Service to generate test users\n * @param {Object} options.config configuration to pass to test-users library\n * see test-users package for full options\n * @private\n * @returns {Promise<Array<User>>}\n */\nfunction _create(options) {\n options = options || {};\n let {count} = options;\n\n if (!count) {\n count = 1;\n }\n\n const promises = [];\n\n for (let i = 0; i < count; i += 1) {\n promises.push(retry(makeUser));\n }\n\n return Promise.all(promises);\n\n /**\n * Helper\n * @private\n * @returns {Promise<User>}\n */\n function makeUser() {\n const config = _.defaults({\n scopes: process.env.WEBEX_SCOPE\n }, options.config);\n\n return options.whistler ?\n createWhistlerTestUser(config)\n .then((user) => {\n allUsers.push(user);\n\n return user;\n }) :\n createTestUser(config)\n .then((user) => {\n allUsers.push(user);\n\n return user;\n });\n }\n}\n\n/**\n * Helper\n * @param {Array<User>} users\n * @returns {Promise}\n */\nfunction _remove(users) {\n return Promise.all(users.map(async (user) => {\n // Check if user was created using whistler\n if (user.reservationUrl) {\n await removeWhistlerTestUser(user)\n .catch((reason) => {\n console.warn('failed to delete test user', reason);\n });\n }\n else {\n if (user.token && !user.token.authorization) {\n Reflect.deleteProperty(user, 'token');\n }\n\n await removeTestUser(user)\n .catch((reason) => {\n console.warn('failed to delete test user', reason);\n });\n }\n\n // Edge times out waiting for the delete calls to complete (and test user\n // deletion isn't really something we need to wait for anyway) so we'll just\n // give enough time for the requests to go out, then allow the browser to\n // close, even if the requests haven't returned.\n return new Promise((resolve) => {\n setTimeout(resolve, 500);\n });\n }));\n}\n\nmodule.exports = {\n create: (options) => {\n assert(process.env.WEBEX_CLIENT_ID, 'WEBEX_CLIENT_ID must be defined');\n assert(process.env.WEBEX_CLIENT_SECRET, 'WEBEX_CLIENT_SECRET must be defined');\n\n return _create(options);\n },\n remove: _remove\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["assert","require","_","retry","createTestUser","removeTestUser","createWhistlerTestUser","removeWhistlerTestUser","allUsers","after","timeout","forEach","user","webex","internal","mercury","disconnect","_remove","_create","options","count","promises","i","push","makeUser","all","config","defaults","scopes","process","env","WEBEX_SCOPE","whistler","then","users","map","reservationUrl","catch","reason","console","warn","token","authorization","resolve","setTimeout","module","exports","create","WEBEX_CLIENT_ID","WEBEX_CLIENT_SECRET","remove"],"sources":["index.js"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-env mocha */\n/* eslint camelcase: [0] */\n\nconst assert = require('assert');\n\nconst _ = require('lodash');\nconst retry = require('@webex/test-helper-retry');\nconst {\n createTestUser,\n removeTestUser,\n createWhistlerTestUser,\n removeWhistlerTestUser,\n} = require('@webex/test-users');\n\nconst allUsers = [];\n\nif (after) {\n after(function () {\n /* eslint no-invalid-this: [0] */\n this.timeout(120000);\n allUsers.forEach(\n (user) =>\n user.webex && user.webex.internal.mercury && user.webex.internal.mercury.disconnect()\n );\n\n return _remove(allUsers);\n });\n}\n\n/**\n * Helper\n * @param {Object} options\n * @param {number} options.count amount of users to create\n * @param {boolean} options.whistler use Whistler Service to generate test users\n * @param {Object} options.config configuration to pass to test-users library\n * see test-users package for full options\n * @private\n * @returns {Promise<Array<User>>}\n */\nfunction _create(options) {\n options = options || {};\n let {count} = options;\n\n if (!count) {\n count = 1;\n }\n\n const promises = [];\n\n for (let i = 0; i < count; i += 1) {\n promises.push(retry(makeUser));\n }\n\n return Promise.all(promises);\n\n /**\n * Helper\n * @private\n * @returns {Promise<User>}\n */\n function makeUser() {\n const config = _.defaults(\n {\n scopes: process.env.WEBEX_SCOPE,\n },\n options.config\n );\n\n return options.whistler\n ? createWhistlerTestUser(config).then((user) => {\n allUsers.push(user);\n\n return user;\n })\n : createTestUser(config).then((user) => {\n allUsers.push(user);\n\n return user;\n });\n }\n}\n\n/**\n * Helper\n * @param {Array<User>} users\n * @returns {Promise}\n */\nfunction _remove(users) {\n return Promise.all(\n users.map(async (user) => {\n // Check if user was created using whistler\n if (user.reservationUrl) {\n await removeWhistlerTestUser(user).catch((reason) => {\n console.warn('failed to delete test user', reason);\n });\n } else {\n if (user.token && !user.token.authorization) {\n Reflect.deleteProperty(user, 'token');\n }\n\n await removeTestUser(user).catch((reason) => {\n console.warn('failed to delete test user', reason);\n });\n }\n\n // Edge times out waiting for the delete calls to complete (and test user\n // deletion isn't really something we need to wait for anyway) so we'll just\n // give enough time for the requests to go out, then allow the browser to\n // close, even if the requests haven't returned.\n return new Promise((resolve) => {\n setTimeout(resolve, 500);\n });\n })\n );\n}\n\nmodule.exports = {\n create: (options) => {\n assert(process.env.WEBEX_CLIENT_ID, 'WEBEX_CLIENT_ID must be defined');\n assert(process.env.WEBEX_CLIENT_SECRET, 'WEBEX_CLIENT_SECRET must be defined');\n\n return _create(options);\n },\n remove: _remove,\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/test-helper-test-users",
3
- "version": "3.0.0-beta.13",
3
+ "version": "3.0.0-beta.15",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -21,8 +21,8 @@
21
21
  ]
22
22
  },
23
23
  "dependencies": {
24
- "@webex/test-helper-retry": "3.0.0-beta.13",
25
- "@webex/test-users": "3.0.0-beta.13",
24
+ "@webex/test-helper-retry": "3.0.0-beta.15",
25
+ "@webex/test-users": "3.0.0-beta.15",
26
26
  "lodash": "^4.17.21"
27
27
  }
28
28
  }
package/src/index.js CHANGED
@@ -14,7 +14,7 @@ const {
14
14
  createTestUser,
15
15
  removeTestUser,
16
16
  createWhistlerTestUser,
17
- removeWhistlerTestUser
17
+ removeWhistlerTestUser,
18
18
  } = require('@webex/test-users');
19
19
 
20
20
  const allUsers = [];
@@ -23,7 +23,10 @@ if (after) {
23
23
  after(function () {
24
24
  /* eslint no-invalid-this: [0] */
25
25
  this.timeout(120000);
26
- allUsers.forEach((user) => user.webex && user.webex.internal.mercury && user.webex.internal.mercury.disconnect());
26
+ allUsers.forEach(
27
+ (user) =>
28
+ user.webex && user.webex.internal.mercury && user.webex.internal.mercury.disconnect()
29
+ );
27
30
 
28
31
  return _remove(allUsers);
29
32
  });
@@ -61,19 +64,20 @@ function _create(options) {
61
64
  * @returns {Promise<User>}
62
65
  */
63
66
  function makeUser() {
64
- const config = _.defaults({
65
- scopes: process.env.WEBEX_SCOPE
66
- }, options.config);
67
-
68
- return options.whistler ?
69
- createWhistlerTestUser(config)
70
- .then((user) => {
67
+ const config = _.defaults(
68
+ {
69
+ scopes: process.env.WEBEX_SCOPE,
70
+ },
71
+ options.config
72
+ );
73
+
74
+ return options.whistler
75
+ ? createWhistlerTestUser(config).then((user) => {
71
76
  allUsers.push(user);
72
77
 
73
78
  return user;
74
- }) :
75
- createTestUser(config)
76
- .then((user) => {
79
+ })
80
+ : createTestUser(config).then((user) => {
77
81
  allUsers.push(user);
78
82
 
79
83
  return user;
@@ -87,33 +91,32 @@ function _create(options) {
87
91
  * @returns {Promise}
88
92
  */
89
93
  function _remove(users) {
90
- return Promise.all(users.map(async (user) => {
91
- // Check if user was created using whistler
92
- if (user.reservationUrl) {
93
- await removeWhistlerTestUser(user)
94
- .catch((reason) => {
94
+ return Promise.all(
95
+ users.map(async (user) => {
96
+ // Check if user was created using whistler
97
+ if (user.reservationUrl) {
98
+ await removeWhistlerTestUser(user).catch((reason) => {
95
99
  console.warn('failed to delete test user', reason);
96
100
  });
97
- }
98
- else {
99
- if (user.token && !user.token.authorization) {
100
- Reflect.deleteProperty(user, 'token');
101
- }
101
+ } else {
102
+ if (user.token && !user.token.authorization) {
103
+ Reflect.deleteProperty(user, 'token');
104
+ }
102
105
 
103
- await removeTestUser(user)
104
- .catch((reason) => {
106
+ await removeTestUser(user).catch((reason) => {
105
107
  console.warn('failed to delete test user', reason);
106
108
  });
107
- }
108
-
109
- // Edge times out waiting for the delete calls to complete (and test user
110
- // deletion isn't really something we need to wait for anyway) so we'll just
111
- // give enough time for the requests to go out, then allow the browser to
112
- // close, even if the requests haven't returned.
113
- return new Promise((resolve) => {
114
- setTimeout(resolve, 500);
115
- });
116
- }));
109
+ }
110
+
111
+ // Edge times out waiting for the delete calls to complete (and test user
112
+ // deletion isn't really something we need to wait for anyway) so we'll just
113
+ // give enough time for the requests to go out, then allow the browser to
114
+ // close, even if the requests haven't returned.
115
+ return new Promise((resolve) => {
116
+ setTimeout(resolve, 500);
117
+ });
118
+ })
119
+ );
117
120
  }
118
121
 
119
122
  module.exports = {
@@ -123,5 +126,5 @@ module.exports = {
123
126
 
124
127
  return _create(options);
125
128
  },
126
- remove: _remove
129
+ remove: _remove,
127
130
  };