sfdx-browserforce-plugin 2.11.2 → 3.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 +10 -10
- package/lib/browserforce-command.js +25 -19
- package/lib/browserforce-command.js.map +1 -1
- package/lib/browserforce.js +11 -28
- package/lib/browserforce.js.map +1 -1
- package/lib/commands/browserforce/apply.js +14 -14
- package/lib/commands/browserforce/apply.js.map +1 -1
- package/lib/commands/browserforce/plan.js +16 -15
- 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/jsforce-utils.js.map +1 -1
- package/lib/plugin.js +11 -30
- package/lib/plugin.js.map +1 -1
- package/lib/plugins/activity-settings/index.e2e-spec.js +41 -0
- package/lib/plugins/activity-settings/index.e2e-spec.js.map +1 -0
- package/lib/plugins/activity-settings/index.js +1 -4
- package/lib/plugins/activity-settings/index.js.map +1 -1
- package/lib/plugins/communities/index.e2e-spec.js +39 -0
- package/lib/plugins/communities/index.e2e-spec.js.map +1 -0
- package/lib/plugins/communities/index.js +2 -7
- package/lib/plugins/communities/index.js.map +1 -1
- package/lib/plugins/company-information/index.e2e-spec.js +42 -0
- package/lib/plugins/company-information/index.e2e-spec.js.map +1 -0
- package/lib/plugins/company-information/index.js +8 -12
- package/lib/plugins/company-information/index.js.map +1 -1
- package/lib/plugins/customer-portal/available-custom-objects/index.js +20 -48
- package/lib/plugins/customer-portal/available-custom-objects/index.js.map +1 -1
- package/lib/plugins/customer-portal/available-custom-objects/index.test.js +44 -0
- package/lib/plugins/customer-portal/available-custom-objects/index.test.js.map +1 -0
- package/lib/plugins/customer-portal/enabled/index.js +3 -11
- package/lib/plugins/customer-portal/enabled/index.js.map +1 -1
- package/lib/plugins/customer-portal/enabled/index.test.js +39 -0
- package/lib/plugins/customer-portal/enabled/index.test.js.map +1 -0
- package/lib/plugins/customer-portal/index.e2e-spec.js +222 -0
- package/lib/plugins/customer-portal/index.e2e-spec.js.map +1 -0
- package/lib/plugins/customer-portal/index.js +17 -13
- package/lib/plugins/customer-portal/index.js.map +1 -1
- package/lib/plugins/customer-portal/index.test.js +89 -0
- package/lib/plugins/customer-portal/index.test.js.map +1 -0
- package/lib/plugins/customer-portal/portals/index.js +17 -25
- package/lib/plugins/customer-portal/portals/index.js.map +1 -1
- package/lib/plugins/customer-portal/portals/index.test.js +145 -0
- package/lib/plugins/customer-portal/portals/index.test.js.map +1 -0
- package/lib/plugins/defer-sharing-calculation/index.e2e-spec.js +96 -0
- package/lib/plugins/defer-sharing-calculation/index.e2e-spec.js.map +1 -0
- package/lib/plugins/defer-sharing-calculation/index.js +2 -7
- package/lib/plugins/defer-sharing-calculation/index.js.map +1 -1
- package/lib/plugins/density-settings/index.e2e-spec.js +44 -0
- package/lib/plugins/density-settings/index.e2e-spec.js.map +1 -0
- package/lib/plugins/density-settings/index.js +8 -6
- package/lib/plugins/density-settings/index.js.map +1 -1
- package/lib/plugins/email-deliverability/index.e2e-spec.js +60 -0
- package/lib/plugins/email-deliverability/index.e2e-spec.js.map +1 -0
- package/lib/plugins/email-deliverability/index.js +7 -10
- package/lib/plugins/email-deliverability/index.js.map +1 -1
- package/lib/plugins/high-velocity-sales-settings/index.e2e-spec.js +34 -0
- package/lib/plugins/high-velocity-sales-settings/index.e2e-spec.js.map +1 -0
- package/lib/plugins/high-velocity-sales-settings/index.js +1 -2
- package/lib/plugins/high-velocity-sales-settings/index.js.map +1 -1
- package/lib/plugins/high-velocity-sales-settings/page.js +13 -4
- package/lib/plugins/high-velocity-sales-settings/page.js.map +1 -1
- package/lib/plugins/home-page-layouts/index.e2e-spec.js +52 -0
- package/lib/plugins/home-page-layouts/index.e2e-spec.js.map +1 -0
- package/lib/plugins/home-page-layouts/index.js +14 -32
- package/lib/plugins/home-page-layouts/index.js.map +1 -1
- package/lib/plugins/home-page-layouts/index.test.js +109 -0
- package/lib/plugins/home-page-layouts/index.test.js.map +1 -0
- package/lib/plugins/lightning-experience-settings/index.e2e-spec.js +44 -0
- package/lib/plugins/lightning-experience-settings/index.e2e-spec.js.map +1 -0
- package/lib/plugins/lightning-experience-settings/index.js +11 -9
- package/lib/plugins/lightning-experience-settings/index.js.map +1 -1
- package/lib/plugins/opportunity-splits/index.e2e-spec.js +70 -0
- package/lib/plugins/opportunity-splits/index.e2e-spec.js.map +1 -0
- package/lib/plugins/opportunity-splits/pages/layout-selection.js +1 -4
- package/lib/plugins/opportunity-splits/pages/layout-selection.js.map +1 -1
- package/lib/plugins/opportunity-splits/pages/overview.js +1 -4
- package/lib/plugins/opportunity-splits/pages/overview.js.map +1 -1
- package/lib/plugins/opportunity-splits/pages/setup.js +1 -4
- package/lib/plugins/opportunity-splits/pages/setup.js.map +1 -1
- package/lib/plugins/picklists/field-dependencies/index.js +15 -10
- package/lib/plugins/picklists/field-dependencies/index.js.map +1 -1
- package/lib/plugins/picklists/field-dependencies/index.test.js +69 -0
- package/lib/plugins/picklists/field-dependencies/index.test.js.map +1 -0
- package/lib/plugins/picklists/field-dependencies/pages.js +3 -12
- package/lib/plugins/picklists/field-dependencies/pages.js.map +1 -1
- package/lib/plugins/picklists/index.e2e-spec.js +118 -0
- package/lib/plugins/picklists/index.e2e-spec.js.map +1 -0
- package/lib/plugins/picklists/index.js +36 -27
- package/lib/plugins/picklists/index.js.map +1 -1
- package/lib/plugins/picklists/pages.js +7 -28
- 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 +99 -0
- package/lib/plugins/record-types/index.e2e-spec.js.map +1 -0
- package/lib/plugins/record-types/index.js +1 -2
- package/lib/plugins/record-types/index.js.map +1 -1
- package/lib/plugins/record-types/pages.js +4 -10
- package/lib/plugins/record-types/pages.js.map +1 -1
- package/lib/plugins/relate-contact-to-multiple-accounts/index.e2e-spec.js +34 -0
- package/lib/plugins/relate-contact-to-multiple-accounts/index.e2e-spec.js.map +1 -0
- package/lib/plugins/relate-contact-to-multiple-accounts/index.js +3 -12
- package/lib/plugins/relate-contact-to-multiple-accounts/index.js.map +1 -1
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.e2e-spec.js +3 -0
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.e2e-spec.js.map +1 -0
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.js +1 -4
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.js.map +1 -1
- package/lib/plugins/reports-and-dashboards/index.e2e-spec.js +3 -0
- package/lib/plugins/reports-and-dashboards/index.e2e-spec.js.map +1 -0
- package/lib/plugins/reports-and-dashboards/index.js +6 -6
- package/lib/plugins/reports-and-dashboards/index.js.map +1 -1
- package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.js +39 -0
- package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.js.map +1 -0
- package/lib/plugins/salesforce-to-salesforce/index.js +1 -4
- package/lib/plugins/salesforce-to-salesforce/index.js.map +1 -1
- package/lib/plugins/security/certificate-and-key-management/index.js +25 -36
- package/lib/plugins/security/certificate-and-key-management/index.js.map +1 -1
- package/lib/plugins/security/certificate-and-key-management/index.test.js +66 -0
- package/lib/plugins/security/certificate-and-key-management/index.test.js.map +1 -0
- package/lib/plugins/security/identity-provider/index.js +13 -24
- package/lib/plugins/security/identity-provider/index.js.map +1 -1
- package/lib/plugins/security/index.e2e-spec.js +86 -0
- package/lib/plugins/security/index.e2e-spec.js.map +1 -0
- package/lib/plugins/security/index.js +24 -15
- package/lib/plugins/security/index.js.map +1 -1
- package/lib/plugins/security/login-access-policies/index.e2e-spec.js +32 -0
- package/lib/plugins/security/login-access-policies/index.e2e-spec.js.map +1 -0
- package/lib/plugins/security/login-access-policies/index.js +2 -5
- package/lib/plugins/security/login-access-policies/index.js.map +1 -1
- package/lib/plugins/security/sharing/index.e2e-spec.js +34 -0
- package/lib/plugins/security/sharing/index.e2e-spec.js.map +1 -0
- package/lib/plugins/security/sharing/index.js +5 -11
- package/lib/plugins/security/sharing/index.js.map +1 -1
- package/lib/plugins/utils.js +38 -41
- package/lib/plugins/utils.js.map +1 -1
- package/oclif.manifest.json +104 -112
- package/package.json +12 -10
- package/lib/browserforce-command.d.ts +0 -15
- package/lib/browserforce.d.ts +0 -26
- package/lib/commands/browserforce/apply.d.ts +0 -6
- package/lib/commands/browserforce/plan.d.ts +0 -6
- package/lib/config-parser.d.ts +0 -16
- package/lib/index.d.ts +0 -1
- package/lib/jsforce-utils.d.ts +0 -5
- package/lib/plugin.d.ts +0 -11
- package/lib/plugins/activity-settings/index.d.ts +0 -9
- package/lib/plugins/communities/index.d.ts +0 -10
- package/lib/plugins/company-information/index.d.ts +0 -9
- package/lib/plugins/customer-portal/available-custom-objects/index.d.ts +0 -14
- package/lib/plugins/customer-portal/enabled/index.d.ts +0 -7
- package/lib/plugins/customer-portal/index.d.ts +0 -15
- package/lib/plugins/customer-portal/portals/index.d.ts +0 -25
- package/lib/plugins/defer-sharing-calculation/index.d.ts +0 -9
- package/lib/plugins/density-settings/index.d.ts +0 -17
- package/lib/plugins/email-deliverability/index.d.ts +0 -9
- package/lib/plugins/high-velocity-sales-settings/index.d.ts +0 -11
- package/lib/plugins/high-velocity-sales-settings/page.d.ts +0 -7
- package/lib/plugins/home-page-layouts/index.d.ts +0 -14
- package/lib/plugins/index.d.ts +0 -18
- package/lib/plugins/lightning-experience-settings/index.d.ts +0 -17
- package/lib/plugins/opportunity-splits/index.d.ts +0 -9
- package/lib/plugins/opportunity-splits/pages/layout-selection.d.ts +0 -8
- package/lib/plugins/opportunity-splits/pages/overview.d.ts +0 -10
- package/lib/plugins/opportunity-splits/pages/setup.d.ts +0 -8
- package/lib/plugins/picklists/field-dependencies/index.d.ts +0 -11
- package/lib/plugins/picklists/field-dependencies/pages.d.ts +0 -14
- package/lib/plugins/picklists/index.d.ts +0 -23
- package/lib/plugins/picklists/pages.d.ts +0 -40
- package/lib/plugins/picklists/standard-value-set.d.ts +0 -1
- package/lib/plugins/record-types/index.d.ts +0 -13
- package/lib/plugins/record-types/pages.d.ts +0 -15
- package/lib/plugins/relate-contact-to-multiple-accounts/index.d.ts +0 -9
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.d.ts +0 -8
- package/lib/plugins/reports-and-dashboards/index.d.ts +0 -11
- package/lib/plugins/salesforce-to-salesforce/index.d.ts +0 -9
- package/lib/plugins/security/certificate-and-key-management/index.d.ts +0 -23
- package/lib/plugins/security/identity-provider/index.d.ts +0 -10
- package/lib/plugins/security/index.d.ts +0 -17
- package/lib/plugins/security/login-access-policies/index.d.ts +0 -8
- package/lib/plugins/security/sharing/index.d.ts +0 -8
- package/lib/plugins/utils.d.ts +0 -4
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const _1 = require(".");
|
|
8
|
+
const tests = [
|
|
9
|
+
{
|
|
10
|
+
description: 'should not do anything if keystore already exists',
|
|
11
|
+
source: {
|
|
12
|
+
importFromKeystore: [
|
|
13
|
+
{
|
|
14
|
+
name: 'Dummy'
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
target: {
|
|
19
|
+
importFromKeystore: [
|
|
20
|
+
{
|
|
21
|
+
name: 'Dummy',
|
|
22
|
+
filePath: 'foo.jks'
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
expected: undefined
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
description: 'should try to import keystore',
|
|
30
|
+
source: {
|
|
31
|
+
importFromKeystore: [
|
|
32
|
+
{
|
|
33
|
+
name: 'Foo'
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
target: {
|
|
38
|
+
importFromKeystore: [
|
|
39
|
+
{
|
|
40
|
+
name: 'Dummy',
|
|
41
|
+
filePath: 'foo.jks'
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
expected: {
|
|
46
|
+
importFromKeystore: [
|
|
47
|
+
{
|
|
48
|
+
name: 'Dummy',
|
|
49
|
+
filePath: 'foo.jks'
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
];
|
|
55
|
+
describe('CertificateAndKeyManagement', () => {
|
|
56
|
+
describe('diff()', () => {
|
|
57
|
+
const p = new _1.CertificateAndKeyManagement(global.bf);
|
|
58
|
+
for (const t of tests) {
|
|
59
|
+
it(t.description, () => {
|
|
60
|
+
const actual = p.diff(t.source, t.target);
|
|
61
|
+
assert_1.default.deepStrictEqual(actual, t.expected);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/plugins/security/certificate-and-key-management/index.test.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,wBAAwD;AASxD,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,8BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACrB,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,gBAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -24,10 +24,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.IdentityProvider = void 0;
|
|
27
|
-
const jsonMergePatch = __importStar(require("json-merge-patch"));
|
|
28
27
|
const p_retry_1 = __importStar(require("p-retry"));
|
|
29
28
|
const plugin_1 = require("../../../plugin");
|
|
30
|
-
const utils_1 = require("../../utils");
|
|
31
29
|
const PATHS = {
|
|
32
30
|
EDIT_VIEW: 'setup/secur/idp/IdpPage.apexp'
|
|
33
31
|
};
|
|
@@ -39,25 +37,24 @@ const SELECTORS = {
|
|
|
39
37
|
SAVE_BUTTON: 'input[name$=":save"]'
|
|
40
38
|
};
|
|
41
39
|
class IdentityProvider extends plugin_1.BrowserforcePlugin {
|
|
42
|
-
async retrieve(
|
|
40
|
+
async retrieve() {
|
|
43
41
|
const page = await this.browserforce.openPage(PATHS.EDIT_VIEW);
|
|
44
42
|
await page.waitForSelector(SELECTORS.EDIT_BUTTON);
|
|
45
43
|
const disableButton = await page.$(SELECTORS.DISABLE_BUTTON);
|
|
46
|
-
const
|
|
44
|
+
const enabled = disableButton !== null;
|
|
47
45
|
const response = {
|
|
48
|
-
enabled
|
|
46
|
+
enabled
|
|
49
47
|
};
|
|
50
|
-
if (
|
|
51
|
-
|
|
48
|
+
if (enabled) {
|
|
49
|
+
const certNameHandle = await page.$(SELECTORS.CERT_NAME_SPAN);
|
|
50
|
+
response.certificate = await page.evaluate((span) => span.innerText, certNameHandle);
|
|
52
51
|
}
|
|
53
52
|
await page.close();
|
|
54
53
|
return response;
|
|
55
54
|
}
|
|
56
|
-
diff(state, definition) {
|
|
57
|
-
return (0, utils_1.removeNullValues)(jsonMergePatch.generate(state, definition));
|
|
58
|
-
}
|
|
59
55
|
async apply(plan) {
|
|
60
56
|
if (plan.enabled && plan.certificate && plan.certificate !== '') {
|
|
57
|
+
// enable with required certificate
|
|
61
58
|
// wait for cert to become available in Identity Provider UI
|
|
62
59
|
await (0, p_retry_1.default)(async () => {
|
|
63
60
|
const certsResponse = await this.org
|
|
@@ -68,20 +65,17 @@ class IdentityProvider extends plugin_1.BrowserforcePlugin {
|
|
|
68
65
|
}
|
|
69
66
|
const page = await this.browserforce.openPage(PATHS.EDIT_VIEW);
|
|
70
67
|
await page.waitForSelector(SELECTORS.EDIT_BUTTON);
|
|
71
|
-
await Promise.all([
|
|
72
|
-
page.waitForNavigation(),
|
|
73
|
-
page.click(SELECTORS.EDIT_BUTTON)
|
|
74
|
-
]);
|
|
68
|
+
await Promise.all([page.waitForNavigation(), page.click(SELECTORS.EDIT_BUTTON)]);
|
|
75
69
|
await page.waitForSelector(SELECTORS.CHOOSE_CERT);
|
|
76
70
|
const chooseCertOptions = await page.$$eval(`${SELECTORS.CHOOSE_CERT} option`, (options) => {
|
|
77
|
-
return options.map(option => {
|
|
71
|
+
return options.map((option) => {
|
|
78
72
|
return {
|
|
79
73
|
text: option.text,
|
|
80
74
|
value: option.value
|
|
81
75
|
};
|
|
82
76
|
});
|
|
83
77
|
});
|
|
84
|
-
const chooseCertOption = chooseCertOptions.find(x => x.text === plan.certificate);
|
|
78
|
+
const chooseCertOption = chooseCertOptions.find((x) => x.text === plan.certificate);
|
|
85
79
|
if (!chooseCertOption) {
|
|
86
80
|
throw new Error(`Waiting for Certificate '${plan.certificate}' to be available in Identity Provider picklist timed out`);
|
|
87
81
|
}
|
|
@@ -90,10 +84,7 @@ class IdentityProvider extends plugin_1.BrowserforcePlugin {
|
|
|
90
84
|
await dialog.accept();
|
|
91
85
|
});
|
|
92
86
|
await page.waitForSelector(SELECTORS.SAVE_BUTTON);
|
|
93
|
-
await Promise.all([
|
|
94
|
-
page.waitForNavigation(),
|
|
95
|
-
page.click(SELECTORS.SAVE_BUTTON)
|
|
96
|
-
]);
|
|
87
|
+
await Promise.all([page.waitForNavigation(), page.click(SELECTORS.SAVE_BUTTON)]);
|
|
97
88
|
await page.close();
|
|
98
89
|
}, {
|
|
99
90
|
retries: 5,
|
|
@@ -101,16 +92,14 @@ class IdentityProvider extends plugin_1.BrowserforcePlugin {
|
|
|
101
92
|
});
|
|
102
93
|
}
|
|
103
94
|
else {
|
|
95
|
+
// disable
|
|
104
96
|
const page = await this.browserforce.openPage(PATHS.EDIT_VIEW);
|
|
105
97
|
await page.waitForSelector(SELECTORS.EDIT_BUTTON);
|
|
106
98
|
await page.$(SELECTORS.DISABLE_BUTTON);
|
|
107
99
|
page.on('dialog', async (dialog) => {
|
|
108
100
|
await dialog.accept();
|
|
109
101
|
});
|
|
110
|
-
await Promise.all([
|
|
111
|
-
page.waitForNavigation(),
|
|
112
|
-
page.click(SELECTORS.DISABLE_BUTTON)
|
|
113
|
-
]);
|
|
102
|
+
await Promise.all([page.waitForNavigation(), page.click(SELECTORS.DISABLE_BUTTON)]);
|
|
114
103
|
await page.close();
|
|
115
104
|
}
|
|
116
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/security/identity-provider/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/security/identity-provider/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const core_1 = require("@salesforce/core");
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const certificate_and_key_management_1 = require("./certificate-and-key-management");
|
|
9
|
+
const identity_provider_1 = require("./identity-provider");
|
|
10
|
+
describe(`${certificate_and_key_management_1.CertificateAndKeyManagement.name} and ${identity_provider_1.IdentityProvider.name}`, function () {
|
|
11
|
+
let pluginIdentityProvider, pluginCertificateManagement;
|
|
12
|
+
before(() => {
|
|
13
|
+
pluginIdentityProvider = new identity_provider_1.IdentityProvider(global.bf);
|
|
14
|
+
pluginCertificateManagement = new certificate_and_key_management_1.CertificateAndKeyManagement(global.bf);
|
|
15
|
+
});
|
|
16
|
+
const configEnabled = {
|
|
17
|
+
enabled: true,
|
|
18
|
+
certificate: 'identity_provider'
|
|
19
|
+
};
|
|
20
|
+
const configDisabled = {
|
|
21
|
+
enabled: false
|
|
22
|
+
};
|
|
23
|
+
const configGeneratedCert = {
|
|
24
|
+
certificates: [
|
|
25
|
+
{
|
|
26
|
+
name: 'identity_provider',
|
|
27
|
+
label: 'identity_provider'
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
};
|
|
31
|
+
const configImportFromKeystore = {
|
|
32
|
+
importFromKeystore: [
|
|
33
|
+
{
|
|
34
|
+
filePath: './src/plugins/security/certificate-and-key-management/Dummy.jks',
|
|
35
|
+
name: 'Dummy'
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
};
|
|
39
|
+
it('should fail to enable identity provider with non-existing Certificate', async () => {
|
|
40
|
+
let err;
|
|
41
|
+
try {
|
|
42
|
+
await pluginIdentityProvider.run(configEnabled);
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
err = e;
|
|
46
|
+
}
|
|
47
|
+
assert_1.default.throws(() => {
|
|
48
|
+
throw err;
|
|
49
|
+
}, /Could not find Certificate 'identity_provider'/);
|
|
50
|
+
});
|
|
51
|
+
it('should create a self-signed certificate', async () => {
|
|
52
|
+
await pluginCertificateManagement.apply(configGeneratedCert);
|
|
53
|
+
});
|
|
54
|
+
it('should not do anything if self-signed certificate is already available', async () => {
|
|
55
|
+
// explictly pass definition to retrieve
|
|
56
|
+
const res = await pluginCertificateManagement.run(configGeneratedCert);
|
|
57
|
+
assert_1.default.deepStrictEqual(res, { message: 'no action necessary' });
|
|
58
|
+
});
|
|
59
|
+
it('should enable Identity Provider with generated cert', async () => {
|
|
60
|
+
await pluginIdentityProvider.apply(configEnabled);
|
|
61
|
+
});
|
|
62
|
+
it('Identity Provider should be enabled', async () => {
|
|
63
|
+
const state = await pluginIdentityProvider.retrieve();
|
|
64
|
+
assert_1.default.deepStrictEqual(state.enabled, true);
|
|
65
|
+
});
|
|
66
|
+
it('should disable Identity Provider', async () => {
|
|
67
|
+
await pluginIdentityProvider.apply(configDisabled);
|
|
68
|
+
});
|
|
69
|
+
it('Identity Provider should be disabled', async () => {
|
|
70
|
+
const state = await pluginIdentityProvider.retrieve();
|
|
71
|
+
assert_1.default.deepStrictEqual(state.enabled, false);
|
|
72
|
+
});
|
|
73
|
+
it('should import a cert from a keystore', async () => {
|
|
74
|
+
await pluginCertificateManagement.run(configImportFromKeystore);
|
|
75
|
+
});
|
|
76
|
+
it('should not do anything if cert is already available in keystore', async () => {
|
|
77
|
+
const res = await pluginCertificateManagement.run(configImportFromKeystore);
|
|
78
|
+
assert_1.default.deepStrictEqual(res, { message: 'no action necessary' });
|
|
79
|
+
});
|
|
80
|
+
it('should delete certificates using Metadata API', async () => {
|
|
81
|
+
const org = await core_1.Org.create({});
|
|
82
|
+
const conn = org.getConnection();
|
|
83
|
+
await conn.metadata.delete('Certificate', ['identity_provider', 'Dummy']);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/security/index.e2e-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Security = void 0;
|
|
4
4
|
const plugin_1 = require("../../plugin");
|
|
5
|
-
const utils_1 = require("../utils");
|
|
6
5
|
const certificate_and_key_management_1 = require("./certificate-and-key-management");
|
|
7
6
|
const identity_provider_1 = require("./identity-provider");
|
|
8
7
|
const login_access_policies_1 = require("./login-access-policies");
|
|
@@ -17,31 +16,41 @@ class Security extends plugin_1.BrowserforcePlugin {
|
|
|
17
16
|
}
|
|
18
17
|
if (definition.identityProvider) {
|
|
19
18
|
const pluginIdentityProvider = new identity_provider_1.IdentityProvider(this.browserforce);
|
|
20
|
-
response.identityProvider = await pluginIdentityProvider.retrieve(
|
|
19
|
+
response.identityProvider = await pluginIdentityProvider.retrieve();
|
|
21
20
|
}
|
|
22
21
|
if (definition.loginAccessPolicies) {
|
|
23
22
|
const pluginLoginAccessPolicies = new login_access_policies_1.LoginAccessPolicies(this.browserforce);
|
|
24
|
-
response.loginAccessPolicies = await pluginLoginAccessPolicies.retrieve(
|
|
23
|
+
response.loginAccessPolicies = await pluginLoginAccessPolicies.retrieve();
|
|
25
24
|
}
|
|
26
25
|
if (definition.sharing) {
|
|
27
26
|
const pluginSharing = new sharing_1.Sharing(this.browserforce);
|
|
28
|
-
response.sharing = await pluginSharing.retrieve(
|
|
27
|
+
response.sharing = await pluginSharing.retrieve();
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
30
|
return response;
|
|
32
31
|
}
|
|
33
32
|
diff(state, definition) {
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const response = {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
33
|
+
const certificateAndKeyManagement = new certificate_and_key_management_1.CertificateAndKeyManagement(this.browserforce).diff(state.certificateAndKeyManagement, definition.certificateAndKeyManagement);
|
|
34
|
+
const identityProvider = new identity_provider_1.IdentityProvider(this.browserforce).diff(state.identityProvider, definition.identityProvider);
|
|
35
|
+
const loginAccessPolicies = new login_access_policies_1.LoginAccessPolicies(this.browserforce).diff(state.loginAccessPolicies, definition.loginAccessPolicies);
|
|
36
|
+
const sharing = new sharing_1.Sharing(this.browserforce).diff(state.sharing, definition.sharing);
|
|
37
|
+
const response = {};
|
|
38
|
+
if (certificateAndKeyManagement !== undefined) {
|
|
39
|
+
response.certificateAndKeyManagement = certificateAndKeyManagement;
|
|
40
|
+
}
|
|
41
|
+
if (identityProvider !== undefined) {
|
|
42
|
+
response.identityProvider = identityProvider;
|
|
43
|
+
}
|
|
44
|
+
if (loginAccessPolicies !== undefined) {
|
|
45
|
+
response.loginAccessPolicies = loginAccessPolicies;
|
|
46
|
+
}
|
|
47
|
+
if (loginAccessPolicies !== undefined) {
|
|
48
|
+
response.loginAccessPolicies = loginAccessPolicies;
|
|
49
|
+
}
|
|
50
|
+
if (sharing !== undefined) {
|
|
51
|
+
response.sharing = sharing;
|
|
52
|
+
}
|
|
53
|
+
return Object.keys(response).length ? response : undefined;
|
|
45
54
|
}
|
|
46
55
|
async apply(plan) {
|
|
47
56
|
if (plan.certificateAndKeyManagement) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/security/index.ts"],"names":[],"mappings":";;;AAAA,yCAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/security/index.ts"],"names":[],"mappings":";;;AAAA,yCAAkD;AAClD,qFAG0C;AAC1C,2DAAyF;AACzF,mEAAmG;AACnG,uCAA6D;AAS7D,MAAa,QAAS,SAAQ,2BAAkB;IACvC,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,QAAQ,GAAW,EAAE,CAAC;QAC5B,IAAI,UAAU,EAAE;YACd,IAAI,UAAU,CAAC,2BAA2B,EAAE;gBAC1C,MAAM,SAAS,GAAG,IAAI,4DAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACrE,QAAQ,CAAC,2BAA2B,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;aACzG;YACD,IAAI,UAAU,CAAC,gBAAgB,EAAE;gBAC/B,MAAM,sBAAsB,GAAG,IAAI,oCAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACvE,QAAQ,CAAC,gBAAgB,GAAG,MAAM,sBAAsB,CAAC,QAAQ,EAAE,CAAC;aACrE;YACD,IAAI,UAAU,CAAC,mBAAmB,EAAE;gBAClC,MAAM,yBAAyB,GAAG,IAAI,2CAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC7E,QAAQ,CAAC,mBAAmB,GAAG,MAAM,yBAAyB,CAAC,QAAQ,EAAE,CAAC;aAC3E;YACD,IAAI,UAAU,CAAC,OAAO,EAAE;gBACtB,MAAM,aAAa,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACrD,QAAQ,CAAC,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;aACnD;SACF;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,IAAI,CAAC,KAAa,EAAE,UAAkB;QAC3C,MAAM,2BAA2B,GAAG,IAAI,4DAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CACzF,KAAK,CAAC,2BAA2B,EACjC,UAAU,CAAC,2BAA2B,CACvC,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAI,oCAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CACnE,KAAK,CAAC,gBAAgB,EACtB,UAAU,CAAC,gBAAgB,CACU,CAAC;QACxC,MAAM,mBAAmB,GAAG,IAAI,2CAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CACzE,KAAK,CAAC,mBAAmB,EACzB,UAAU,CAAC,mBAAmB,CACU,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAA8B,CAAC;QACpH,MAAM,QAAQ,GAAW,EAAE,CAAC;QAC5B,IAAI,2BAA2B,KAAK,SAAS,EAAE;YAC7C,QAAQ,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;SACpE;QACD,IAAI,gBAAgB,KAAK,SAAS,EAAE;YAClC,QAAQ,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;SAC9C;QACD,IAAI,mBAAmB,KAAK,SAAS,EAAE;YACrC,QAAQ,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;SACpD;QACD,IAAI,mBAAmB,KAAK,SAAS,EAAE;YACrC,QAAQ,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;SACpD;QACD,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;SAC5B;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;YACpC,MAAM,SAAS,GAAG,IAAI,4DAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrE,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;SACzD;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,MAAM,sBAAsB,GAAG,IAAI,oCAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvE,MAAM,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAC3D;QACD,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,MAAM,yBAAyB,GAAG,IAAI,2CAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7E,MAAM,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;SACjE;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,aAAa,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrD,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACzC;IACH,CAAC;CACF;AA3ED,4BA2EC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const _1 = require(".");
|
|
8
|
+
describe(_1.LoginAccessPolicies.name, function () {
|
|
9
|
+
let plugin;
|
|
10
|
+
before(() => {
|
|
11
|
+
plugin = new _1.LoginAccessPolicies(global.bf);
|
|
12
|
+
});
|
|
13
|
+
describe('administratorsCanLogInAsAnyUser', () => {
|
|
14
|
+
const configDisabled = { administratorsCanLogInAsAnyUser: false };
|
|
15
|
+
const configEnabled = { administratorsCanLogInAsAnyUser: true };
|
|
16
|
+
it('should enable', async () => {
|
|
17
|
+
await plugin.run(configEnabled);
|
|
18
|
+
});
|
|
19
|
+
it('should be enabled', async () => {
|
|
20
|
+
const res = await plugin.retrieve();
|
|
21
|
+
assert_1.default.deepStrictEqual(res, configEnabled);
|
|
22
|
+
});
|
|
23
|
+
it('should disable', async () => {
|
|
24
|
+
await plugin.apply(configDisabled);
|
|
25
|
+
});
|
|
26
|
+
it('should be disabled', async () => {
|
|
27
|
+
const res = await plugin.retrieve();
|
|
28
|
+
assert_1.default.deepStrictEqual(res, configDisabled);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../../src/plugins/security/login-access-policies/index.e2e-spec.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,wBAAqD;AAErD,QAAQ,CAAC,sBAAmB,CAAC,IAAI,EAAE;IACjC,IAAI,MAAM,CAAC;IACX,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,sBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC/C,MAAM,cAAc,GAAW,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC;QAC1E,MAAM,aAAa,GAAW,EAAE,+BAA+B,EAAE,IAAI,EAAE,CAAC;QAExE,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;YAC7B,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;YACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpC,gBAAM,CAAC,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpC,gBAAM,CAAC,eAAe,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -11,7 +11,7 @@ const SELECTORS = {
|
|
|
11
11
|
SAVE_BUTTON: 'input[id$=":save"]'
|
|
12
12
|
};
|
|
13
13
|
class LoginAccessPolicies extends plugin_1.BrowserforcePlugin {
|
|
14
|
-
async retrieve(
|
|
14
|
+
async retrieve() {
|
|
15
15
|
const page = await this.browserforce.openPage(PATHS.BASE);
|
|
16
16
|
await page.waitForSelector(SELECTORS.ENABLED);
|
|
17
17
|
const response = {
|
|
@@ -26,10 +26,7 @@ class LoginAccessPolicies extends plugin_1.BrowserforcePlugin {
|
|
|
26
26
|
await page.$eval(SELECTORS.ENABLED, (e, v) => {
|
|
27
27
|
e.checked = v;
|
|
28
28
|
}, config.administratorsCanLogInAsAnyUser);
|
|
29
|
-
await Promise.all([
|
|
30
|
-
page.waitForSelector(SELECTORS.CONFIRM_MESSAGE),
|
|
31
|
-
page.click(SELECTORS.SAVE_BUTTON)
|
|
32
|
-
]);
|
|
29
|
+
await Promise.all([page.waitForSelector(SELECTORS.CONFIRM_MESSAGE), page.click(SELECTORS.SAVE_BUTTON)]);
|
|
33
30
|
await page.close();
|
|
34
31
|
}
|
|
35
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/security/login-access-policies/index.ts"],"names":[],"mappings":";;;AAAA,4CAAqD;AAErD,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,qCAAqC;CAC5C,CAAC;AACF,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,kCAAkC;IAC3C,eAAe,EAAE,oBAAoB;IACrC,WAAW,EAAE,oBAAoB;CAClC,CAAC;AAMF,MAAa,mBAAoB,SAAQ,2BAAkB;IAClD,KAAK,CAAC,QAAQ
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/security/login-access-policies/index.ts"],"names":[],"mappings":";;;AAAA,4CAAqD;AAErD,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,qCAAqC;CAC5C,CAAC;AACF,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,kCAAkC;IAC3C,eAAe,EAAE,oBAAoB;IACrC,WAAW,EAAE,oBAAoB;CAClC,CAAC;AAMF,MAAa,mBAAoB,SAAQ,2BAAkB;IAClD,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG;YACf,+BAA+B,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAoB,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;SAC3G,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC;IAClB,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,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,KAAK,CACd,SAAS,CAAC,OAAO,EACjB,CAAC,CAAmB,EAAE,CAAU,EAAE,EAAE;YAClC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;QAChB,CAAC,EACD,MAAM,CAAC,+BAA+B,CACvC,CAAC;QACF,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACxG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AAxBD,kDAwBC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const _1 = require(".");
|
|
8
|
+
describe.skip(_1.Sharing.name, function () {
|
|
9
|
+
let plugin;
|
|
10
|
+
before(() => {
|
|
11
|
+
plugin = new _1.Sharing(global.bf);
|
|
12
|
+
});
|
|
13
|
+
const configEnabled = {
|
|
14
|
+
enableExternalSharingModel: true
|
|
15
|
+
};
|
|
16
|
+
const configDisabled = {
|
|
17
|
+
enableExternalSharingModel: true
|
|
18
|
+
};
|
|
19
|
+
it('should enable', async () => {
|
|
20
|
+
await plugin.run(configEnabled);
|
|
21
|
+
});
|
|
22
|
+
it('should be enabled', async () => {
|
|
23
|
+
const state = await plugin.retrieve();
|
|
24
|
+
assert_1.default.deepStrictEqual(state, configEnabled);
|
|
25
|
+
});
|
|
26
|
+
it('should disable', async () => {
|
|
27
|
+
await plugin.apply(configDisabled);
|
|
28
|
+
});
|
|
29
|
+
it('should be disabled', async () => {
|
|
30
|
+
const state = await plugin.retrieve();
|
|
31
|
+
assert_1.default.deepStrictEqual(state, configDisabled);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../../src/plugins/security/sharing/index.e2e-spec.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,wBAA4B;AAE5B,QAAQ,CAAC,IAAI,CAAC,UAAO,CAAC,IAAI,EAAE;IAC1B,IAAI,MAAM,CAAC;IACX,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,UAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG;QACpB,0BAA0B,EAAE,IAAI;KACjC,CAAC;IACF,MAAM,cAAc,GAAG;QACrB,0BAA0B,EAAE,IAAI;KACjC,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,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,gBAAM,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,gBAAM,CAAC,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -12,13 +12,13 @@ const SELECTORS = {
|
|
|
12
12
|
MODAL_DIALOG: 'Modal.confirm'
|
|
13
13
|
};
|
|
14
14
|
class Sharing extends plugin_1.BrowserforcePlugin {
|
|
15
|
-
async retrieve(
|
|
15
|
+
async retrieve() {
|
|
16
16
|
const page = await this.browserforce.openPage(PATHS.BASE);
|
|
17
17
|
await page.waitForSelector(SELECTORS.EXTERNAL_SHARING_MODEL_BUTTON);
|
|
18
|
-
const buttonOnclick = await page.$eval(SELECTORS.EXTERNAL_SHARING_MODEL_BUTTON, (el) => el.onclick
|
|
18
|
+
const buttonOnclick = await page.$eval(SELECTORS.EXTERNAL_SHARING_MODEL_BUTTON, (el) => el.onclick?.toString() || '');
|
|
19
19
|
await page.close();
|
|
20
20
|
return {
|
|
21
|
-
enableExternalSharingModel: buttonOnclick.
|
|
21
|
+
enableExternalSharingModel: buttonOnclick.includes(SELECTORS.MODAL_DIALOG)
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
24
|
async apply(config) {
|
|
@@ -28,16 +28,10 @@ class Sharing extends plugin_1.BrowserforcePlugin {
|
|
|
28
28
|
await dialog.accept();
|
|
29
29
|
});
|
|
30
30
|
if (config.enableExternalSharingModel) {
|
|
31
|
-
await Promise.all([
|
|
32
|
-
page.waitForSelector(SELECTORS.DISABLE_BUTTON),
|
|
33
|
-
page.click(SELECTORS.ENABLE_BUTTON)
|
|
34
|
-
]);
|
|
31
|
+
await Promise.all([page.waitForSelector(SELECTORS.DISABLE_BUTTON), page.click(SELECTORS.ENABLE_BUTTON)]);
|
|
35
32
|
}
|
|
36
33
|
else {
|
|
37
|
-
await Promise.all([
|
|
38
|
-
page.waitForSelector(SELECTORS.ENABLE_BUTTON),
|
|
39
|
-
page.click(SELECTORS.DISABLE_BUTTON)
|
|
40
|
-
]);
|
|
34
|
+
await Promise.all([page.waitForSelector(SELECTORS.ENABLE_BUTTON), page.click(SELECTORS.DISABLE_BUTTON)]);
|
|
41
35
|
}
|
|
42
36
|
await page.close();
|
|
43
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/security/sharing/index.ts"],"names":[],"mappings":";;;AAAA,4CAAqD;AAErD,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,wBAAwB;CAC/B,CAAC;AACF,MAAM,SAAS,GAAG;IAChB,6BAA6B,EAAE,6BAA6B;IAC5D,aAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/security/sharing/index.ts"],"names":[],"mappings":";;;AAAA,4CAAqD;AAErD,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,wBAAwB;CAC/B,CAAC;AACF,MAAM,SAAS,GAAG;IAChB,6BAA6B,EAAE,6BAA6B;IAC5D,aAAa,EAAE,kEAAkE;IACjF,cAAc,EAAE,4DAA4D;IAC5E,YAAY,EAAE,eAAe;CAC9B,CAAC;AAMF,MAAa,OAAQ,SAAQ,2BAAkB;IACtC,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CACpC,SAAS,CAAC,6BAA6B,EACvC,CAAC,EAAoB,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CACvD,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO;YACL,0BAA0B,EAAE,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC;SAC3E,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,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACpE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACjC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,0BAA0B,EAAE;YACrC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SAC1G;aAAM;YACL,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;SAC1G;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AA3BD,0BA2BC"}
|
package/lib/plugins/utils.js
CHANGED
|
@@ -1,51 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
if (!obj) {
|
|
6
|
-
obj = {};
|
|
7
|
-
}
|
|
8
|
-
return Object.entries(obj).reduce((acc, [key, value]) => {
|
|
9
|
-
if (Array.isArray(value)) {
|
|
10
|
-
if (value.length) {
|
|
11
|
-
acc[key] = value;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
else if (typeof value === 'object') {
|
|
15
|
-
if (Object.keys(value).length) {
|
|
16
|
-
acc[key] = value;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
else if (value !== undefined && value !== null) {
|
|
20
|
-
acc[key] = value;
|
|
21
|
-
}
|
|
22
|
-
return acc;
|
|
23
|
-
}, {});
|
|
24
|
-
}
|
|
25
|
-
exports.removeEmptyValues = removeEmptyValues;
|
|
26
|
-
function removeNullValues(obj) {
|
|
27
|
-
if (!obj) {
|
|
28
|
-
obj = {};
|
|
29
|
-
}
|
|
30
|
-
Object.entries(obj).forEach(([key, val]) => (val && typeof val === 'object' && removeNullValues(val)) ||
|
|
31
|
-
((val === null || val === undefined) && delete obj[key]));
|
|
32
|
-
return obj;
|
|
33
|
-
}
|
|
34
|
-
exports.removeNullValues = removeNullValues;
|
|
3
|
+
exports.deepDiff = exports.isEmptyObjectOrArray = exports.semanticallyCleanObject = void 0;
|
|
4
|
+
const util_1 = require("util");
|
|
35
5
|
// an object only containing an id is semantically empty
|
|
36
6
|
function semanticallyCleanObject(obj, id = 'id') {
|
|
37
|
-
if (
|
|
38
|
-
obj
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return null;
|
|
7
|
+
if (typeof obj === 'object' && obj !== null) {
|
|
8
|
+
if (Object.keys(obj).length === 1 && Object.keys(obj)[0] === id) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
42
11
|
}
|
|
43
12
|
return obj;
|
|
44
13
|
}
|
|
45
14
|
exports.semanticallyCleanObject = semanticallyCleanObject;
|
|
46
|
-
function
|
|
47
|
-
|
|
48
|
-
|
|
15
|
+
function isEmptyObjectOrArray(arg) {
|
|
16
|
+
if (typeof arg === 'object' && arg !== null) {
|
|
17
|
+
return Object.keys(arg).length === 0;
|
|
18
|
+
}
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
exports.isEmptyObjectOrArray = isEmptyObjectOrArray;
|
|
22
|
+
function deepDiff(source, target) {
|
|
23
|
+
if ((0, util_1.isDeepStrictEqual)(source, target)) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
if (typeof target === 'object' && target !== null && typeof source === 'object' && source !== null) {
|
|
27
|
+
let objectOrArray;
|
|
28
|
+
if (Array.isArray(target)) {
|
|
29
|
+
objectOrArray = target.map((item, i) => deepDiff(source?.[i], item)).filter((x) => x !== undefined);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const targetKeys = Object.keys(target);
|
|
33
|
+
const minSource = Object.fromEntries(Object.entries(source).filter(([key, value]) => targetKeys.includes(key)));
|
|
34
|
+
if (!(0, util_1.isDeepStrictEqual)(minSource, source)) {
|
|
35
|
+
return deepDiff(minSource, target);
|
|
36
|
+
}
|
|
37
|
+
objectOrArray = target;
|
|
38
|
+
}
|
|
39
|
+
if (isEmptyObjectOrArray(objectOrArray)) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
return objectOrArray;
|
|
43
|
+
}
|
|
44
|
+
// simple value
|
|
45
|
+
return target;
|
|
49
46
|
}
|
|
50
|
-
exports.
|
|
47
|
+
exports.deepDiff = deepDiff;
|
|
51
48
|
//# sourceMappingURL=utils.js.map
|
package/lib/plugins/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/plugins/utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/plugins/utils.ts"],"names":[],"mappings":";;;AAAA,+BAAyC;AAEzC,wDAAwD;AACxD,SAAgB,uBAAuB,CAAoB,GAAM,EAAE,EAAE,GAAG,IAAI;IAC1E,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;QAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/D,OAAO,SAAS,CAAC;SAClB;KACF;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAPD,0DAOC;AAED,SAAgB,oBAAoB,CAAC,GAAY;IAC/C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;QAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;KACtC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AALD,oDAKC;AAED,SAAgB,QAAQ,CAAoB,MAAqB,EAAE,MAAqB;IACtF,IAAI,IAAA,wBAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,EAAE;QACrC,OAAO,SAAS,CAAC;KAClB;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;QAClG,IAAI,aAA4B,CAAC;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAErF,CAAC;SACf;aAAM;YACL,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,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAChE,CAAC;YACZ,IAAI,CAAC,IAAA,wBAAiB,EAAC,SAAS,EAAE,MAAM,CAAC,EAAE;gBACzC,OAAO,QAAQ,CAAC,SAAc,EAAE,MAAM,CAAC,CAAC;aACzC;YACD,aAAa,GAAG,MAAM,CAAC;SACxB;QACD,IAAI,oBAAoB,CAAC,aAAa,CAAC,EAAE;YACvC,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,aAAa,CAAC;KACtB;IACD,eAAe;IACf,OAAO,MAAM,CAAC;AAChB,CAAC;AA3BD,4BA2BC"}
|