sfdx-browserforce-plugin 5.0.1 → 5.1.0

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.
Files changed (254) hide show
  1. package/package.json +2 -5
  2. package/lib/browserforce-command.d.ts +0 -15
  3. package/lib/browserforce-command.js +0 -61
  4. package/lib/browserforce-command.js.map +0 -1
  5. package/lib/browserforce.d.ts +0 -25
  6. package/lib/browserforce.js +0 -169
  7. package/lib/browserforce.js.map +0 -1
  8. package/lib/commands/browserforce/apply.d.ts +0 -10
  9. package/lib/commands/browserforce/apply.js +0 -54
  10. package/lib/commands/browserforce/apply.js.map +0 -1
  11. package/lib/commands/browserforce/plan.d.ts +0 -10
  12. package/lib/commands/browserforce/plan.js +0 -56
  13. package/lib/commands/browserforce/plan.js.map +0 -1
  14. package/lib/config-parser.d.ts +0 -16
  15. package/lib/config-parser.js +0 -24
  16. package/lib/config-parser.js.map +0 -1
  17. package/lib/index.d.ts +0 -1
  18. package/lib/index.js +0 -2
  19. package/lib/index.js.map +0 -1
  20. package/lib/jsforce-utils.d.ts +0 -5
  21. package/lib/jsforce-utils.js +0 -14
  22. package/lib/jsforce-utils.js.map +0 -1
  23. package/lib/pages/login.d.ts +0 -8
  24. package/lib/pages/login.js +0 -39
  25. package/lib/pages/login.js.map +0 -1
  26. package/lib/plugin.d.ts +0 -17
  27. package/lib/plugin.js +0 -30
  28. package/lib/plugin.js.map +0 -1
  29. package/lib/plugins/activity-settings/index.d.ts +0 -9
  30. package/lib/plugins/activity-settings/index.e2e-spec.d.ts +0 -1
  31. package/lib/plugins/activity-settings/index.e2e-spec.js +0 -36
  32. package/lib/plugins/activity-settings/index.e2e-spec.js.map +0 -1
  33. package/lib/plugins/activity-settings/index.js +0 -31
  34. package/lib/plugins/activity-settings/index.js.map +0 -1
  35. package/lib/plugins/company-information/index.d.ts +0 -8
  36. package/lib/plugins/company-information/index.e2e-spec.d.ts +0 -1
  37. package/lib/plugins/company-information/index.e2e-spec.js +0 -37
  38. package/lib/plugins/company-information/index.e2e-spec.js.map +0 -1
  39. package/lib/plugins/company-information/index.js +0 -50
  40. package/lib/plugins/company-information/index.js.map +0 -1
  41. package/lib/plugins/customer-portal/available-custom-objects/index.d.ts +0 -14
  42. package/lib/plugins/customer-portal/available-custom-objects/index.js +0 -114
  43. package/lib/plugins/customer-portal/available-custom-objects/index.js.map +0 -1
  44. package/lib/plugins/customer-portal/available-custom-objects/index.test.d.ts +0 -1
  45. package/lib/plugins/customer-portal/available-custom-objects/index.test.js +0 -39
  46. package/lib/plugins/customer-portal/available-custom-objects/index.test.js.map +0 -1
  47. package/lib/plugins/customer-portal/enabled/index.d.ts +0 -6
  48. package/lib/plugins/customer-portal/enabled/index.js +0 -27
  49. package/lib/plugins/customer-portal/enabled/index.js.map +0 -1
  50. package/lib/plugins/customer-portal/enabled/index.test.d.ts +0 -1
  51. package/lib/plugins/customer-portal/enabled/index.test.js +0 -34
  52. package/lib/plugins/customer-portal/enabled/index.test.js.map +0 -1
  53. package/lib/plugins/customer-portal/index.d.ts +0 -15
  54. package/lib/plugins/customer-portal/index.e2e-spec.d.ts +0 -1
  55. package/lib/plugins/customer-portal/index.e2e-spec.js +0 -202
  56. package/lib/plugins/customer-portal/index.e2e-spec.js.map +0 -1
  57. package/lib/plugins/customer-portal/index.js +0 -59
  58. package/lib/plugins/customer-portal/index.js.map +0 -1
  59. package/lib/plugins/customer-portal/index.test.d.ts +0 -1
  60. package/lib/plugins/customer-portal/index.test.js +0 -84
  61. package/lib/plugins/customer-portal/index.test.js.map +0 -1
  62. package/lib/plugins/customer-portal/portals/index.d.ts +0 -25
  63. package/lib/plugins/customer-portal/portals/index.js +0 -180
  64. package/lib/plugins/customer-portal/portals/index.js.map +0 -1
  65. package/lib/plugins/customer-portal/portals/index.test.d.ts +0 -1
  66. package/lib/plugins/customer-portal/portals/index.test.js +0 -140
  67. package/lib/plugins/customer-portal/portals/index.test.js.map +0 -1
  68. package/lib/plugins/density-settings/index.d.ts +0 -17
  69. package/lib/plugins/density-settings/index.e2e-spec.d.ts +0 -1
  70. package/lib/plugins/density-settings/index.e2e-spec.js +0 -39
  71. package/lib/plugins/density-settings/index.e2e-spec.js.map +0 -1
  72. package/lib/plugins/density-settings/index.js +0 -46
  73. package/lib/plugins/density-settings/index.js.map +0 -1
  74. package/lib/plugins/deprecated.d.ts +0 -4
  75. package/lib/plugins/deprecated.js +0 -28
  76. package/lib/plugins/deprecated.js.map +0 -1
  77. package/lib/plugins/email-deliverability/index.d.ts +0 -9
  78. package/lib/plugins/email-deliverability/index.e2e-spec.d.ts +0 -1
  79. package/lib/plugins/email-deliverability/index.e2e-spec.js +0 -55
  80. package/lib/plugins/email-deliverability/index.e2e-spec.js.map +0 -1
  81. package/lib/plugins/email-deliverability/index.js +0 -39
  82. package/lib/plugins/email-deliverability/index.js.map +0 -1
  83. package/lib/plugins/high-velocity-sales-settings/index.d.ts +0 -10
  84. package/lib/plugins/high-velocity-sales-settings/index.e2e-spec.d.ts +0 -1
  85. package/lib/plugins/high-velocity-sales-settings/index.e2e-spec.js +0 -29
  86. package/lib/plugins/high-velocity-sales-settings/index.e2e-spec.js.map +0 -1
  87. package/lib/plugins/high-velocity-sales-settings/index.js +0 -42
  88. package/lib/plugins/high-velocity-sales-settings/index.js.map +0 -1
  89. package/lib/plugins/high-velocity-sales-settings/page.d.ts +0 -7
  90. package/lib/plugins/high-velocity-sales-settings/page.js +0 -29
  91. package/lib/plugins/high-velocity-sales-settings/page.js.map +0 -1
  92. package/lib/plugins/history-tracking/index.d.ts +0 -17
  93. package/lib/plugins/history-tracking/index.e2e-spec.d.ts +0 -1
  94. package/lib/plugins/history-tracking/index.e2e-spec.js +0 -106
  95. package/lib/plugins/history-tracking/index.e2e-spec.js.map +0 -1
  96. package/lib/plugins/history-tracking/index.js +0 -169
  97. package/lib/plugins/history-tracking/index.js.map +0 -1
  98. package/lib/plugins/home-page-layouts/index.d.ts +0 -14
  99. package/lib/plugins/home-page-layouts/index.e2e-spec.d.ts +0 -1
  100. package/lib/plugins/home-page-layouts/index.e2e-spec.js +0 -47
  101. package/lib/plugins/home-page-layouts/index.e2e-spec.js.map +0 -1
  102. package/lib/plugins/home-page-layouts/index.js +0 -90
  103. package/lib/plugins/home-page-layouts/index.js.map +0 -1
  104. package/lib/plugins/home-page-layouts/index.test.d.ts +0 -1
  105. package/lib/plugins/home-page-layouts/index.test.js +0 -104
  106. package/lib/plugins/home-page-layouts/index.test.js.map +0 -1
  107. package/lib/plugins/index.d.ts +0 -23
  108. package/lib/plugins/index.js +0 -24
  109. package/lib/plugins/index.js.map +0 -1
  110. package/lib/plugins/lightning-experience-settings/index.d.ts +0 -17
  111. package/lib/plugins/lightning-experience-settings/index.e2e-spec.d.ts +0 -1
  112. package/lib/plugins/lightning-experience-settings/index.e2e-spec.js +0 -39
  113. package/lib/plugins/lightning-experience-settings/index.e2e-spec.js.map +0 -1
  114. package/lib/plugins/lightning-experience-settings/index.js +0 -61
  115. package/lib/plugins/lightning-experience-settings/index.js.map +0 -1
  116. package/lib/plugins/linkedin-sales-navigator-settings/index.d.ts +0 -8
  117. package/lib/plugins/linkedin-sales-navigator-settings/index.e2e-spec.d.ts +0 -1
  118. package/lib/plugins/linkedin-sales-navigator-settings/index.e2e-spec.js +0 -29
  119. package/lib/plugins/linkedin-sales-navigator-settings/index.e2e-spec.js.map +0 -1
  120. package/lib/plugins/linkedin-sales-navigator-settings/index.js +0 -15
  121. package/lib/plugins/linkedin-sales-navigator-settings/index.js.map +0 -1
  122. package/lib/plugins/linkedin-sales-navigator-settings/page.d.ts +0 -8
  123. package/lib/plugins/linkedin-sales-navigator-settings/page.js +0 -32
  124. package/lib/plugins/linkedin-sales-navigator-settings/page.js.map +0 -1
  125. package/lib/plugins/omni-channel-settings/index.d.ts +0 -9
  126. package/lib/plugins/omni-channel-settings/index.e2e-spec.d.ts +0 -1
  127. package/lib/plugins/omni-channel-settings/index.e2e-spec.js +0 -26
  128. package/lib/plugins/omni-channel-settings/index.e2e-spec.js.map +0 -1
  129. package/lib/plugins/omni-channel-settings/index.js +0 -29
  130. package/lib/plugins/omni-channel-settings/index.js.map +0 -1
  131. package/lib/plugins/opportunity-splits/index.d.ts +0 -9
  132. package/lib/plugins/opportunity-splits/index.e2e-spec.d.ts +0 -1
  133. package/lib/plugins/opportunity-splits/index.e2e-spec.js +0 -46
  134. package/lib/plugins/opportunity-splits/index.e2e-spec.js.map +0 -1
  135. package/lib/plugins/opportunity-splits/index.js +0 -32
  136. package/lib/plugins/opportunity-splits/index.js.map +0 -1
  137. package/lib/plugins/opportunity-splits/pages/layout-selection.d.ts +0 -8
  138. package/lib/plugins/opportunity-splits/pages/layout-selection.js +0 -17
  139. package/lib/plugins/opportunity-splits/pages/layout-selection.js.map +0 -1
  140. package/lib/plugins/opportunity-splits/pages/overview.d.ts +0 -10
  141. package/lib/plugins/opportunity-splits/pages/overview.js +0 -38
  142. package/lib/plugins/opportunity-splits/pages/overview.js.map +0 -1
  143. package/lib/plugins/opportunity-splits/pages/setup.d.ts +0 -8
  144. package/lib/plugins/opportunity-splits/pages/setup.js +0 -19
  145. package/lib/plugins/opportunity-splits/pages/setup.js.map +0 -1
  146. package/lib/plugins/permission-sets/index.d.ts +0 -10
  147. package/lib/plugins/permission-sets/index.e2e-spec.d.ts +0 -1
  148. package/lib/plugins/permission-sets/index.e2e-spec.js +0 -36
  149. package/lib/plugins/permission-sets/index.e2e-spec.js.map +0 -1
  150. package/lib/plugins/permission-sets/index.js +0 -22
  151. package/lib/plugins/permission-sets/index.js.map +0 -1
  152. package/lib/plugins/permission-sets/service-presence-status/index.d.ts +0 -10
  153. package/lib/plugins/permission-sets/service-presence-status/index.js +0 -60
  154. package/lib/plugins/permission-sets/service-presence-status/index.js.map +0 -1
  155. package/lib/plugins/picklists/field-dependencies/index.d.ts +0 -11
  156. package/lib/plugins/picklists/field-dependencies/index.js +0 -56
  157. package/lib/plugins/picklists/field-dependencies/index.js.map +0 -1
  158. package/lib/plugins/picklists/field-dependencies/index.test.d.ts +0 -1
  159. package/lib/plugins/picklists/field-dependencies/index.test.js +0 -64
  160. package/lib/plugins/picklists/field-dependencies/index.test.js.map +0 -1
  161. package/lib/plugins/picklists/field-dependencies/pages.d.ts +0 -14
  162. package/lib/plugins/picklists/field-dependencies/pages.js +0 -57
  163. package/lib/plugins/picklists/field-dependencies/pages.js.map +0 -1
  164. package/lib/plugins/picklists/index.d.ts +0 -23
  165. package/lib/plugins/picklists/index.e2e-spec.d.ts +0 -1
  166. package/lib/plugins/picklists/index.e2e-spec.js +0 -100
  167. package/lib/plugins/picklists/index.e2e-spec.js.map +0 -1
  168. package/lib/plugins/picklists/index.js +0 -153
  169. package/lib/plugins/picklists/index.js.map +0 -1
  170. package/lib/plugins/picklists/pages.d.ts +0 -40
  171. package/lib/plugins/picklists/pages.js +0 -194
  172. package/lib/plugins/picklists/pages.js.map +0 -1
  173. package/lib/plugins/picklists/standard-value-set.d.ts +0 -1
  174. package/lib/plugins/picklists/standard-value-set.js +0 -80
  175. package/lib/plugins/picklists/standard-value-set.js.map +0 -1
  176. package/lib/plugins/record-types/index.d.ts +0 -13
  177. package/lib/plugins/record-types/index.e2e-spec.d.ts +0 -1
  178. package/lib/plugins/record-types/index.e2e-spec.js +0 -73
  179. package/lib/plugins/record-types/index.e2e-spec.js.map +0 -1
  180. package/lib/plugins/record-types/index.js +0 -70
  181. package/lib/plugins/record-types/index.js.map +0 -1
  182. package/lib/plugins/record-types/pages.d.ts +0 -15
  183. package/lib/plugins/record-types/pages.js +0 -64
  184. package/lib/plugins/record-types/pages.js.map +0 -1
  185. package/lib/plugins/relate-contact-to-multiple-accounts/index.d.ts +0 -11
  186. package/lib/plugins/relate-contact-to-multiple-accounts/index.e2e-spec.d.ts +0 -1
  187. package/lib/plugins/relate-contact-to-multiple-accounts/index.e2e-spec.js +0 -29
  188. package/lib/plugins/relate-contact-to-multiple-accounts/index.e2e-spec.js.map +0 -1
  189. package/lib/plugins/relate-contact-to-multiple-accounts/index.js +0 -72
  190. package/lib/plugins/relate-contact-to-multiple-accounts/index.js.map +0 -1
  191. package/lib/plugins/reports-and-dashboards/folder-sharing/index.d.ts +0 -8
  192. package/lib/plugins/reports-and-dashboards/folder-sharing/index.e2e-spec.d.ts +0 -1
  193. package/lib/plugins/reports-and-dashboards/folder-sharing/index.e2e-spec.js +0 -3
  194. package/lib/plugins/reports-and-dashboards/folder-sharing/index.e2e-spec.js.map +0 -1
  195. package/lib/plugins/reports-and-dashboards/folder-sharing/index.js +0 -50
  196. package/lib/plugins/reports-and-dashboards/folder-sharing/index.js.map +0 -1
  197. package/lib/plugins/reports-and-dashboards/index.d.ts +0 -11
  198. package/lib/plugins/reports-and-dashboards/index.e2e-spec.d.ts +0 -1
  199. package/lib/plugins/reports-and-dashboards/index.e2e-spec.js +0 -3
  200. package/lib/plugins/reports-and-dashboards/index.e2e-spec.js.map +0 -1
  201. package/lib/plugins/reports-and-dashboards/index.js +0 -29
  202. package/lib/plugins/reports-and-dashboards/index.js.map +0 -1
  203. package/lib/plugins/salesforce-cpq-config/formConfig.d.ts +0 -17
  204. package/lib/plugins/salesforce-cpq-config/formConfig.js +0 -649
  205. package/lib/plugins/salesforce-cpq-config/formConfig.js.map +0 -1
  206. package/lib/plugins/salesforce-cpq-config/index.d.ts +0 -7
  207. package/lib/plugins/salesforce-cpq-config/index.e2e-spec.d.ts +0 -1
  208. package/lib/plugins/salesforce-cpq-config/index.e2e-spec.js +0 -37
  209. package/lib/plugins/salesforce-cpq-config/index.e2e-spec.js.map +0 -1
  210. package/lib/plugins/salesforce-cpq-config/index.js +0 -195
  211. package/lib/plugins/salesforce-cpq-config/index.js.map +0 -1
  212. package/lib/plugins/salesforce-to-salesforce/index.d.ts +0 -9
  213. package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.d.ts +0 -1
  214. package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.js +0 -34
  215. package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.js.map +0 -1
  216. package/lib/plugins/salesforce-to-salesforce/index.js +0 -44
  217. package/lib/plugins/salesforce-to-salesforce/index.js.map +0 -1
  218. package/lib/plugins/security/authentication-configuration/index.d.ts +0 -11
  219. package/lib/plugins/security/authentication-configuration/index.e2e-spec.d.ts +0 -1
  220. package/lib/plugins/security/authentication-configuration/index.e2e-spec.js +0 -101
  221. package/lib/plugins/security/authentication-configuration/index.e2e-spec.js.map +0 -1
  222. package/lib/plugins/security/authentication-configuration/index.js +0 -62
  223. package/lib/plugins/security/authentication-configuration/index.js.map +0 -1
  224. package/lib/plugins/security/certificate-and-key-management/index.d.ts +0 -23
  225. package/lib/plugins/security/certificate-and-key-management/index.e2e-spec.d.ts +0 -1
  226. package/lib/plugins/security/certificate-and-key-management/index.e2e-spec.js +0 -63
  227. package/lib/plugins/security/certificate-and-key-management/index.e2e-spec.js.map +0 -1
  228. package/lib/plugins/security/certificate-and-key-management/index.js +0 -159
  229. package/lib/plugins/security/certificate-and-key-management/index.js.map +0 -1
  230. package/lib/plugins/security/certificate-and-key-management/index.test.d.ts +0 -1
  231. package/lib/plugins/security/certificate-and-key-management/index.test.js +0 -61
  232. package/lib/plugins/security/certificate-and-key-management/index.test.js.map +0 -1
  233. package/lib/plugins/security/index.d.ts +0 -13
  234. package/lib/plugins/security/index.js +0 -42
  235. package/lib/plugins/security/index.js.map +0 -1
  236. package/lib/plugins/service-channels/capacity/index.d.ts +0 -18
  237. package/lib/plugins/service-channels/capacity/index.js +0 -133
  238. package/lib/plugins/service-channels/capacity/index.js.map +0 -1
  239. package/lib/plugins/service-channels/index.d.ts +0 -12
  240. package/lib/plugins/service-channels/index.e2e-spec.d.ts +0 -1
  241. package/lib/plugins/service-channels/index.e2e-spec.js +0 -57
  242. package/lib/plugins/service-channels/index.e2e-spec.js.map +0 -1
  243. package/lib/plugins/service-channels/index.js +0 -38
  244. package/lib/plugins/service-channels/index.js.map +0 -1
  245. package/lib/plugins/slack/index.d.ts +0 -9
  246. package/lib/plugins/slack/index.e2e-spec.d.ts +0 -1
  247. package/lib/plugins/slack/index.e2e-spec.js +0 -47
  248. package/lib/plugins/slack/index.e2e-spec.js.map +0 -1
  249. package/lib/plugins/slack/index.js +0 -47
  250. package/lib/plugins/slack/index.js.map +0 -1
  251. package/lib/plugins/utils.d.ts +0 -3
  252. package/lib/plugins/utils.js +0 -47
  253. package/lib/plugins/utils.js.map +0 -1
  254. package/oclif.manifest.json +0 -163
@@ -1,63 +0,0 @@
1
- import { Org } from '@salesforce/core';
2
- import assert from 'assert';
3
- import { spawnSync } from 'node:child_process';
4
- import { join, resolve } from 'node:path';
5
- import { fileURLToPath } from 'node:url';
6
- import { CertificateAndKeyManagement } from './index.js';
7
- describe(CertificateAndKeyManagement.name, function () {
8
- let pluginCertificateManagement;
9
- before(() => {
10
- pluginCertificateManagement = new CertificateAndKeyManagement(global.bf);
11
- });
12
- const configGeneratedCert = {
13
- certificates: [
14
- {
15
- name: 'identity_provider',
16
- label: 'identity_provider',
17
- },
18
- ],
19
- };
20
- const configImportFromKeystore = {
21
- importFromKeystore: [
22
- {
23
- filePath: './src/plugins/security/certificate-and-key-management/Dummy.jks',
24
- name: 'Dummy',
25
- },
26
- ],
27
- };
28
- it('should enable Identity Provider as a prerequisite', async () => {
29
- // https://salesforce.stackexchange.com/questions/61618/import-keystore-in-certificate-and-key-management
30
- const __dirname = fileURLToPath(new URL('.', import.meta.url));
31
- const dir = resolve(join(__dirname, 'sfdx-source', 'identity-provider'));
32
- const sourceDeployCmd = spawnSync('sf', [
33
- 'project',
34
- 'deploy',
35
- 'start',
36
- '-d',
37
- dir,
38
- '--json',
39
- ]);
40
- assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
41
- });
42
- it('should create a self-signed certificate', async () => {
43
- await pluginCertificateManagement.apply(configGeneratedCert);
44
- });
45
- it('should not do anything if self-signed certificate is already available', async () => {
46
- // explictly pass definition to retrieve
47
- const res = await pluginCertificateManagement.run(configGeneratedCert);
48
- assert.deepStrictEqual(res, { message: 'no action necessary' });
49
- });
50
- it('should import a cert from a keystore', async () => {
51
- await pluginCertificateManagement.run(configImportFromKeystore);
52
- });
53
- it('should not do anything if cert is already available in keystore', async () => {
54
- const res = await pluginCertificateManagement.run(configImportFromKeystore);
55
- assert.deepStrictEqual(res, { message: 'no action necessary' });
56
- });
57
- it('should delete certificates using Metadata API', async () => {
58
- const org = await Org.create({});
59
- const conn = org.getConnection();
60
- await conn.metadata.delete('Certificate', ['identity_provider', 'Dummy']);
61
- });
62
- });
63
- //# sourceMappingURL=index.e2e-spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../../src/plugins/security/certificate-and-key-management/index.e2e-spec.ts"],"names":[],"mappings":"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"}
@@ -1,159 +0,0 @@
1
- import { existsSync } from 'fs';
2
- import * as path from 'path';
3
- import * as queryString from 'querystring';
4
- import { BrowserforcePlugin } from '../../../plugin.js';
5
- const CERT_PREFIX_PATH = '0P1';
6
- const KEYSTORE_IMPORT_PATH = '_ui/security/certificate/KeyStoreImportUi/e';
7
- const FILE_UPLOAD_SELECTOR = 'input[type="file"]';
8
- const KEYSTORE_PASSWORD_SELECTOR = 'input#Password';
9
- const SAVE_BUTTON_SELECTOR = 'input[name="save"]';
10
- export class CertificateAndKeyManagement extends BrowserforcePlugin {
11
- async retrieve(definition) {
12
- const response = {
13
- certificates: [],
14
- importFromKeystore: [],
15
- };
16
- let existingCertificates = [];
17
- if (definition?.certificates?.length ||
18
- definition?.importFromKeystore?.length) {
19
- existingCertificates =
20
- // Note: Unfortunately scanAll=false has no impact and returns deleted records.
21
- // Workaround: Order by CreatedDate DESC to get the latest record first.
22
- (await this.org
23
- .getConnection()
24
- .tooling.query(`SELECT Id, DeveloperName, MasterLabel, OptionsIsPrivateKeyExportable, KeySize FROM Certificate ORDER BY CreatedDate DESC`, { scanAll: false }))?.records;
25
- }
26
- if (definition?.certificates?.length) {
27
- for (const cert of definition.certificates) {
28
- const existingCert = existingCertificates.find((co) => co.DeveloperName === cert.name);
29
- if (existingCert) {
30
- response.certificates.push({
31
- _id: existingCert.Id,
32
- name: existingCert.DeveloperName,
33
- label: existingCert.MasterLabel,
34
- exportable: existingCert.OptionsIsPrivateKeyExportable,
35
- keySize: existingCert.KeySize,
36
- });
37
- }
38
- }
39
- }
40
- if (definition?.importFromKeystore?.length) {
41
- for (const cert of definition.importFromKeystore) {
42
- const existingCert = existingCertificates.find((co) => co.DeveloperName === cert.name);
43
- if (existingCert) {
44
- response.importFromKeystore.push({
45
- name: existingCert.DeveloperName,
46
- });
47
- }
48
- }
49
- }
50
- return response;
51
- }
52
- diff(state, definition) {
53
- const response = {};
54
- if (state && definition && state.certificates && definition.certificates) {
55
- for (const cert of definition.certificates) {
56
- const existingCert = state.certificates.find((c) => c.name === cert.name);
57
- if (existingCert) {
58
- // copy id from state to definition to be retained and used
59
- cert._id = existingCert._id;
60
- }
61
- const certDiff = super.diff(existingCert, cert);
62
- if (certDiff !== undefined) {
63
- if (!response.certificates) {
64
- response.certificates = [];
65
- }
66
- response.certificates.push(certDiff);
67
- }
68
- }
69
- }
70
- if (definition?.importFromKeystore?.length) {
71
- const importFromKeystore = definition?.importFromKeystore?.filter((cert) => !state?.importFromKeystore?.find((c) => c.name === cert.name));
72
- if (importFromKeystore.length) {
73
- response.importFromKeystore = importFromKeystore;
74
- }
75
- }
76
- return Object.keys(response).length ? response : undefined;
77
- }
78
- async apply(plan) {
79
- if (plan.certificates) {
80
- for (const certificate of plan.certificates) {
81
- if (certificate._id) {
82
- // update
83
- }
84
- else {
85
- // create new
86
- const urlAttributes = {
87
- DeveloperName: certificate.name,
88
- MasterLabel: certificate.label,
89
- };
90
- if (certificate.keySize) {
91
- urlAttributes['keySize'] = certificate.keySize;
92
- }
93
- if (certificate.exportable !== undefined) {
94
- urlAttributes['exp'] = certificate.exportable ? 1 : 0;
95
- }
96
- const page = await this.browserforce.openPage(`${CERT_PREFIX_PATH}/e?${queryString.stringify(urlAttributes)}`);
97
- await page.waitForSelector(SAVE_BUTTON_SELECTOR);
98
- await Promise.all([
99
- page.waitForNavigation(),
100
- page.click(SAVE_BUTTON_SELECTOR),
101
- ]);
102
- await page.close();
103
- }
104
- }
105
- }
106
- if (plan.importFromKeystore) {
107
- for (const certificate of plan.importFromKeystore) {
108
- const page = await this.browserforce.openPage(`${KEYSTORE_IMPORT_PATH}`);
109
- await page.waitForSelector(FILE_UPLOAD_SELECTOR);
110
- const elementHandle = (await page.$(FILE_UPLOAD_SELECTOR));
111
- // TODO: make relative to this.command.flags.definitionfile
112
- if (!certificate.filePath) {
113
- throw new Error(`To import a certificate, the filePath is mandatory.`);
114
- }
115
- const filePath = path.resolve(certificate.filePath);
116
- if (!existsSync(filePath)) {
117
- throw new Error(`file does not exist: ${filePath}`);
118
- }
119
- await elementHandle.uploadFile(filePath);
120
- if (certificate.password) {
121
- await page.waitForSelector(KEYSTORE_PASSWORD_SELECTOR);
122
- await page.type(KEYSTORE_PASSWORD_SELECTOR, certificate.password);
123
- }
124
- await page.waitForSelector(SAVE_BUTTON_SELECTOR);
125
- await Promise.all([
126
- page.waitForNavigation(),
127
- page.click(SAVE_BUTTON_SELECTOR),
128
- ]);
129
- try {
130
- await this.browserforce.throwPageErrors(page);
131
- }
132
- catch (e) {
133
- if (e.message === 'Data Not Available') {
134
- throw new Error('Failed to import certificate from Keystore. Please enable Identity Provider first. https://salesforce.stackexchange.com/questions/61618/import-keystore-in-certificate-and-key-management');
135
- }
136
- throw e;
137
- }
138
- if (certificate.name) {
139
- // rename cert as it has the wrong name
140
- // JKS aliases are case-insensitive (and so lowercase)
141
- const certsResponse = await this.org
142
- .getConnection()
143
- .tooling.query(`SELECT Id FROM Certificate WHERE DeveloperName = '${certificate.name.toLowerCase()}'`);
144
- const importedCert = certsResponse.records[0];
145
- const certPage = await this.browserforce.openPage(`${importedCert.Id}/e?MasterLabel=${certificate.name}&DeveloperName=${certificate.name}`);
146
- await certPage.waitForSelector(SAVE_BUTTON_SELECTOR);
147
- await Promise.all([
148
- certPage.waitForNavigation(),
149
- certPage.click(SAVE_BUTTON_SELECTOR),
150
- ]);
151
- await this.browserforce.throwPageErrors(certPage);
152
- await certPage.close();
153
- }
154
- await page.close();
155
- }
156
- }
157
- }
158
- }
159
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/security/certificate-and-key-management/index.ts"],"names":[],"mappings":"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"}
@@ -1,61 +0,0 @@
1
- import assert from 'assert';
2
- import { CertificateAndKeyManagement } from './index.js';
3
- const tests = [
4
- {
5
- description: 'should not do anything if keystore already exists',
6
- source: {
7
- importFromKeystore: [
8
- {
9
- name: 'Dummy',
10
- },
11
- ],
12
- },
13
- target: {
14
- importFromKeystore: [
15
- {
16
- name: 'Dummy',
17
- filePath: 'foo.jks',
18
- },
19
- ],
20
- },
21
- expected: undefined,
22
- },
23
- {
24
- description: 'should try to import keystore',
25
- source: {
26
- importFromKeystore: [
27
- {
28
- name: 'Foo',
29
- },
30
- ],
31
- },
32
- target: {
33
- importFromKeystore: [
34
- {
35
- name: 'Dummy',
36
- filePath: 'foo.jks',
37
- },
38
- ],
39
- },
40
- expected: {
41
- importFromKeystore: [
42
- {
43
- name: 'Dummy',
44
- filePath: 'foo.jks',
45
- },
46
- ],
47
- },
48
- },
49
- ];
50
- describe('CertificateAndKeyManagement', () => {
51
- describe('diff()', () => {
52
- const p = new CertificateAndKeyManagement(global.bf);
53
- for (const t of tests) {
54
- it(t.description, () => {
55
- const actual = p.diff(t.source, t.target);
56
- assert.deepStrictEqual(actual, t.expected);
57
- });
58
- }
59
- });
60
- });
61
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/plugins/security/certificate-and-key-management/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,2BAA2B,EAAU,MAAM,YAAY,CAAC;AASjE,MAAM,KAAK,GAAQ;IACjB;QACE,WAAW,EAAE,mDAAmD;QAChE,MAAM,EAAE;YACN,kBAAkB,EAAE;gBAClB;oBACE,IAAI,EAAE,OAAO;iBACd;aACF;SACF;QACD,MAAM,EAAE;YACN,kBAAkB,EAAE;gBAClB;oBACE,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,SAAS;iBACpB;aACF;SACF;QACD,QAAQ,EAAE,SAAS;KACpB;IACD;QACE,WAAW,EAAE,+BAA+B;QAC5C,MAAM,EAAE;YACN,kBAAkB,EAAE;gBAClB;oBACE,IAAI,EAAE,KAAK;iBACZ;aACF;SACF;QACD,MAAM,EAAE;YACN,kBAAkB,EAAE;gBAClB;oBACE,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,SAAS;iBACpB;aACF;SACF;QACD,QAAQ,EAAE;YACR,kBAAkB,EAAE;gBAClB;oBACE,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,SAAS;iBACpB;aACF;SACF;KACF;CACF,CAAC;AAEF,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,GAAG,IAAI,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE;gBACrB,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,13 +0,0 @@
1
- import { BrowserforcePlugin } from '../../plugin.js';
2
- import { Config as AuthenticationConfigurationConfig } from './authentication-configuration/index.js';
3
- import { Config as CertificateAndKeyManagementConfig } from './certificate-and-key-management/index.js';
4
- type Config = {
5
- certificateAndKeyManagement?: CertificateAndKeyManagementConfig;
6
- authenticationConfiguration?: AuthenticationConfigurationConfig;
7
- };
8
- export declare class Security extends BrowserforcePlugin {
9
- retrieve(definition?: Config): Promise<Config>;
10
- diff(state: Config, definition: Config): Config | undefined;
11
- apply(plan: Config): Promise<void>;
12
- }
13
- export {};
@@ -1,42 +0,0 @@
1
- import { BrowserforcePlugin } from '../../plugin.js';
2
- import { AuthenticationConfiguration, } from './authentication-configuration/index.js';
3
- import { CertificateAndKeyManagement, } from './certificate-and-key-management/index.js';
4
- export class Security extends BrowserforcePlugin {
5
- async retrieve(definition) {
6
- const response = {};
7
- if (definition) {
8
- if (definition.certificateAndKeyManagement) {
9
- const pluginCKM = new CertificateAndKeyManagement(this.browserforce);
10
- response.certificateAndKeyManagement = await pluginCKM.retrieve(definition.certificateAndKeyManagement);
11
- }
12
- if (definition.authenticationConfiguration) {
13
- response.authenticationConfiguration =
14
- await new AuthenticationConfiguration(this.browserforce).retrieve(definition.authenticationConfiguration);
15
- }
16
- }
17
- return response;
18
- }
19
- diff(state, definition) {
20
- const certificateAndKeyManagement = new CertificateAndKeyManagement(this.browserforce).diff(state.certificateAndKeyManagement, definition.certificateAndKeyManagement);
21
- const authenticationConfiguration = new AuthenticationConfiguration(this.browserforce).diff(state.authenticationConfiguration, definition.authenticationConfiguration);
22
- const response = {};
23
- if (certificateAndKeyManagement !== undefined) {
24
- response.certificateAndKeyManagement = certificateAndKeyManagement;
25
- }
26
- if (authenticationConfiguration !== undefined) {
27
- response.authenticationConfiguration = authenticationConfiguration;
28
- }
29
- return Object.keys(response).length ? response : undefined;
30
- }
31
- async apply(plan) {
32
- if (plan.certificateAndKeyManagement) {
33
- const pluginCKM = new CertificateAndKeyManagement(this.browserforce);
34
- await pluginCKM.apply(plan.certificateAndKeyManagement);
35
- }
36
- if (plan.authenticationConfiguration) {
37
- const pluginAuthConfig = new AuthenticationConfiguration(this.browserforce);
38
- await pluginAuthConfig.apply(plan.authenticationConfiguration);
39
- }
40
- }
41
- }
42
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/security/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EACL,2BAA2B,GAE5B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,2BAA2B,GAE5B,MAAM,2CAA2C,CAAC;AAOnD,MAAM,OAAO,QAAS,SAAQ,kBAAkB;IACvC,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,QAAQ,GAAW,EAAE,CAAC;QAC5B,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,2BAA2B,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACrE,QAAQ,CAAC,2BAA2B,GAAG,MAAM,SAAS,CAAC,QAAQ,CAC7D,UAAU,CAAC,2BAA2B,CACvC,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,CAAC,2BAA2B,EAAE,CAAC;gBAC3C,QAAQ,CAAC,2BAA2B;oBAClC,MAAM,IAAI,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAC/D,UAAU,CAAC,2BAA2B,CACvC,CAAC;YACN,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,IAAI,CAAC,KAAa,EAAE,UAAkB;QAC3C,MAAM,2BAA2B,GAAG,IAAI,2BAA2B,CACjE,IAAI,CAAC,YAAY,CAClB,CAAC,IAAI,CACJ,KAAK,CAAC,2BAA2B,EACjC,UAAU,CAAC,2BAA2B,CACvC,CAAC;QACF,MAAM,2BAA2B,GAAG,IAAI,2BAA2B,CACjE,IAAI,CAAC,YAAY,CAClB,CAAC,IAAI,CACJ,KAAK,CAAC,2BAA2B,EACjC,UAAU,CAAC,2BAA2B,CACU,CAAC;QACnD,MAAM,QAAQ,GAAW,EAAE,CAAC;QAC5B,IAAI,2BAA2B,KAAK,SAAS,EAAE,CAAC;YAC9C,QAAQ,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QACrE,CAAC;QACD,IAAI,2BAA2B,KAAK,SAAS,EAAE,CAAC;YAC9C,QAAQ,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QACrE,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY;QAC7B,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrE,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACrC,MAAM,gBAAgB,GAAG,IAAI,2BAA2B,CACtD,IAAI,CAAC,YAAY,CAClB,CAAC;YACF,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;CACF"}
@@ -1,18 +0,0 @@
1
- import { BrowserforcePlugin } from '../../../plugin.js';
2
- type ServiceChannel = {
3
- serviceChannelDeveloperName: string;
4
- capacity: CapacityConfig;
5
- };
6
- export type CapacityConfig = {
7
- capacityModel?: string;
8
- statusField?: string;
9
- valuesForInProgress?: string[];
10
- checkAgentCapacityOnReopenedWorkItems?: boolean;
11
- checkAgentCapacityOnReassignedWorkItems?: boolean;
12
- };
13
- export declare class Capacity extends BrowserforcePlugin {
14
- retrieve(definition: ServiceChannel): Promise<CapacityConfig>;
15
- diff(state?: CapacityConfig, definition?: CapacityConfig): CapacityConfig | undefined;
16
- apply(config: ServiceChannel): Promise<void>;
17
- }
18
- export {};
@@ -1,133 +0,0 @@
1
- import { BrowserforcePlugin } from '../../../plugin.js';
2
- const ADD_BUTTON_SELECTOR = 'a[id$=":duelingListBox:backingList_add"]';
3
- const CAPACITY_MODEL_SELECTOR = 'select[id$=":capacityModelSection:editCapacityModel"]';
4
- const OWNER_CHANGE_CAPACITY_SELECTOR = 'input[name*=":ownerChangeCapacityCheck"]';
5
- const REMOVE_BUTTON_SELECTOR = 'a[id$=":duelingListBox:backingList_remove"]';
6
- const SAVE_BUTTON_SELECTOR = 'input[id$=":save"]';
7
- const STATUS_FIELD_SELECTOR = 'select[id$=":statusFieldSection:editCapacityModel"]';
8
- const STATUS_CHANGE_CAPACITY_SELECTOR = 'input[name*=":statusChangeCapacityCheck"]';
9
- const VALUES_COMPLETED_SELECTOR = 'select[id$=":statusFieldValues:duelingListBox:backingList_a"]:not([disabled="disabled"])';
10
- const VALUES_IN_PROGRESS_SELECTOR = 'select[id$=":statusFieldValues:duelingListBox:backingList_s"]:not([disabled="disabled"])';
11
- export class Capacity extends BrowserforcePlugin {
12
- async retrieve(definition) {
13
- // Query for the service channel
14
- const serviceChannelDeveloperName = definition.serviceChannelDeveloperName;
15
- const serviceChannel = await this.org
16
- .getConnection()
17
- .singleRecordQuery(`SELECT Id FROM ServiceChannel WHERE DeveloperName='${serviceChannelDeveloperName}'`);
18
- // Open the service channel setup page
19
- const page = await this.browserforce.openPage(`${serviceChannel.Id}/e`);
20
- // Retrieve the service channel config
21
- if (!(await page.$(CAPACITY_MODEL_SELECTOR))) {
22
- return {};
23
- }
24
- const capacityModel = (await page.$eval(`${CAPACITY_MODEL_SELECTOR} > option[selected]`, (el) => el.value)) ?? '';
25
- if (capacityModel === 'StatusBased') {
26
- const statusField = (await page.$eval(`${STATUS_FIELD_SELECTOR} > option[selected]`, (el) => el.value)) ?? '';
27
- const valuesForInProgress = await page.$$eval(`${VALUES_IN_PROGRESS_SELECTOR} > option`, (options) => {
28
- return options.map((option) => option.title ?? '');
29
- });
30
- const checkAgentCapacityOnReopenedWorkItems = await page.$eval(STATUS_CHANGE_CAPACITY_SELECTOR, (el) => (el.getAttribute('checked') === 'checked' ? true : false));
31
- const checkAgentCapacityOnReassignedWorkItems = await page.$eval(OWNER_CHANGE_CAPACITY_SELECTOR, (el) => (el.getAttribute('checked') === 'checked' ? true : false));
32
- return {
33
- capacityModel,
34
- statusField,
35
- valuesForInProgress,
36
- checkAgentCapacityOnReopenedWorkItems,
37
- checkAgentCapacityOnReassignedWorkItems,
38
- };
39
- }
40
- return { capacityModel };
41
- }
42
- diff(state, definition) {
43
- const response = {};
44
- if (state && definition) {
45
- if (definition.capacityModel === 'Tab-based') {
46
- if (definition.capacityModel !== state.capacityModel) {
47
- response.capacityModel = definition.capacityModel;
48
- return response;
49
- }
50
- return undefined;
51
- }
52
- if (definition.capacityModel !== state.capacityModel) {
53
- response.capacityModel = definition.capacityModel;
54
- }
55
- if (definition.statusField !== state.statusField) {
56
- response.statusField = definition.statusField;
57
- }
58
- if (JSON.stringify(definition.valuesForInProgress) !==
59
- JSON.stringify(state.valuesForInProgress)) {
60
- response.valuesForInProgress = definition.valuesForInProgress;
61
- }
62
- if (definition.checkAgentCapacityOnReassignedWorkItems !==
63
- state.checkAgentCapacityOnReassignedWorkItems) {
64
- response.checkAgentCapacityOnReassignedWorkItems =
65
- definition.checkAgentCapacityOnReassignedWorkItems;
66
- }
67
- if (definition.checkAgentCapacityOnReopenedWorkItems !==
68
- state.checkAgentCapacityOnReopenedWorkItems) {
69
- response.checkAgentCapacityOnReopenedWorkItems =
70
- definition.checkAgentCapacityOnReopenedWorkItems;
71
- }
72
- }
73
- return Object.keys(response).length ? response : undefined;
74
- }
75
- async apply(config) {
76
- const conn = this.org.getConnection();
77
- // Query for the service channel
78
- const serviceChannelDeveloperName = config.serviceChannelDeveloperName;
79
- const serviceChannel = await conn.singleRecordQuery(`SELECT Id FROM ServiceChannel WHERE DeveloperName='${serviceChannelDeveloperName}'`);
80
- // Open the service channel setup page
81
- const page = await this.browserforce.openPage(`${serviceChannel.Id}/e`);
82
- // Update the service channel config
83
- const configCapacity = config.capacity;
84
- if (configCapacity?.capacityModel) {
85
- await page.waitForSelector(CAPACITY_MODEL_SELECTOR);
86
- await page.select(CAPACITY_MODEL_SELECTOR, configCapacity.capacityModel);
87
- }
88
- if (configCapacity?.statusField) {
89
- await page.waitForSelector(STATUS_FIELD_SELECTOR);
90
- await page.select(STATUS_FIELD_SELECTOR, configCapacity.statusField);
91
- }
92
- if (configCapacity?.valuesForInProgress) {
93
- await page.waitForSelector(`${VALUES_COMPLETED_SELECTOR} > option`);
94
- const completedElements = await page.$$(`${VALUES_COMPLETED_SELECTOR} > option`);
95
- for (const completedElement of completedElements) {
96
- const optionTitle = (await completedElement.evaluate((node) => node.getAttribute('title')))?.toString();
97
- if (optionTitle &&
98
- configCapacity.valuesForInProgress.includes(optionTitle)) {
99
- await completedElement.click();
100
- await page.click(ADD_BUTTON_SELECTOR);
101
- }
102
- }
103
- await page.waitForSelector(`${VALUES_IN_PROGRESS_SELECTOR} > option`);
104
- const inprogressElements = await page.$$(`${VALUES_IN_PROGRESS_SELECTOR} > option`);
105
- for (const inprogressElement of inprogressElements) {
106
- const optionTitle = (await inprogressElement.evaluate((node) => node.getAttribute('title')))?.toString();
107
- if (optionTitle &&
108
- !configCapacity.valuesForInProgress.includes(optionTitle)) {
109
- await inprogressElement.click();
110
- await page.click(REMOVE_BUTTON_SELECTOR);
111
- }
112
- }
113
- }
114
- if (configCapacity?.checkAgentCapacityOnReassignedWorkItems !== undefined) {
115
- await page.$eval(STATUS_CHANGE_CAPACITY_SELECTOR, (e, v) => {
116
- e.checked = v;
117
- }, configCapacity.checkAgentCapacityOnReassignedWorkItems);
118
- }
119
- if (configCapacity?.checkAgentCapacityOnReopenedWorkItems !== undefined) {
120
- await page.$eval(OWNER_CHANGE_CAPACITY_SELECTOR, (e, v) => {
121
- e.checked = v;
122
- }, configCapacity.checkAgentCapacityOnReopenedWorkItems);
123
- }
124
- // Save the settings and wait for page refresh
125
- await Promise.all([
126
- page.waitForNavigation(),
127
- page.click(SAVE_BUTTON_SELECTOR),
128
- ]);
129
- // Close the page
130
- await page.close();
131
- }
132
- }
133
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/service-channels/capacity/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { BrowserforcePlugin } from '../../plugin.js';
2
- import { CapacityConfig } from './capacity/index.js';
3
- type ServiceChannel = {
4
- serviceChannelDeveloperName: string;
5
- capacity: CapacityConfig;
6
- };
7
- export declare class ServiceChannels extends BrowserforcePlugin {
8
- retrieve(definition?: ServiceChannel[]): Promise<ServiceChannel[]>;
9
- diff(state: ServiceChannel[], definition: ServiceChannel[]): ServiceChannel[] | undefined;
10
- apply(plan: ServiceChannel[]): Promise<void>;
11
- }
12
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,57 +0,0 @@
1
- import assert from 'assert';
2
- import * as child from 'child_process';
3
- import { fileURLToPath } from 'node:url';
4
- import * as path from 'path';
5
- import { ServiceChannels } from './index.js';
6
- import { OmniChannelSettings } from '../omni-channel-settings/index.js';
7
- const __dirname = fileURLToPath(new URL('.', import.meta.url));
8
- describe(ServiceChannels.name, function () {
9
- this.timeout('10m');
10
- let plugin;
11
- before(() => {
12
- plugin = new ServiceChannels(global.bf);
13
- });
14
- const configureServiceChannels = [
15
- {
16
- serviceChannelDeveloperName: 'CaseTest',
17
- capacity: {
18
- capacityModel: 'StatusBased',
19
- statusField: 'Case.Type',
20
- valuesForInProgress: ['Electrical', 'Mechanical'],
21
- checkAgentCapacityOnReopenedWorkItems: true,
22
- checkAgentCapacityOnReassignedWorkItems: true,
23
- },
24
- },
25
- {
26
- serviceChannelDeveloperName: 'LeadTest',
27
- capacity: {
28
- capacityModel: 'StatusBased',
29
- statusField: 'Lead.Industry',
30
- valuesForInProgress: ['Agriculture', 'Chemicals'],
31
- checkAgentCapacityOnReopenedWorkItems: true,
32
- checkAgentCapacityOnReassignedWorkItems: true,
33
- },
34
- },
35
- ];
36
- it('should create service channel as a prerequisite', () => {
37
- const sourceDeployCmd = child.spawnSync('sf', [
38
- 'project',
39
- 'deploy',
40
- 'start',
41
- '-d',
42
- path.join(__dirname, 'sfdx-source'),
43
- '--json',
44
- ]);
45
- assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
46
- });
47
- it('should enable status based capacity model as a prerequisite', async () => {
48
- const omnniChannelPlugin = new OmniChannelSettings(global.bf);
49
- await omnniChannelPlugin.run({ enableStatusBasedCapacityModel: true });
50
- });
51
- it('should configure status based capacity model for service channels', async () => {
52
- await plugin.run(configureServiceChannels);
53
- const res = await plugin.retrieve(configureServiceChannels);
54
- assert.deepStrictEqual(res, configureServiceChannels);
55
- });
56
- });
57
- //# sourceMappingURL=index.e2e-spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/service-channels/index.e2e-spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE;IAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,MAAuB,CAAC;IAC5B,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,wBAAwB,GAAG;QAC/B;YACE,2BAA2B,EAAE,UAAU;YACvC,QAAQ,EAAE;gBACR,aAAa,EAAE,aAAa;gBAC5B,WAAW,EAAE,WAAW;gBACxB,mBAAmB,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;gBACjD,qCAAqC,EAAE,IAAI;gBAC3C,uCAAuC,EAAE,IAAI;aAC9C;SACF;QACD;YACE,2BAA2B,EAAE,UAAU;YACvC,QAAQ,EAAE;gBACR,aAAa,EAAE,aAAa;gBAC5B,WAAW,EAAE,eAAe;gBAC5B,mBAAmB,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC;gBACjD,qCAAqC,EAAE,IAAI;gBAC3C,uCAAuC,EAAE,IAAI;aAC9C;SACF;KACF,CAAC;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;YAC5C,SAAS;YACT,QAAQ;YACR,OAAO;YACP,IAAI;YACJ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;YACnC,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,CAAC,eAAe,CACpB,eAAe,CAAC,MAAM,EACtB,CAAC,EACD,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAClC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,kBAAkB,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9D,MAAM,kBAAkB,CAAC,GAAG,CAAC,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;QAC5D,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}