sfdx-browserforce-plugin 4.8.1 → 5.0.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.
- package/README.md +69 -105
- package/lib/browserforce-command.js +8 -6
- package/lib/browserforce-command.js.map +1 -1
- package/lib/browserforce.js +13 -9
- package/lib/browserforce.js.map +1 -1
- package/lib/commands/browserforce/apply.js +6 -6
- package/lib/commands/browserforce/apply.js.map +1 -1
- package/lib/commands/browserforce/plan.js +7 -7
- package/lib/commands/browserforce/plan.js.map +1 -1
- package/lib/config-parser.js +1 -1
- package/lib/config-parser.js.map +1 -1
- package/lib/pages/login.js +4 -4
- package/lib/pages/login.js.map +1 -1
- package/lib/plugin.js +1 -1
- package/lib/plugins/activity-settings/index.e2e-spec.js +2 -2
- package/lib/plugins/activity-settings/index.js +13 -14
- package/lib/plugins/activity-settings/index.js.map +1 -1
- package/lib/plugins/company-information/index.e2e-spec.js +2 -2
- package/lib/plugins/company-information/index.js +18 -22
- package/lib/plugins/company-information/index.js.map +1 -1
- package/lib/plugins/customer-portal/available-custom-objects/index.js +16 -12
- package/lib/plugins/customer-portal/available-custom-objects/index.js.map +1 -1
- package/lib/plugins/customer-portal/available-custom-objects/index.test.js +8 -8
- package/lib/plugins/customer-portal/enabled/index.js +13 -16
- package/lib/plugins/customer-portal/enabled/index.js.map +1 -1
- package/lib/plugins/customer-portal/enabled/index.test.js +4 -4
- package/lib/plugins/customer-portal/index.e2e-spec.js +25 -19
- package/lib/plugins/customer-portal/index.e2e-spec.js.map +1 -1
- package/lib/plugins/customer-portal/index.js +10 -9
- package/lib/plugins/customer-portal/index.js.map +1 -1
- package/lib/plugins/customer-portal/index.test.js +22 -22
- package/lib/plugins/customer-portal/portals/index.js +54 -52
- package/lib/plugins/customer-portal/portals/index.js.map +1 -1
- package/lib/plugins/customer-portal/portals/index.test.js +37 -37
- package/lib/plugins/customer-portal/portals/index.test.js.map +1 -1
- package/lib/plugins/density-settings/index.e2e-spec.js +1 -1
- package/lib/plugins/density-settings/index.js +13 -16
- package/lib/plugins/density-settings/index.js.map +1 -1
- package/lib/plugins/deprecated.d.ts +4 -0
- package/lib/plugins/deprecated.js +28 -0
- package/lib/plugins/deprecated.js.map +1 -0
- package/lib/plugins/email-deliverability/index.e2e-spec.js +4 -4
- package/lib/plugins/email-deliverability/index.js +16 -17
- package/lib/plugins/email-deliverability/index.js.map +1 -1
- package/lib/plugins/high-velocity-sales-settings/index.e2e-spec.js +2 -2
- package/lib/plugins/high-velocity-sales-settings/index.js +1 -1
- package/lib/plugins/high-velocity-sales-settings/index.js.map +1 -1
- package/lib/plugins/high-velocity-sales-settings/page.js +1 -1
- package/lib/plugins/high-velocity-sales-settings/page.js.map +1 -1
- package/lib/plugins/history-tracking/index.e2e-spec.js +38 -38
- package/lib/plugins/history-tracking/index.e2e-spec.js.map +1 -1
- package/lib/plugins/history-tracking/index.js +20 -21
- package/lib/plugins/history-tracking/index.js.map +1 -1
- package/lib/plugins/home-page-layouts/index.e2e-spec.js +8 -8
- package/lib/plugins/home-page-layouts/index.js +13 -14
- package/lib/plugins/home-page-layouts/index.js.map +1 -1
- package/lib/plugins/home-page-layouts/index.test.js +29 -29
- package/lib/plugins/index.d.ts +1 -3
- package/lib/plugins/index.js +1 -3
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/lightning-experience-settings/index.js +16 -17
- package/lib/plugins/lightning-experience-settings/index.js.map +1 -1
- package/lib/plugins/linkedin-sales-navigator-settings/index.e2e-spec.js +2 -2
- package/lib/plugins/linkedin-sales-navigator-settings/index.js.map +1 -1
- package/lib/plugins/omni-channel-settings/index.e2e-spec.js +2 -2
- package/lib/plugins/omni-channel-settings/index.js +9 -13
- package/lib/plugins/omni-channel-settings/index.js.map +1 -1
- package/lib/plugins/opportunity-splits/index.e2e-spec.js +5 -4
- package/lib/plugins/opportunity-splits/index.e2e-spec.js.map +1 -1
- package/lib/plugins/opportunity-splits/index.js +1 -1
- package/lib/plugins/opportunity-splits/pages/layout-selection.js +4 -2
- package/lib/plugins/opportunity-splits/pages/layout-selection.js.map +1 -1
- package/lib/plugins/opportunity-splits/pages/overview.d.ts +1 -0
- package/lib/plugins/opportunity-splits/pages/overview.js +19 -9
- package/lib/plugins/opportunity-splits/pages/overview.js.map +1 -1
- package/lib/plugins/opportunity-splits/pages/setup.js +5 -4
- package/lib/plugins/opportunity-splits/pages/setup.js.map +1 -1
- package/lib/plugins/permission-sets/index.e2e-spec.js +4 -4
- package/lib/plugins/permission-sets/index.e2e-spec.js.map +1 -1
- package/lib/plugins/permission-sets/index.js +1 -1
- package/lib/plugins/permission-sets/index.js.map +1 -1
- package/lib/plugins/permission-sets/service-presence-status/index.js +25 -21
- package/lib/plugins/permission-sets/service-presence-status/index.js.map +1 -1
- package/lib/plugins/picklists/field-dependencies/index.js +6 -4
- package/lib/plugins/picklists/field-dependencies/index.js.map +1 -1
- package/lib/plugins/picklists/field-dependencies/index.test.js +13 -13
- package/lib/plugins/picklists/field-dependencies/pages.js +13 -4
- package/lib/plugins/picklists/field-dependencies/pages.js.map +1 -1
- package/lib/plugins/picklists/index.e2e-spec.js +10 -6
- package/lib/plugins/picklists/index.e2e-spec.js.map +1 -1
- package/lib/plugins/picklists/index.js +15 -8
- package/lib/plugins/picklists/index.js.map +1 -1
- package/lib/plugins/picklists/pages.js +31 -11
- package/lib/plugins/picklists/pages.js.map +1 -1
- package/lib/plugins/picklists/standard-value-set.js +1 -1
- package/lib/plugins/picklists/standard-value-set.js.map +1 -1
- package/lib/plugins/record-types/index.e2e-spec.js +10 -10
- package/lib/plugins/record-types/index.e2e-spec.js.map +1 -1
- package/lib/plugins/record-types/index.js +3 -3
- package/lib/plugins/record-types/index.js.map +1 -1
- package/lib/plugins/record-types/pages.js +8 -2
- package/lib/plugins/record-types/pages.js.map +1 -1
- package/lib/plugins/relate-contact-to-multiple-accounts/index.e2e-spec.js +2 -2
- package/lib/plugins/relate-contact-to-multiple-accounts/index.js +37 -32
- package/lib/plugins/relate-contact-to-multiple-accounts/index.js.map +1 -1
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.js +17 -18
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.js.map +1 -1
- package/lib/plugins/reports-and-dashboards/index.js +1 -1
- package/lib/plugins/reports-and-dashboards/index.js.map +1 -1
- package/lib/plugins/salesforce-cpq-config/formConfig.js +638 -638
- package/lib/plugins/salesforce-cpq-config/formConfig.js.map +1 -1
- package/lib/plugins/salesforce-cpq-config/index.e2e-spec.js +4 -4
- package/lib/plugins/salesforce-cpq-config/index.e2e-spec.js.map +1 -1
- package/lib/plugins/salesforce-cpq-config/index.js +43 -31
- package/lib/plugins/salesforce-cpq-config/index.js.map +1 -1
- package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.js +2 -2
- package/lib/plugins/salesforce-to-salesforce/index.js +16 -17
- package/lib/plugins/salesforce-to-salesforce/index.js.map +1 -1
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.js +9 -15
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.js.map +1 -1
- package/lib/plugins/security/authentication-configuration/index.js +22 -24
- package/lib/plugins/security/authentication-configuration/index.js.map +1 -1
- package/lib/plugins/security/certificate-and-key-management/index.e2e-spec.js +63 -0
- package/lib/plugins/security/certificate-and-key-management/index.e2e-spec.js.map +1 -0
- package/lib/plugins/security/certificate-and-key-management/index.js +48 -30
- package/lib/plugins/security/certificate-and-key-management/index.js.map +1 -1
- package/lib/plugins/security/certificate-and-key-management/index.test.js +18 -18
- package/lib/plugins/security/index.d.ts +1 -7
- package/lib/plugins/security/index.js +2 -44
- package/lib/plugins/security/index.js.map +1 -1
- package/lib/plugins/service-channels/capacity/index.js +48 -41
- package/lib/plugins/service-channels/capacity/index.js.map +1 -1
- package/lib/plugins/service-channels/index.e2e-spec.js +14 -14
- package/lib/plugins/service-channels/index.e2e-spec.js.map +1 -1
- package/lib/plugins/service-channels/index.js +4 -3
- package/lib/plugins/service-channels/index.js.map +1 -1
- package/lib/plugins/slack/index.e2e-spec.js +3 -3
- package/lib/plugins/slack/index.js +3 -5
- package/lib/plugins/slack/index.js.map +1 -1
- package/lib/plugins/utils.js +7 -2
- package/lib/plugins/utils.js.map +1 -1
- package/oclif.manifest.json +3 -3
- package/package.json +4 -3
- package/lib/plugins/communities/index.d.ts +0 -10
- package/lib/plugins/communities/index.e2e-spec.js +0 -34
- package/lib/plugins/communities/index.e2e-spec.js.map +0 -1
- package/lib/plugins/communities/index.js +0 -45
- package/lib/plugins/communities/index.js.map +0 -1
- package/lib/plugins/defer-sharing-calculation/index.d.ts +0 -9
- package/lib/plugins/defer-sharing-calculation/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/defer-sharing-calculation/index.e2e-spec.js +0 -70
- package/lib/plugins/defer-sharing-calculation/index.e2e-spec.js.map +0 -1
- package/lib/plugins/defer-sharing-calculation/index.js +0 -39
- package/lib/plugins/defer-sharing-calculation/index.js.map +0 -1
- package/lib/plugins/security/identity-provider/index.d.ts +0 -9
- package/lib/plugins/security/identity-provider/index.js +0 -81
- package/lib/plugins/security/identity-provider/index.js.map +0 -1
- package/lib/plugins/security/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/security/index.e2e-spec.js +0 -82
- package/lib/plugins/security/index.e2e-spec.js.map +0 -1
- package/lib/plugins/security/login-access-policies/index.d.ts +0 -8
- package/lib/plugins/security/login-access-policies/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/security/login-access-policies/index.e2e-spec.js +0 -27
- package/lib/plugins/security/login-access-policies/index.e2e-spec.js.map +0 -1
- package/lib/plugins/security/login-access-policies/index.js +0 -30
- package/lib/plugins/security/login-access-policies/index.js.map +0 -1
- package/lib/plugins/security/sharing/index.d.ts +0 -8
- package/lib/plugins/security/sharing/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/security/sharing/index.e2e-spec.js +0 -29
- package/lib/plugins/security/sharing/index.e2e-spec.js.map +0 -1
- package/lib/plugins/security/sharing/index.js +0 -36
- package/lib/plugins/security/sharing/index.js.map +0 -1
- /package/lib/plugins/{communities → security/certificate-and-key-management}/index.e2e-spec.d.ts +0 -0
|
@@ -7,7 +7,7 @@ export class ServiceChannels extends BrowserforcePlugin {
|
|
|
7
7
|
for await (const serviceChannel of definition) {
|
|
8
8
|
serviceChannels.push({
|
|
9
9
|
serviceChannelDeveloperName: serviceChannel.serviceChannelDeveloperName,
|
|
10
|
-
capacity: await pluginCapacity.retrieve(serviceChannel)
|
|
10
|
+
capacity: await pluginCapacity.retrieve(serviceChannel),
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
13
|
return serviceChannels;
|
|
@@ -16,12 +16,13 @@ export class ServiceChannels extends BrowserforcePlugin {
|
|
|
16
16
|
const pluginCapacity = new Capacity(this.browserforce);
|
|
17
17
|
const serviceChannels = [];
|
|
18
18
|
for (const serviceChannelDefinition of definition) {
|
|
19
|
-
const serviceChannelState = state.find((serviceChannelState) => serviceChannelState.serviceChannelDeveloperName ===
|
|
19
|
+
const serviceChannelState = state.find((serviceChannelState) => serviceChannelState.serviceChannelDeveloperName ===
|
|
20
|
+
serviceChannelDefinition.serviceChannelDeveloperName);
|
|
20
21
|
const capacity = pluginCapacity.diff(serviceChannelState.capacity, serviceChannelDefinition.capacity);
|
|
21
22
|
if (capacity !== undefined) {
|
|
22
23
|
serviceChannels.push({
|
|
23
24
|
serviceChannelDeveloperName: serviceChannelDefinition.serviceChannelDeveloperName,
|
|
24
|
-
capacity
|
|
25
|
+
capacity,
|
|
25
26
|
});
|
|
26
27
|
}
|
|
27
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/service-channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAkB,MAAM,qBAAqB,CAAC;AAO/D,MAAM,OAAO,eAAgB,SAAQ,kBAAkB;IAC9C,KAAK,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/service-channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAkB,MAAM,qBAAqB,CAAC;AAO/D,MAAM,OAAO,eAAgB,SAAQ,kBAAkB;IAC9C,KAAK,CAAC,QAAQ,CACnB,UAA6B;QAE7B,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvD,MAAM,eAAe,GAAqB,EAAE,CAAC;QAE7C,IAAI,KAAK,EAAE,MAAM,cAAc,IAAI,UAAU,EAAE,CAAC;YAC9C,eAAe,CAAC,IAAI,CAAC;gBACnB,2BAA2B,EAAE,cAAc,CAAC,2BAA2B;gBACvE,QAAQ,EAAE,MAAM,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAEM,IAAI,CACT,KAAuB,EACvB,UAA4B;QAE5B,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvD,MAAM,eAAe,GAAqB,EAAE,CAAC;QAE7C,KAAK,MAAM,wBAAwB,IAAI,UAAU,EAAE,CAAC;YAClD,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CACpC,CAAC,mBAAmB,EAAE,EAAE,CACtB,mBAAmB,CAAC,2BAA2B;gBAC/C,wBAAwB,CAAC,2BAA2B,CACvD,CAAC;YAEF,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAClC,mBAAmB,CAAC,QAAQ,EAC5B,wBAAwB,CAAC,QAAQ,CAClC,CAAC;YAEF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,eAAe,CAAC,IAAI,CAAC;oBACnB,2BAA2B,EACzB,wBAAwB,CAAC,2BAA2B;oBACtD,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAsB;QACvC,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,KAAK,EAAE,MAAM,cAAc,IAAI,IAAI,EAAE,CAAC;YACxC,MAAM,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF"}
|
|
@@ -7,15 +7,15 @@ describe(Slack.name, function () {
|
|
|
7
7
|
});
|
|
8
8
|
const configEnable = {
|
|
9
9
|
agreeToTermsAndConditions: true,
|
|
10
|
-
enableSalesCloudForSlack: true
|
|
10
|
+
enableSalesCloudForSlack: true,
|
|
11
11
|
};
|
|
12
12
|
const configDisabledSalesCloud = {
|
|
13
13
|
agreeToTermsAndConditions: true,
|
|
14
|
-
enableSalesCloudForSlack: false
|
|
14
|
+
enableSalesCloudForSlack: false,
|
|
15
15
|
};
|
|
16
16
|
const configDisabled = {
|
|
17
17
|
agreeToTermsAndConditions: false,
|
|
18
|
-
enableSalesCloudForSlack: false
|
|
18
|
+
enableSalesCloudForSlack: false,
|
|
19
19
|
};
|
|
20
20
|
it('should accept terms and conditions and enable Sales Cloud for Slack', async () => {
|
|
21
21
|
await plugin.run(configEnable);
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
-
const
|
|
3
|
-
BASE: 'lightning/setup/SlackSetupAssistant/home',
|
|
4
|
-
};
|
|
2
|
+
const BASE_PATH = 'lightning/setup/SlackSetupAssistant/home';
|
|
5
3
|
const TOS_CHECKBOX = 'setup_service-slack-agree-to-terms input[type="checkbox"]';
|
|
6
4
|
const SALES_CLOUD_FOR_SLACK_CHECKBOX = 'input[type="checkbox"][name="SlkSetupStepSalesCloudForSlack"]';
|
|
7
5
|
const TOAST_MESSAGE = 'div[id^="toastDescription"]';
|
|
8
6
|
export class Slack extends BrowserforcePlugin {
|
|
9
7
|
async retrieve(definition) {
|
|
10
|
-
const page = await this.browserforce.openPage(
|
|
8
|
+
const page = await this.browserforce.openPage(BASE_PATH);
|
|
11
9
|
const response = {
|
|
12
10
|
agreeToTermsAndConditions: await page
|
|
13
11
|
.locator(TOS_CHECKBOX)
|
|
@@ -26,7 +24,7 @@ export class Slack extends BrowserforcePlugin {
|
|
|
26
24
|
throw new Error('terms and conditions cannot be unaccepted once accepted');
|
|
27
25
|
}
|
|
28
26
|
const state = await this.retrieve();
|
|
29
|
-
const page = await this.browserforce.openPage(
|
|
27
|
+
const page = await this.browserforce.openPage(BASE_PATH);
|
|
30
28
|
if (state.agreeToTermsAndConditions !== config.agreeToTermsAndConditions) {
|
|
31
29
|
await Promise.all([
|
|
32
30
|
page.locator(TOAST_MESSAGE).wait(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/slack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/slack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,SAAS,GAAG,0CAA0C,CAAC;AAE7D,MAAM,YAAY,GAChB,2DAA2D,CAAC;AAC9D,MAAM,8BAA8B,GAClC,+DAA+D,CAAC;AAClE,MAAM,aAAa,GAAG,6BAA6B,CAAC;AAOpD,MAAM,OAAO,KAAM,SAAQ,kBAAkB;IACpC,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG;YACf,yBAAyB,EAAE,MAAM,IAAI;iBAClC,OAAO,CAAC,YAAY,CAAC;iBACrB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;iBACnC,IAAI,EAAE;YACT,wBAAwB,EAAE,MAAM,IAAI;iBACjC,OAAO,CAAC,8BAA8B,CAAC;iBACvC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;iBACnC,IAAI,EAAE;SACV,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,IAAI,MAAM,CAAC,yBAAyB,KAAK,KAAK,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,yBAAyB,KAAK,MAAM,CAAC,yBAAyB,EAAE,CAAC;YACzE,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE;gBAClC,yEAAyE;gBACzE,CACE,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE,CAC9C,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;aAC3C,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,KAAK,CAAC,wBAAwB,KAAK,MAAM,CAAC,wBAAwB,EAAE,CAAC;YACvE,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE;gBAClC,yEAAyE;gBACzE,CACE,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,UAAU,EAAE,CAChE,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;aAC3C,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
|
package/lib/plugins/utils.js
CHANGED
|
@@ -18,10 +18,15 @@ export function deepDiff(source, target) {
|
|
|
18
18
|
if (isDeepStrictEqual(source, target)) {
|
|
19
19
|
return undefined;
|
|
20
20
|
}
|
|
21
|
-
if (typeof target === 'object' &&
|
|
21
|
+
if (typeof target === 'object' &&
|
|
22
|
+
target !== null &&
|
|
23
|
+
typeof source === 'object' &&
|
|
24
|
+
source !== null) {
|
|
22
25
|
let objectOrArray;
|
|
23
26
|
if (Array.isArray(target)) {
|
|
24
|
-
objectOrArray = target
|
|
27
|
+
objectOrArray = target
|
|
28
|
+
.map((item, i) => deepDiff(source?.[i], item))
|
|
29
|
+
.filter((x) => x !== undefined);
|
|
25
30
|
}
|
|
26
31
|
else {
|
|
27
32
|
const targetKeys = Object.keys(target);
|
package/lib/plugins/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/plugins/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAEzC,wDAAwD;AACxD,MAAM,UAAU,uBAAuB,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/plugins/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAEzC,wDAAwD;AACxD,MAAM,UAAU,uBAAuB,CACrC,GAAM,EACN,EAAE,GAAG,IAAI;IAET,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAChE,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,MAAqB,EACrB,MAAqB;IAErB,IAAI,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IACE,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI,EACf,CAAC;QACD,IAAI,aAA4B,CAAC;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,aAAa,GAAG,MAAM;iBACnB,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;iBAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAkB,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAClC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAC7C,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CACzB,CACQ,CAAC;YACZ,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;gBAC1C,OAAO,QAAQ,CAAC,SAAc,EAAE,MAAM,CAAC,CAAC;YAC1C,CAAC;YACD,aAAa,GAAG,MAAM,CAAC;QACzB,CAAC;QACD,IAAI,oBAAoB,CAAC,aAAa,CAAC,EAAE,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,eAAe;IACf,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/oclif.manifest.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"args": {},
|
|
6
6
|
"description": "apply a plan from a definition file",
|
|
7
7
|
"examples": [
|
|
8
|
-
"$ <%= config.bin %> <%= command.id %> -f ./config/
|
|
8
|
+
"$ <%= config.bin %> <%= command.id %> -f ./config/currency.json --target-org myOrg@example.com\n logging in... done\n Applying definition file ./config/currency.json to org myOrg@example.com\n [CompanyInformation] retrieving state... done\n [CompanyInformation] changing 'defaultCurrencyIsoCode' to '\"English (South Africa) - ZAR\"'... done\n logging out... done\n "
|
|
9
9
|
],
|
|
10
10
|
"flags": {
|
|
11
11
|
"json": {
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"args": {},
|
|
85
85
|
"description": "retrieve state and generate plan file",
|
|
86
86
|
"examples": [
|
|
87
|
-
"$ <%= config.bin %> <%= command.id %> -f ./config/
|
|
87
|
+
"$ <%= config.bin %> <%= command.id %> -f ./config/currency.json --target-org myOrg@example.com\n logging in... done\n Generating plan with definition file ./config/currency.json from org myOrg@example.com\n [CompanyInformation] retrieving state... done\n [CompanyInformation] generating plan... done\n logging out... done\n "
|
|
88
88
|
],
|
|
89
89
|
"flags": {
|
|
90
90
|
"json": {
|
|
@@ -159,5 +159,5 @@
|
|
|
159
159
|
]
|
|
160
160
|
}
|
|
161
161
|
},
|
|
162
|
-
"version": "
|
|
162
|
+
"version": "5.0.0"
|
|
163
163
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sfdx-browserforce-plugin",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "sfdx plugin for browser automation",
|
|
5
5
|
"author": "Matthias Rolke <mr.amtrack@gmail.com>",
|
|
6
6
|
"type": "module",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@salesforce/dev-scripts": "11.0.2",
|
|
18
|
-
"oclif": "4.18.
|
|
18
|
+
"oclif": "4.18.4"
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
"/bin",
|
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
},
|
|
46
46
|
"mocha": {
|
|
47
47
|
"loader": "ts-node/esm",
|
|
48
|
-
"no-warnings": "ExperimentalWarning"
|
|
48
|
+
"no-warnings": "ExperimentalWarning",
|
|
49
|
+
"enable-source-maps": true
|
|
49
50
|
},
|
|
50
51
|
"repository": "amtrack/sfdx-browserforce-plugin",
|
|
51
52
|
"scripts": {
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
-
type Config = {
|
|
3
|
-
enabled?: boolean;
|
|
4
|
-
domainName?: string;
|
|
5
|
-
};
|
|
6
|
-
export declare class Communities extends BrowserforcePlugin {
|
|
7
|
-
retrieve(): Promise<Config>;
|
|
8
|
-
apply(config: Config): Promise<void>;
|
|
9
|
-
}
|
|
10
|
-
export {};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import assert from 'assert';
|
|
2
|
-
import { Communities } from './index.js';
|
|
3
|
-
describe.skip(Communities.name, function () {
|
|
4
|
-
let plugin;
|
|
5
|
-
before(() => {
|
|
6
|
-
plugin = new Communities(global.bf);
|
|
7
|
-
});
|
|
8
|
-
const configEnabled = {
|
|
9
|
-
enabled: true
|
|
10
|
-
};
|
|
11
|
-
const configDisabled = {
|
|
12
|
-
enabled: false
|
|
13
|
-
};
|
|
14
|
-
it('should enable', async () => {
|
|
15
|
-
await plugin.run(configEnabled);
|
|
16
|
-
});
|
|
17
|
-
it('should be enabled', async () => {
|
|
18
|
-
const res = await plugin.run(configEnabled);
|
|
19
|
-
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
20
|
-
});
|
|
21
|
-
it('should fail to disable', async () => {
|
|
22
|
-
let err;
|
|
23
|
-
try {
|
|
24
|
-
await plugin.apply(configDisabled);
|
|
25
|
-
}
|
|
26
|
-
catch (e) {
|
|
27
|
-
err = e;
|
|
28
|
-
}
|
|
29
|
-
assert.throws(() => {
|
|
30
|
-
throw err;
|
|
31
|
-
}, /cannot be disabled/);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/communities/index.e2e-spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;IAC9B,IAAI,MAAmB,CAAC;IACxB,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,IAAI;KACd,CAAC;IACF,MAAM,cAAc,GAAG;QACrB,OAAO,EAAE,KAAK;KACf,CAAC;IAEF,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,IAAI,GAAG,CAAC;QACR,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,GAAG,CAAC,CAAC;QACV,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,GAAG,CAAC;QACZ,CAAC,EAAE,oBAAoB,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
-
const PATHS = {
|
|
3
|
-
BASE: '_ui/networks/setup/NetworkSettingsPage'
|
|
4
|
-
};
|
|
5
|
-
const SELECTORS = {
|
|
6
|
-
BASE: 'div.pbBody',
|
|
7
|
-
ENABLE_CHECKBOX: 'input[id$=":enableNetworkPrefId"]',
|
|
8
|
-
DOMAIN_NAME_INPUT_TEXT: 'input[id$=":inputSubdomain"]',
|
|
9
|
-
SAVE_BUTTON: 'input[id$=":saveId"]'
|
|
10
|
-
};
|
|
11
|
-
export class Communities extends BrowserforcePlugin {
|
|
12
|
-
async retrieve() {
|
|
13
|
-
const page = await this.browserforce.openPage(PATHS.BASE);
|
|
14
|
-
const frameOrPage = await this.browserforce.waitForSelectorInFrameOrPage(page, SELECTORS.BASE);
|
|
15
|
-
const response = {
|
|
16
|
-
enabled: true
|
|
17
|
-
};
|
|
18
|
-
const inputEnable = await frameOrPage.$(SELECTORS.ENABLE_CHECKBOX);
|
|
19
|
-
if (inputEnable) {
|
|
20
|
-
response.enabled = await frameOrPage.$eval(SELECTORS.ENABLE_CHECKBOX, (el) => el.checked);
|
|
21
|
-
}
|
|
22
|
-
await page.close();
|
|
23
|
-
return response;
|
|
24
|
-
}
|
|
25
|
-
async apply(config) {
|
|
26
|
-
if (config.enabled === false) {
|
|
27
|
-
throw new Error('`enabled` cannot be disabled once enabled');
|
|
28
|
-
}
|
|
29
|
-
const page = await this.browserforce.openPage(PATHS.BASE);
|
|
30
|
-
const frameOrPage = await this.browserforce.waitForSelectorInFrameOrPage(page, SELECTORS.ENABLE_CHECKBOX);
|
|
31
|
-
await frameOrPage.click(SELECTORS.ENABLE_CHECKBOX);
|
|
32
|
-
const domainName = (config.domainName ||
|
|
33
|
-
this.browserforce.getMyDomain() ||
|
|
34
|
-
`comm-${Math.random().toString(36).substr(2)}`).substring(0, 22);
|
|
35
|
-
await frameOrPage.waitForSelector(SELECTORS.DOMAIN_NAME_INPUT_TEXT);
|
|
36
|
-
await frameOrPage.type(SELECTORS.DOMAIN_NAME_INPUT_TEXT, domainName);
|
|
37
|
-
page.on('dialog', async (dialog) => {
|
|
38
|
-
await dialog.accept();
|
|
39
|
-
});
|
|
40
|
-
await frameOrPage.waitForSelector(SELECTORS.SAVE_BUTTON);
|
|
41
|
-
await Promise.all([page.waitForNavigation(), frameOrPage.click(SELECTORS.SAVE_BUTTON)]);
|
|
42
|
-
await page.close();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/communities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,wCAAwC;CAC/C,CAAC;AACF,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,YAAY;IAClB,eAAe,EAAE,mCAAmC;IACpD,sBAAsB,EAAE,8BAA8B;IACtD,WAAW,EAAE,sBAAsB;CACpC,CAAC;AAOF,MAAM,OAAO,WAAY,SAAQ,kBAAkB;IAC1C,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,IAAI;SACd,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACnE,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,CAAC,OAAO,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,EAAoB,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAC9G,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,IAAI,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;QAC1G,MAAM,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,CACjB,MAAM,CAAC,UAAU;YACjB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YAC/B,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC/C,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnB,MAAM,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACpE,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACjC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
-
type Config = {
|
|
3
|
-
suspend: boolean;
|
|
4
|
-
};
|
|
5
|
-
export declare class DeferSharingCalculation extends BrowserforcePlugin {
|
|
6
|
-
retrieve(definition?: Config): Promise<Config>;
|
|
7
|
-
apply(config: Config): Promise<void>;
|
|
8
|
-
}
|
|
9
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,70 +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 { DeferSharingCalculation } from './index.js';
|
|
6
|
-
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
7
|
-
describe(DeferSharingCalculation.name, function () {
|
|
8
|
-
let plugin;
|
|
9
|
-
before(() => {
|
|
10
|
-
plugin = new DeferSharingCalculation(global.bf);
|
|
11
|
-
});
|
|
12
|
-
const configSuspend = {
|
|
13
|
-
suspend: true
|
|
14
|
-
};
|
|
15
|
-
const configResume = {
|
|
16
|
-
suspend: false
|
|
17
|
-
};
|
|
18
|
-
it('should assign the user defer sharing permissions', () => {
|
|
19
|
-
const sourceDeployCmd = child.spawnSync('sf', [
|
|
20
|
-
'project',
|
|
21
|
-
'deploy',
|
|
22
|
-
'start',
|
|
23
|
-
'-d',
|
|
24
|
-
path.join(__dirname, 'sfdx-source'),
|
|
25
|
-
'--json'
|
|
26
|
-
]);
|
|
27
|
-
assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
|
|
28
|
-
const permSetAssignCmd = child.spawnSync('sf', ['org', 'assign', 'permset', '-n', 'Defer_Sharing']);
|
|
29
|
-
assert.deepStrictEqual(permSetAssignCmd.status, 0, permSetAssignCmd.output.toString());
|
|
30
|
-
});
|
|
31
|
-
it('should suspend', async () => {
|
|
32
|
-
await plugin.run(configSuspend);
|
|
33
|
-
});
|
|
34
|
-
it('should already be suspended', async () => {
|
|
35
|
-
const res = await plugin.run(configSuspend);
|
|
36
|
-
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
37
|
-
});
|
|
38
|
-
it('should resume', async () => {
|
|
39
|
-
await plugin.run(configResume);
|
|
40
|
-
});
|
|
41
|
-
it('should already be resumed', async () => {
|
|
42
|
-
let err;
|
|
43
|
-
let res;
|
|
44
|
-
try {
|
|
45
|
-
res = await plugin.run(configResume);
|
|
46
|
-
}
|
|
47
|
-
catch (e) {
|
|
48
|
-
err = e;
|
|
49
|
-
assert.throws(() => {
|
|
50
|
-
throw err;
|
|
51
|
-
}, /Sharing recalculation is currently in progress, please wait until this has completed to plan/);
|
|
52
|
-
}
|
|
53
|
-
if (!err) {
|
|
54
|
-
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
it('should delete the PermissionSetAssignment', async () => {
|
|
58
|
-
const permSetUnassignCmd = child.spawnSync('sf', [
|
|
59
|
-
'data',
|
|
60
|
-
'delete',
|
|
61
|
-
'record',
|
|
62
|
-
'-s',
|
|
63
|
-
'PermissionSetAssignment',
|
|
64
|
-
'-w',
|
|
65
|
-
'PermissionSet.Name=Defer_Sharing'
|
|
66
|
-
]);
|
|
67
|
-
assert.deepStrictEqual(permSetUnassignCmd.status, 0, permSetUnassignCmd.output.toString());
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/defer-sharing-calculation/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,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,QAAQ,CAAC,uBAAuB,CAAC,IAAI,EAAE;IACrC,IAAI,MAA+B,CAAC;IACpC,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,IAAI;KACd,CAAC;IACF,MAAM,YAAY,GAAG;QACnB,OAAO,EAAE,KAAK;KACf,CAAC;IACF,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,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,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrF,MAAM,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;QACpG,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,IAAI,GAAG,CAAC;QACR,IAAI,GAAG,CAAC;QACR,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,GAAG,CAAC,CAAC;YACR,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;gBACjB,MAAM,GAAG,CAAC;YACZ,CAAC,EAAE,8FAA8F,CAAC,CAAC;QACrG,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,kBAAkB,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;YAC/C,MAAM;YACN,QAAQ;YACR,QAAQ;YACR,IAAI;YACJ,yBAAyB;YACzB,IAAI;YACJ,kCAAkC;SACnC,CAAC,CAAC;QACH,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
-
const PATHS = {
|
|
3
|
-
BASE: 'p/own/DeferSharingSetupPage'
|
|
4
|
-
};
|
|
5
|
-
const SELECTORS = {
|
|
6
|
-
SUSPEND_BUTTON: 'input[name="rule_suspend"]',
|
|
7
|
-
RESUME_BUTTON: 'input[name="rule_resume"]',
|
|
8
|
-
RECALCULATE_BUTTON: 'input[name="rule_recalc"]'
|
|
9
|
-
};
|
|
10
|
-
export class DeferSharingCalculation extends BrowserforcePlugin {
|
|
11
|
-
async retrieve(definition) {
|
|
12
|
-
const page = await this.browserforce.openPage(PATHS.BASE);
|
|
13
|
-
await page.waitForSelector(SELECTORS.SUSPEND_BUTTON);
|
|
14
|
-
await page.waitForSelector(SELECTORS.RESUME_BUTTON);
|
|
15
|
-
const isSuspendDisabled = await page.$eval(SELECTORS.SUSPEND_BUTTON, (el) => el.disabled);
|
|
16
|
-
const isResumeDisabled = await page.$eval(SELECTORS.RESUME_BUTTON, (el) => el.disabled);
|
|
17
|
-
if (isSuspendDisabled && isResumeDisabled) {
|
|
18
|
-
throw new Error('Sharing recalculation is currently in progress, please wait until this has completed to plan');
|
|
19
|
-
}
|
|
20
|
-
await page.close();
|
|
21
|
-
return {
|
|
22
|
-
suspend: isSuspendDisabled
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
async apply(config) {
|
|
26
|
-
const page = await this.browserforce.openPage(PATHS.BASE);
|
|
27
|
-
const button = config.suspend ? SELECTORS.SUSPEND_BUTTON : SELECTORS.RESUME_BUTTON;
|
|
28
|
-
await page.waitForSelector(button);
|
|
29
|
-
await Promise.all([page.waitForNavigation(), page.click(button)]);
|
|
30
|
-
await page.close();
|
|
31
|
-
if (!config.suspend) {
|
|
32
|
-
const refreshedPage = await this.browserforce.openPage(PATHS.BASE);
|
|
33
|
-
await refreshedPage.waitForSelector(SELECTORS.RECALCULATE_BUTTON);
|
|
34
|
-
await Promise.all([refreshedPage.waitForNavigation(), refreshedPage.click(SELECTORS.RECALCULATE_BUTTON)]);
|
|
35
|
-
await refreshedPage.close();
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/defer-sharing-calculation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,6BAA6B;CACpC,CAAC;AACF,MAAM,SAAS,GAAG;IAChB,cAAc,EAAE,4BAA4B;IAC5C,aAAa,EAAE,2BAA2B;IAC1C,kBAAkB,EAAE,2BAA2B;CAChD,CAAC;AAMF,MAAM,OAAO,uBAAwB,SAAQ,kBAAkB;IACtD,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAEpD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,EAAoB,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC5G,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAoB,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC1G,IAAI,iBAAiB,IAAI,gBAAgB,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;QAClH,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,iBAAiB;SAC3B,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC;QACnF,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnE,MAAM,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YAClE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,iBAAiB,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YAC1G,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
2
|
-
export type Config = {
|
|
3
|
-
enabled: boolean;
|
|
4
|
-
certificate?: string;
|
|
5
|
-
};
|
|
6
|
-
export declare class IdentityProvider extends BrowserforcePlugin {
|
|
7
|
-
retrieve(): Promise<Config>;
|
|
8
|
-
apply(plan: Config): Promise<void>;
|
|
9
|
-
}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import pRetry, { AbortError } from 'p-retry';
|
|
2
|
-
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
3
|
-
const PATHS = {
|
|
4
|
-
EDIT_VIEW: 'setup/secur/idp/IdpPage.apexp'
|
|
5
|
-
};
|
|
6
|
-
const SELECTORS = {
|
|
7
|
-
CHOOSE_CERT: 'select[id$=":chooseCert"]',
|
|
8
|
-
CERT_NAME_SPAN: 'span[id$="developer__name"',
|
|
9
|
-
DISABLE_BUTTON: 'input[name$=":disable"]',
|
|
10
|
-
EDIT_BUTTON: 'input[name$=":edit"]',
|
|
11
|
-
SAVE_BUTTON: 'input[name$=":save"]'
|
|
12
|
-
};
|
|
13
|
-
export class IdentityProvider extends BrowserforcePlugin {
|
|
14
|
-
async retrieve() {
|
|
15
|
-
const page = await this.browserforce.openPage(PATHS.EDIT_VIEW);
|
|
16
|
-
await page.waitForSelector(SELECTORS.EDIT_BUTTON);
|
|
17
|
-
const disableButton = await page.$(SELECTORS.DISABLE_BUTTON);
|
|
18
|
-
const enabled = disableButton !== null;
|
|
19
|
-
const response = {
|
|
20
|
-
enabled
|
|
21
|
-
};
|
|
22
|
-
if (enabled) {
|
|
23
|
-
const certNameHandle = await page.$(SELECTORS.CERT_NAME_SPAN);
|
|
24
|
-
response.certificate = await page.evaluate((span) => span.innerText, certNameHandle);
|
|
25
|
-
}
|
|
26
|
-
await page.close();
|
|
27
|
-
return response;
|
|
28
|
-
}
|
|
29
|
-
async apply(plan) {
|
|
30
|
-
if (plan.enabled && plan.certificate && plan.certificate !== '') {
|
|
31
|
-
// enable with required certificate
|
|
32
|
-
// wait for cert to become available in Identity Provider UI
|
|
33
|
-
await pRetry(async () => {
|
|
34
|
-
const certsResponse = await this.org
|
|
35
|
-
.getConnection()
|
|
36
|
-
.tooling.query(`SELECT Id, DeveloperName FROM Certificate WHERE DeveloperName = '${plan.certificate}'`);
|
|
37
|
-
if (!certsResponse.totalSize) {
|
|
38
|
-
throw new AbortError(`Could not find Certificate '${plan.certificate}'`);
|
|
39
|
-
}
|
|
40
|
-
const page = await this.browserforce.openPage(PATHS.EDIT_VIEW);
|
|
41
|
-
await page.waitForSelector(SELECTORS.EDIT_BUTTON);
|
|
42
|
-
await Promise.all([page.waitForNavigation(), page.click(SELECTORS.EDIT_BUTTON)]);
|
|
43
|
-
await page.waitForSelector(SELECTORS.CHOOSE_CERT);
|
|
44
|
-
const chooseCertOptions = await page.$$eval(`${SELECTORS.CHOOSE_CERT} option`, (options) => {
|
|
45
|
-
return options.map((option) => {
|
|
46
|
-
return {
|
|
47
|
-
text: option.text,
|
|
48
|
-
value: option.value
|
|
49
|
-
};
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
const chooseCertOption = chooseCertOptions.find((x) => x.text === plan.certificate);
|
|
53
|
-
if (!chooseCertOption) {
|
|
54
|
-
throw new Error(`Waiting for Certificate '${plan.certificate}' to be available in Identity Provider picklist timed out`);
|
|
55
|
-
}
|
|
56
|
-
await page.select(SELECTORS.CHOOSE_CERT, chooseCertOption.value);
|
|
57
|
-
page.on('dialog', async (dialog) => {
|
|
58
|
-
await dialog.accept();
|
|
59
|
-
});
|
|
60
|
-
await page.waitForSelector(SELECTORS.SAVE_BUTTON);
|
|
61
|
-
await Promise.all([page.waitForNavigation(), page.click(SELECTORS.SAVE_BUTTON)]);
|
|
62
|
-
await page.close();
|
|
63
|
-
}, {
|
|
64
|
-
retries: 5,
|
|
65
|
-
minTimeout: 2 * 1000
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
// disable
|
|
70
|
-
const page = await this.browserforce.openPage(PATHS.EDIT_VIEW);
|
|
71
|
-
await page.waitForSelector(SELECTORS.EDIT_BUTTON);
|
|
72
|
-
await page.$(SELECTORS.DISABLE_BUTTON);
|
|
73
|
-
page.on('dialog', async (dialog) => {
|
|
74
|
-
await dialog.accept();
|
|
75
|
-
});
|
|
76
|
-
await Promise.all([page.waitForNavigation(), page.click(SELECTORS.DISABLE_BUTTON)]);
|
|
77
|
-
await page.close();
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/security/identity-provider/index.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,KAAK,GAAG;IACZ,SAAS,EAAE,+BAA+B;CAC3C,CAAC;AACF,MAAM,SAAS,GAAG;IAChB,WAAW,EAAE,2BAA2B;IACxC,cAAc,EAAE,4BAA4B;IAC5C,cAAc,EAAE,yBAAyB;IACzC,WAAW,EAAE,sBAAsB;IACnC,WAAW,EAAE,sBAAsB;CACpC,CAAC;AAYF,MAAM,OAAO,gBAAiB,SAAQ,kBAAkB;IAC/C,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,aAAa,KAAK,IAAI,CAAC;QACvC,MAAM,QAAQ,GAAW;YACvB,OAAO;SACR,CAAC;QACF,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YAC9D,QAAQ,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAqB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACxG,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY;QAC7B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;YAChE,mCAAmC;YACnC,4DAA4D;YAC5D,MAAM,MAAM,CACV,KAAK,IAAI,EAAE;gBACT,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,GAAG;qBACjC,aAAa,EAAE;qBACf,OAAO,CAAC,KAAK,CACZ,oEAAoE,IAAI,CAAC,WAAW,GAAG,CACxF,CAAC;gBACJ,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;oBAC7B,MAAM,IAAI,UAAU,CAAC,+BAA+B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;gBAC3E,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC/D,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAClD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACjF,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAClD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,MAAM,CACzC,GAAG,SAAS,CAAC,WAAW,SAAS,EACjC,CAAC,OAA4B,EAAE,EAAE;oBAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;wBAC5B,OAAO;4BACL,IAAI,EAAE,MAAM,CAAC,IAAI;4BACjB,KAAK,EAAE,MAAM,CAAC,KAAK;yBACpB,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC,CACF,CAAC;gBACF,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpF,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,CAAC,WAAW,2DAA2D,CACxG,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBACjE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;oBACjC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;gBACxB,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAClD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACjF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC,EACD;gBACE,OAAO,EAAE,CAAC;gBACV,UAAU,EAAE,CAAC,GAAG,IAAI;aACrB,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,UAAU;YACV,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC/D,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YACvC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACjC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;YACxB,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACpF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { Org } from '@salesforce/core';
|
|
2
|
-
import assert from 'assert';
|
|
3
|
-
import { CertificateAndKeyManagement } from './certificate-and-key-management/index.js';
|
|
4
|
-
import { IdentityProvider } from './identity-provider/index.js';
|
|
5
|
-
describe(`${CertificateAndKeyManagement.name} and ${IdentityProvider.name}`, function () {
|
|
6
|
-
let pluginIdentityProvider;
|
|
7
|
-
let pluginCertificateManagement;
|
|
8
|
-
before(() => {
|
|
9
|
-
pluginIdentityProvider = new IdentityProvider(global.bf);
|
|
10
|
-
pluginCertificateManagement = new CertificateAndKeyManagement(global.bf);
|
|
11
|
-
});
|
|
12
|
-
const configEnabled = {
|
|
13
|
-
enabled: true,
|
|
14
|
-
certificate: 'identity_provider'
|
|
15
|
-
};
|
|
16
|
-
const configDisabled = {
|
|
17
|
-
enabled: false
|
|
18
|
-
};
|
|
19
|
-
const configGeneratedCert = {
|
|
20
|
-
certificates: [
|
|
21
|
-
{
|
|
22
|
-
name: 'identity_provider',
|
|
23
|
-
label: 'identity_provider'
|
|
24
|
-
}
|
|
25
|
-
]
|
|
26
|
-
};
|
|
27
|
-
const configImportFromKeystore = {
|
|
28
|
-
importFromKeystore: [
|
|
29
|
-
{
|
|
30
|
-
filePath: './src/plugins/security/certificate-and-key-management/Dummy.jks',
|
|
31
|
-
name: 'Dummy'
|
|
32
|
-
}
|
|
33
|
-
]
|
|
34
|
-
};
|
|
35
|
-
it('should fail to enable identity provider with non-existing Certificate', async () => {
|
|
36
|
-
let err;
|
|
37
|
-
try {
|
|
38
|
-
await pluginIdentityProvider.run(configEnabled);
|
|
39
|
-
}
|
|
40
|
-
catch (e) {
|
|
41
|
-
err = e;
|
|
42
|
-
}
|
|
43
|
-
assert.throws(() => {
|
|
44
|
-
throw err;
|
|
45
|
-
}, /Could not find Certificate 'identity_provider'/);
|
|
46
|
-
});
|
|
47
|
-
it('should create a self-signed certificate', async () => {
|
|
48
|
-
await pluginCertificateManagement.apply(configGeneratedCert);
|
|
49
|
-
});
|
|
50
|
-
it('should not do anything if self-signed certificate is already available', async () => {
|
|
51
|
-
// explictly pass definition to retrieve
|
|
52
|
-
const res = await pluginCertificateManagement.run(configGeneratedCert);
|
|
53
|
-
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
54
|
-
});
|
|
55
|
-
it('should enable Identity Provider with generated cert', async () => {
|
|
56
|
-
await pluginIdentityProvider.apply(configEnabled);
|
|
57
|
-
});
|
|
58
|
-
it('Identity Provider should be enabled', async () => {
|
|
59
|
-
const state = await pluginIdentityProvider.retrieve();
|
|
60
|
-
assert.deepStrictEqual(state.enabled, true);
|
|
61
|
-
});
|
|
62
|
-
it('should disable Identity Provider', async () => {
|
|
63
|
-
await pluginIdentityProvider.apply(configDisabled);
|
|
64
|
-
});
|
|
65
|
-
it('Identity Provider should be disabled', async () => {
|
|
66
|
-
const state = await pluginIdentityProvider.retrieve();
|
|
67
|
-
assert.deepStrictEqual(state.enabled, false);
|
|
68
|
-
});
|
|
69
|
-
it('should import a cert from a keystore', async () => {
|
|
70
|
-
await pluginCertificateManagement.run(configImportFromKeystore);
|
|
71
|
-
});
|
|
72
|
-
it('should not do anything if cert is already available in keystore', async () => {
|
|
73
|
-
const res = await pluginCertificateManagement.run(configImportFromKeystore);
|
|
74
|
-
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
75
|
-
});
|
|
76
|
-
it('should delete certificates using Metadata API', async () => {
|
|
77
|
-
const org = await Org.create({});
|
|
78
|
-
const conn = org.getConnection();
|
|
79
|
-
await conn.metadata.delete('Certificate', ['identity_provider', 'Dummy']);
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/security/index.e2e-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
2
|
-
export type Config = {
|
|
3
|
-
administratorsCanLogInAsAnyUser: boolean;
|
|
4
|
-
};
|
|
5
|
-
export declare class LoginAccessPolicies extends BrowserforcePlugin {
|
|
6
|
-
retrieve(): Promise<Config>;
|
|
7
|
-
apply(config: Config): Promise<void>;
|
|
8
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|