sfdx-browserforce-plugin 6.0.2 → 6.2.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 +13 -2
- package/lib/commands/browserforce/apply.js +26 -2
- package/lib/commands/browserforce/apply.js.map +1 -1
- package/lib/plugins/auth-providers/index.d.ts +13 -0
- package/lib/plugins/auth-providers/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/auth-providers/index.e2e-spec.js +78 -0
- package/lib/plugins/auth-providers/index.e2e-spec.js.map +1 -0
- package/lib/plugins/auth-providers/index.js +135 -0
- package/lib/plugins/auth-providers/index.js.map +1 -0
- package/lib/plugins/high-velocity-sales-settings/page.js +5 -1
- package/lib/plugins/high-velocity-sales-settings/page.js.map +1 -1
- package/lib/plugins/history-tracking/index.d.ts +2 -0
- package/lib/plugins/history-tracking/index.js +26 -12
- package/lib/plugins/history-tracking/index.js.map +1 -1
- package/lib/plugins/index.d.ts +2 -1
- package/lib/plugins/index.js +2 -1
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/security/authentication-configuration/index.d.ts +4 -0
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.js +37 -0
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.js.map +1 -1
- package/lib/plugins/security/authentication-configuration/index.js +72 -11
- package/lib/plugins/security/authentication-configuration/index.js.map +1 -1
- package/lib/plugins/utils.d.ts +10 -0
- package/lib/plugins/utils.js +117 -0
- package/lib/plugins/utils.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -53,6 +53,17 @@ $ sf browserforce apply -f ./config/currency.json --target-org myOrg@example.com
|
|
|
53
53
|
logging out... done
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
+
Apply the config again: 👉 No action necessary
|
|
57
|
+
|
|
58
|
+
```console
|
|
59
|
+
$ sf browserforce apply -f ./config/currency.json --target-org myOrg@example.com
|
|
60
|
+
logging in... done
|
|
61
|
+
Applying config file ./config/currency.json to org myOrg@example.com
|
|
62
|
+
[CompanyInformation] retrieving state... done
|
|
63
|
+
[CompanyInformation] no action necessary
|
|
64
|
+
logging out... done
|
|
65
|
+
```
|
|
66
|
+
|
|
56
67
|
## Key Concepts
|
|
57
68
|
|
|
58
69
|
- 🔧 configuration using JSON Schema (similar to the [Scratch Org Definition Configuration](https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_scratch_orgs_def_file.htm))
|
|
@@ -186,7 +197,7 @@ FLAG DESCRIPTIONS
|
|
|
186
197
|
The trace file can be viewed with "sf browserforce playwright -- show-trace trace-<date>.zip".
|
|
187
198
|
```
|
|
188
199
|
|
|
189
|
-
_See code: [src/commands/browserforce/apply.ts](https://github.com/amtrack/sfdx-browserforce-plugin/blob/v6.0
|
|
200
|
+
_See code: [src/commands/browserforce/apply.ts](https://github.com/amtrack/sfdx-browserforce-plugin/blob/v6.2.0/src/commands/browserforce/apply.ts)_
|
|
190
201
|
|
|
191
202
|
## `sf browserforce playwright`
|
|
192
203
|
|
|
@@ -209,7 +220,7 @@ EXAMPLES
|
|
|
209
220
|
$ sf browserforce playwright -- install chromium
|
|
210
221
|
```
|
|
211
222
|
|
|
212
|
-
_See code: [src/commands/browserforce/playwright.ts](https://github.com/amtrack/sfdx-browserforce-plugin/blob/v6.0
|
|
223
|
+
_See code: [src/commands/browserforce/playwright.ts](https://github.com/amtrack/sfdx-browserforce-plugin/blob/v6.2.0/src/commands/browserforce/playwright.ts)_
|
|
213
224
|
<!-- commandsstop -->
|
|
214
225
|
|
|
215
226
|
## Playwright
|
|
@@ -1,4 +1,24 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
1
2
|
import { BrowserforceCommand } from '../../browserforce-command.js';
|
|
3
|
+
import { maskSensitiveValues } from '../../plugins/utils.js';
|
|
4
|
+
// Convert camelCase to kebab-case (e.g., "authProviders" -> "auth-providers")
|
|
5
|
+
function camelToKebab(str) {
|
|
6
|
+
return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
|
|
7
|
+
}
|
|
8
|
+
// Load schema for a plugin
|
|
9
|
+
function loadPluginSchema(pluginName) {
|
|
10
|
+
try {
|
|
11
|
+
// Resolve schema path relative to the plugins directory
|
|
12
|
+
// Since we're in src/commands/browserforce/, we need to go up to src/plugins/
|
|
13
|
+
const schemaPath = new URL(`../../plugins/${camelToKebab(pluginName)}/schema.json`, import.meta.url);
|
|
14
|
+
const schemaContent = readFileSync(schemaPath, 'utf8');
|
|
15
|
+
return JSON.parse(schemaContent);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
// Schema file not found or invalid - return undefined to fall back to pattern matching
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
2
22
|
export class BrowserforceApply extends BrowserforceCommand {
|
|
3
23
|
static description = 'apply a plan from a config file';
|
|
4
24
|
static examples = [
|
|
@@ -30,9 +50,13 @@ export class BrowserforceApply extends BrowserforceCommand {
|
|
|
30
50
|
const diff = instance.diff(state, setting.value);
|
|
31
51
|
const action = flags['dry-run'] ? 'would change' : 'changing';
|
|
32
52
|
if (diff !== undefined) {
|
|
33
|
-
this
|
|
53
|
+
// Load schema for this plugin to check for password fields
|
|
54
|
+
const schema = loadPluginSchema(setting.key);
|
|
55
|
+
// Mask sensitive values before logging (using schema if available)
|
|
56
|
+
const maskedDiff = maskSensitiveValues(diff, '', schema);
|
|
57
|
+
this.spinner.start(`[${driver.name}] ${Object.keys(maskedDiff)
|
|
34
58
|
.map((key) => {
|
|
35
|
-
return `${action} '${key}' to '${JSON.stringify(
|
|
59
|
+
return `${action} '${key}' to '${JSON.stringify(maskedDiff[key])}'`;
|
|
36
60
|
})
|
|
37
61
|
.join('\n')}`);
|
|
38
62
|
if (!flags['dry-run']) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/commands/browserforce/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/commands/browserforce/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
+
type AuthProviderConfig = {
|
|
3
|
+
consumerSecret?: string;
|
|
4
|
+
consumerKey?: string;
|
|
5
|
+
};
|
|
6
|
+
export type Config = {
|
|
7
|
+
[developerName: string]: AuthProviderConfig;
|
|
8
|
+
};
|
|
9
|
+
export declare class AuthProviders extends BrowserforcePlugin {
|
|
10
|
+
retrieve(): Promise<Config>;
|
|
11
|
+
apply(config: Config): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
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 { AuthProviders } from './index.js';
|
|
6
|
+
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
7
|
+
describe(AuthProviders.name, function () {
|
|
8
|
+
this.timeout('10m');
|
|
9
|
+
let plugin;
|
|
10
|
+
before(() => {
|
|
11
|
+
plugin = new AuthProviders(global.browserforce);
|
|
12
|
+
});
|
|
13
|
+
const configWithSecretAndKey = {
|
|
14
|
+
TestAuthProvider: {
|
|
15
|
+
consumerSecret: 'test-secret-12345',
|
|
16
|
+
consumerKey: 'test-key-67890',
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
const configWithSecretOnly = {
|
|
20
|
+
TestAuthProvider: {
|
|
21
|
+
consumerSecret: 'updated-secret-abcde',
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
const configWithKeyOnly = {
|
|
25
|
+
TestAuthProvider: {
|
|
26
|
+
consumerKey: 'updated-key-fghij',
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
const configEmpty = {
|
|
30
|
+
TestAuthProvider: {},
|
|
31
|
+
};
|
|
32
|
+
it('should deploy an AuthProvider for testing', () => {
|
|
33
|
+
const sourceDeployCmd = child.spawnSync('sf', [
|
|
34
|
+
'project',
|
|
35
|
+
'deploy',
|
|
36
|
+
'start',
|
|
37
|
+
'-d',
|
|
38
|
+
path.join(__dirname, 'sfdx-source'),
|
|
39
|
+
'--json',
|
|
40
|
+
]);
|
|
41
|
+
assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
|
|
42
|
+
});
|
|
43
|
+
it('should update consumerSecret and consumerKey', async () => {
|
|
44
|
+
await plugin.apply(configWithSecretAndKey);
|
|
45
|
+
// Note: retrieve() returns empty config, so we can only verify apply completes without errors
|
|
46
|
+
});
|
|
47
|
+
it('should update consumerSecret only', async () => {
|
|
48
|
+
await plugin.apply(configWithSecretOnly);
|
|
49
|
+
});
|
|
50
|
+
it('should update consumerKey only', async () => {
|
|
51
|
+
await plugin.apply(configWithKeyOnly);
|
|
52
|
+
});
|
|
53
|
+
it('should handle empty config without errors', async () => {
|
|
54
|
+
await plugin.apply(configEmpty);
|
|
55
|
+
});
|
|
56
|
+
it('should throw an error when AuthProvider does not exist', async () => {
|
|
57
|
+
const configInvalid = {
|
|
58
|
+
NonExistentAuthProvider: {
|
|
59
|
+
consumerSecret: 'test-secret',
|
|
60
|
+
consumerKey: 'test-key',
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
let err;
|
|
64
|
+
try {
|
|
65
|
+
await plugin.apply(configInvalid);
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
err = e;
|
|
69
|
+
}
|
|
70
|
+
assert.throws(() => {
|
|
71
|
+
throw err;
|
|
72
|
+
}, /No AuthProviders found with DeveloperNames/);
|
|
73
|
+
});
|
|
74
|
+
it('should remove the testing AuthProvider', async () => {
|
|
75
|
+
await global.browserforce.connection.metadata.delete('AuthProvider', ['TestAuthProvider']);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/auth-providers/index.e2e-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
2
|
+
if (value !== null && value !== void 0) {
|
|
3
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
4
|
+
var dispose, inner;
|
|
5
|
+
if (async) {
|
|
6
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
7
|
+
dispose = value[Symbol.asyncDispose];
|
|
8
|
+
}
|
|
9
|
+
if (dispose === void 0) {
|
|
10
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
11
|
+
dispose = value[Symbol.dispose];
|
|
12
|
+
if (async) inner = dispose;
|
|
13
|
+
}
|
|
14
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
15
|
+
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
16
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
17
|
+
}
|
|
18
|
+
else if (async) {
|
|
19
|
+
env.stack.push({ async: true });
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
24
|
+
return function (env) {
|
|
25
|
+
function fail(e) {
|
|
26
|
+
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
|
+
env.hasError = true;
|
|
28
|
+
}
|
|
29
|
+
var r, s = 0;
|
|
30
|
+
function next() {
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
|
+
try {
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
fail(e);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
45
|
+
if (env.hasError) throw env.error;
|
|
46
|
+
}
|
|
47
|
+
return next();
|
|
48
|
+
};
|
|
49
|
+
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
50
|
+
var e = new Error(message);
|
|
51
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
52
|
+
});
|
|
53
|
+
import { waitForPageErrors } from '../../browserforce.js';
|
|
54
|
+
import { BrowserforcePlugin } from '../../plugin.js';
|
|
55
|
+
const CONSUMER_SECRET_SELECTOR = '#ConsumerSecret';
|
|
56
|
+
const CONSUMER_KEY_SELECTOR = '#ConsumerKey';
|
|
57
|
+
const SAVE_BUTTON_SELECTOR = 'input[id$=":saveBtn"], #topButtonRow > input[name="save"], button[title="Save"]';
|
|
58
|
+
const getUrl = (orgId) => `/${orgId}/e?retURL=/${orgId}`;
|
|
59
|
+
export class AuthProviders extends BrowserforcePlugin {
|
|
60
|
+
async retrieve() {
|
|
61
|
+
// Skip retrieve as requested - return empty config
|
|
62
|
+
return {};
|
|
63
|
+
}
|
|
64
|
+
async apply(config) {
|
|
65
|
+
if (!config || Object.keys(config).length === 0) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const developerNames = Object.keys(config);
|
|
69
|
+
const developerNamesList = developerNames.map((name) => `'${name}'`).join(',');
|
|
70
|
+
// Query AuthProviders using standard REST API (not Tooling API)
|
|
71
|
+
const authProviders = await this.browserforce.connection.query(`SELECT Id, DeveloperName FROM AuthProvider WHERE DeveloperName IN (${developerNamesList})`);
|
|
72
|
+
if (authProviders.records.length === 0) {
|
|
73
|
+
throw new Error(`No AuthProviders found with DeveloperNames: ${developerNames.join(', ')}`);
|
|
74
|
+
}
|
|
75
|
+
// Create a map for quick lookup
|
|
76
|
+
const authProviderMap = new Map();
|
|
77
|
+
for (const authProvider of authProviders.records) {
|
|
78
|
+
authProviderMap.set(authProvider.DeveloperName, authProvider.Id);
|
|
79
|
+
}
|
|
80
|
+
// Verify we found all required AuthProviders
|
|
81
|
+
const missingProviders = developerNames.filter((name) => !authProviderMap.has(name));
|
|
82
|
+
if (missingProviders.length > 0) {
|
|
83
|
+
throw new Error(`AuthProvider with DeveloperName(s) not found: ${missingProviders.join(', ')}. ` +
|
|
84
|
+
`Please verify the DeveloperNames are correct and the AuthProviders exist in your org.`);
|
|
85
|
+
}
|
|
86
|
+
// Process each auth provider configuration
|
|
87
|
+
for (const [developerName, authProviderConfig] of Object.entries(config)) {
|
|
88
|
+
const authProviderId = authProviderMap.get(developerName);
|
|
89
|
+
if (!authProviderId) {
|
|
90
|
+
throw new Error(`AuthProvider with DeveloperName '${developerName}' not found`);
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
// Check if there are updates to consumerSecret or consumerKey
|
|
94
|
+
const hasConsumerUpdates = authProviderConfig.consumerSecret !== undefined || authProviderConfig.consumerKey !== undefined;
|
|
95
|
+
if (hasConsumerUpdates) {
|
|
96
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
97
|
+
try {
|
|
98
|
+
// Navigate to the edit page
|
|
99
|
+
const editPageUrl = getUrl(authProviderId);
|
|
100
|
+
this.browserforce.logger?.log(`Navigating to edit page for ${developerName}: ${editPageUrl}`);
|
|
101
|
+
const page = __addDisposableResource(env_1, await this.browserforce.openPage(editPageUrl), true);
|
|
102
|
+
// Update ConsumerSecret if provided
|
|
103
|
+
if (authProviderConfig.consumerSecret !== undefined) {
|
|
104
|
+
await page.locator(CONSUMER_SECRET_SELECTOR).fill(authProviderConfig.consumerSecret);
|
|
105
|
+
}
|
|
106
|
+
// Update ConsumerKey if provided
|
|
107
|
+
if (authProviderConfig.consumerKey !== undefined) {
|
|
108
|
+
await page.locator(CONSUMER_KEY_SELECTOR).fill(authProviderConfig.consumerKey);
|
|
109
|
+
}
|
|
110
|
+
// Save the changes
|
|
111
|
+
const saveButtonLocator = page.locator(SAVE_BUTTON_SELECTOR);
|
|
112
|
+
await saveButtonLocator.first().click();
|
|
113
|
+
await Promise.race([
|
|
114
|
+
page.waitForURL((url) => url.pathname === `/${authProviderId}`),
|
|
115
|
+
waitForPageErrors(page),
|
|
116
|
+
]);
|
|
117
|
+
}
|
|
118
|
+
catch (e_1) {
|
|
119
|
+
env_1.error = e_1;
|
|
120
|
+
env_1.hasError = true;
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
const result_1 = __disposeResources(env_1);
|
|
124
|
+
if (result_1)
|
|
125
|
+
await result_1;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
throw new Error(`Failed to update AuthProvider '${developerName}': ${error.message}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/auth-providers/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,11 @@ export class HighVelocitySalesSetupPage {
|
|
|
11
11
|
return '/lightning/setup/SalesEngagement/home';
|
|
12
12
|
}
|
|
13
13
|
async setUpAndEnable() {
|
|
14
|
-
await
|
|
14
|
+
await Promise.race([
|
|
15
|
+
this.page.locator(AUTOMATION_TAB_ITEM).waitFor(),
|
|
16
|
+
// workaround: Starting Spring '26 there is a modal "Event fired" on page load.
|
|
17
|
+
this.page.locator(`div[role=dialog] button.slds-modal__close`).click(),
|
|
18
|
+
]);
|
|
15
19
|
const tabCount = await this.page.locator(AUTOMATION_TAB_ITEM).count();
|
|
16
20
|
if (tabCount > 0) {
|
|
17
21
|
await this.page.locator(AUTOMATION_TAB_ITEM).click();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/plugins/high-velocity-sales-settings/page.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAElF,MAAM,4BAA4B,GAAG,6BAA6B,CAAC;AACnE,MAAM,aAAa,GAAG,8BAA8B,CAAC;AACrD,MAAM,mBAAmB,GAAG,sDAAsD,CAAC;AAEnF,MAAM,OAAO,0BAA0B;IAC7B,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,MAAM,CAAC,MAAM;QAClB,OAAO,uCAAuC,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/plugins/high-velocity-sales-settings/page.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAElF,MAAM,4BAA4B,GAAG,6BAA6B,CAAC;AACnE,MAAM,aAAa,GAAG,8BAA8B,CAAC;AACrD,MAAM,mBAAmB,GAAG,sDAAsD,CAAC;AAEnF,MAAM,OAAO,0BAA0B;IAC7B,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,MAAM,CAAC,MAAM;QAClB,OAAO,uCAAuC,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE;YAChD,+EAA+E;YAC/E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,KAAK,EAAE;SACvE,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;QACtE,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;QACvD,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9D,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpH,CAAC;CACF"}
|
|
@@ -11,6 +11,8 @@ export type FieldHistoryTrackingConfig = {
|
|
|
11
11
|
export declare class HistoryTracking extends BrowserforcePlugin {
|
|
12
12
|
retrieve(definition?: HistoryTrackingConfig[]): Promise<HistoryTrackingConfig[]>;
|
|
13
13
|
apply(plan: HistoryTrackingConfig[]): Promise<void>;
|
|
14
|
+
private queryCustomFieldsAndPopulateMap;
|
|
15
|
+
private parseNamespacedFieldApiName;
|
|
14
16
|
private getFieldSelectorByFieldApiName;
|
|
15
17
|
private getTableEnumOrIdByObjectApiName;
|
|
16
18
|
}
|
|
@@ -176,6 +176,23 @@ export class HistoryTracking extends BrowserforcePlugin {
|
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
|
+
async queryCustomFieldsAndPopulateMap(fieldApiNameTuples, tableEnumOrId, suffix, fieldSelectorByFieldApiName) {
|
|
180
|
+
const developerNameConditions = fieldApiNameTuples.map(([apiname, namespace]) => namespace
|
|
181
|
+
? `(DeveloperName ='${apiname}' AND NamespacePrefix ='${namespace}')`
|
|
182
|
+
: `(DeveloperName = '${apiname}')`);
|
|
183
|
+
const customFieldsQuery = await this.browserforce.connection.tooling.query(`SELECT Id, DeveloperName, NamespacePrefix FROM CustomField WHERE (${developerNameConditions.join(' OR ')}) AND TableEnumOrId = '${tableEnumOrId}' ORDER By CreatedDate ASC`);
|
|
184
|
+
for (const customField of customFieldsQuery.records) {
|
|
185
|
+
const fieldApiName = `${customField.NamespacePrefix ? `${customField.NamespacePrefix}__` : ''}${customField.DeveloperName}${suffix}`;
|
|
186
|
+
fieldSelectorByFieldApiName.set(fieldApiName, customField.Id.substring(0, 15));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
parseNamespacedFieldApiName(fieldApiName, suffix) {
|
|
190
|
+
const fieldNameWithoutSuffix = fieldApiName.replace(suffix, '');
|
|
191
|
+
const parts = fieldNameWithoutSuffix.split('__');
|
|
192
|
+
const namespace = parts.length > 1 ? parts[0] : undefined;
|
|
193
|
+
const apiname = parts.length > 1 ? parts.slice(1).join('__') : parts[0];
|
|
194
|
+
return [apiname, namespace];
|
|
195
|
+
}
|
|
179
196
|
async getFieldSelectorByFieldApiName(tableEnumOrId, fieldHistoryTrackingConfigs) {
|
|
180
197
|
const fieldSelectorByFieldApiName = new Map();
|
|
181
198
|
const customFieldApiNames = [];
|
|
@@ -183,12 +200,12 @@ export class HistoryTracking extends BrowserforcePlugin {
|
|
|
183
200
|
for (const fieldHistoryTrackingConfig of fieldHistoryTrackingConfigs) {
|
|
184
201
|
// If this is a person account field, we must do special handling for this
|
|
185
202
|
if (tableEnumOrId === 'Account' && fieldHistoryTrackingConfig.fieldApiName.includes('__pc')) {
|
|
186
|
-
personAccountFieldApiNames.push(
|
|
203
|
+
personAccountFieldApiNames.push(this.parseNamespacedFieldApiName(fieldHistoryTrackingConfig.fieldApiName, '__pc'));
|
|
187
204
|
continue;
|
|
188
205
|
}
|
|
189
206
|
// If this is a custom field, we must query for the Field Id
|
|
190
207
|
if (fieldHistoryTrackingConfig.fieldApiName.includes('__c')) {
|
|
191
|
-
customFieldApiNames.push(
|
|
208
|
+
customFieldApiNames.push(this.parseNamespacedFieldApiName(fieldHistoryTrackingConfig.fieldApiName, '__c'));
|
|
192
209
|
continue;
|
|
193
210
|
}
|
|
194
211
|
// Otherwise, if this is a standard field, the Selector is the Field API Name
|
|
@@ -200,18 +217,12 @@ export class HistoryTracking extends BrowserforcePlugin {
|
|
|
200
217
|
if (personAccountFieldApiNames.length > 0) {
|
|
201
218
|
// NOTE: Unfortunately this includes deleted records
|
|
202
219
|
// WORKAROUND: ORDER BY CreatedDate
|
|
203
|
-
|
|
204
|
-
for (const personAccountField of personAccountFieldsQuery.records) {
|
|
205
|
-
fieldSelectorByFieldApiName.set(`${personAccountField.DeveloperName}__pc`, personAccountField.Id.substring(0, 15));
|
|
206
|
-
}
|
|
220
|
+
await this.queryCustomFieldsAndPopulateMap(personAccountFieldApiNames, 'Contact', '__pc', fieldSelectorByFieldApiName);
|
|
207
221
|
}
|
|
208
222
|
if (customFieldApiNames.length > 0) {
|
|
209
223
|
// NOTE: Unfortunately this includes deleted records
|
|
210
224
|
// WORKAROUND: ORDER BY CreatedDate
|
|
211
|
-
|
|
212
|
-
for (const customField of customFieldsQuery.records) {
|
|
213
|
-
fieldSelectorByFieldApiName.set(`${customField.DeveloperName}__c`, customField.Id.substring(0, 15));
|
|
214
|
-
}
|
|
225
|
+
await this.queryCustomFieldsAndPopulateMap(customFieldApiNames, tableEnumOrId, '__c', fieldSelectorByFieldApiName);
|
|
215
226
|
}
|
|
216
227
|
return fieldSelectorByFieldApiName;
|
|
217
228
|
}
|
|
@@ -221,7 +232,7 @@ export class HistoryTracking extends BrowserforcePlugin {
|
|
|
221
232
|
for (const historyTrackingConfig of historyTrackingConfigs) {
|
|
222
233
|
// If it is a custom object, the CustomField.TableEnumOrId is the Object Id
|
|
223
234
|
if (historyTrackingConfig.objectApiName.includes('__c')) {
|
|
224
|
-
customObjectApiNames.push(
|
|
235
|
+
customObjectApiNames.push(this.parseNamespacedFieldApiName(historyTrackingConfig.objectApiName, '__c'));
|
|
225
236
|
continue;
|
|
226
237
|
}
|
|
227
238
|
// Otherwise, if this is a standard object, the CustomField.TableEnumOrId is the Object API Name
|
|
@@ -232,7 +243,10 @@ export class HistoryTracking extends BrowserforcePlugin {
|
|
|
232
243
|
}
|
|
233
244
|
// NOTE: Unfortunately this includes deleted records
|
|
234
245
|
// WORKAROUND: ORDER BY CreatedDate
|
|
235
|
-
const
|
|
246
|
+
const customObjectDeveloperNames = customObjectApiNames.map(([apiname, namespace]) => namespace
|
|
247
|
+
? `(DeveloperName = '${apiname}' AND NamespacePrefix = '${namespace}')`
|
|
248
|
+
: `(DeveloperName = '${apiname}')`);
|
|
249
|
+
const customObjectsQuery = await this.browserforce.connection.tooling.query(`SELECT Id, DeveloperName FROM CustomObject WHERE (${customObjectDeveloperNames.join(' OR ')}) ORDER BY CreatedDate ASC`);
|
|
236
250
|
for (const customObject of customObjectsQuery.records) {
|
|
237
251
|
tableEnumOrIdByObjectApiName.set(`${customObject.DeveloperName}__c`, customObject.Id);
|
|
238
252
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/history-tracking/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/history-tracking/index.ts"],"names":[],"mappings":"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"}
|
package/lib/plugins/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ActivitySettings as activitySettings } from './activity-settings/index.js';
|
|
2
|
+
import { AuthProviders as authProviders } from './auth-providers/index.js';
|
|
2
3
|
import { CompanyInformation as companyInformation } from './company-information/index.js';
|
|
3
4
|
import { CustomerPortal as customerPortal } from './customer-portal/index.js';
|
|
4
5
|
import { DensitySettings as densitySettings } from './density-settings/index.js';
|
|
@@ -21,4 +22,4 @@ import { Security as security } from './security/index.js';
|
|
|
21
22
|
import { ServiceChannels as serviceChannels } from './service-channels/index.js';
|
|
22
23
|
import { Slack as slack } from './slack/index.js';
|
|
23
24
|
import { UserAccessPolicies as userAccessPolicies } from './user-access-policies/index.js';
|
|
24
|
-
export { activitySettings, companyInformation, customerPortal, densitySettings, emailDeliverability, highVelocitySalesSettings, historyTracking, homePageLayouts, lightningExperienceSettings, linkedInSalesNavigatorSettings, omniChannelSettings, opportunitySplits, permissionSets, picklists, recordTypes, relateContactToMultipleAccounts, reportsAndDashboards, salesforceCpqConfig, salesforceToSalesforce, security, serviceChannels, slack, userAccessPolicies, };
|
|
25
|
+
export { activitySettings, authProviders, companyInformation, customerPortal, densitySettings, emailDeliverability, highVelocitySalesSettings, historyTracking, homePageLayouts, lightningExperienceSettings, linkedInSalesNavigatorSettings, omniChannelSettings, opportunitySplits, permissionSets, picklists, recordTypes, relateContactToMultipleAccounts, reportsAndDashboards, salesforceCpqConfig, salesforceToSalesforce, security, serviceChannels, slack, userAccessPolicies, };
|
package/lib/plugins/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ActivitySettings as activitySettings } from './activity-settings/index.js';
|
|
2
|
+
import { AuthProviders as authProviders } from './auth-providers/index.js';
|
|
2
3
|
import { CompanyInformation as companyInformation } from './company-information/index.js';
|
|
3
4
|
import { CustomerPortal as customerPortal } from './customer-portal/index.js';
|
|
4
5
|
import { DensitySettings as densitySettings } from './density-settings/index.js';
|
|
@@ -21,5 +22,5 @@ import { Security as security } from './security/index.js';
|
|
|
21
22
|
import { ServiceChannels as serviceChannels } from './service-channels/index.js';
|
|
22
23
|
import { Slack as slack } from './slack/index.js';
|
|
23
24
|
import { UserAccessPolicies as userAccessPolicies } from './user-access-policies/index.js';
|
|
24
|
-
export { activitySettings, companyInformation, customerPortal, densitySettings, emailDeliverability, highVelocitySalesSettings, historyTracking, homePageLayouts, lightningExperienceSettings, linkedInSalesNavigatorSettings, omniChannelSettings, opportunitySplits, permissionSets, picklists, recordTypes, relateContactToMultipleAccounts, reportsAndDashboards, salesforceCpqConfig, salesforceToSalesforce, security, serviceChannels, slack, userAccessPolicies, };
|
|
25
|
+
export { activitySettings, authProviders, companyInformation, customerPortal, densitySettings, emailDeliverability, highVelocitySalesSettings, historyTracking, homePageLayouts, lightningExperienceSettings, linkedInSalesNavigatorSettings, omniChannelSettings, opportunitySplits, permissionSets, picklists, recordTypes, relateContactToMultipleAccounts, reportsAndDashboards, salesforceCpqConfig, salesforceToSalesforce, security, serviceChannels, slack, userAccessPolicies, };
|
|
25
26
|
//# sourceMappingURL=index.js.map
|
package/lib/plugins/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,cAAc,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EAAE,yBAAyB,IAAI,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACjH,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,2BAA2B,IAAI,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACtH,OAAO,EAAE,8BAA8B,IAAI,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAChI,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,cAAc,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,+BAA+B,IAAI,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACpI,OAAO,EAAE,oBAAoB,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACjG,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EAAE,sBAAsB,IAAI,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AACvG,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE3F,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,2BAA2B,EAC3B,8BAA8B,EAC9B,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,WAAW,EACX,+BAA+B,EAC/B,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,KAAK,EACL,kBAAkB,GACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,cAAc,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EAAE,yBAAyB,IAAI,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACjH,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,2BAA2B,IAAI,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACtH,OAAO,EAAE,8BAA8B,IAAI,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAChI,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,cAAc,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,+BAA+B,IAAI,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACpI,OAAO,EAAE,oBAAoB,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACjG,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EAAE,sBAAsB,IAAI,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AACvG,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE3F,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,2BAA2B,EAC3B,8BAA8B,EAC9B,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,WAAW,EACX,+BAA+B,EAC/B,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,KAAK,EACL,kBAAkB,GACnB,CAAC"}
|
|
@@ -3,9 +3,13 @@ export type Config = {
|
|
|
3
3
|
services: Array<{
|
|
4
4
|
label: string;
|
|
5
5
|
enabled: boolean;
|
|
6
|
+
} | {
|
|
7
|
+
authProviderApiName: string;
|
|
8
|
+
enabled: boolean;
|
|
6
9
|
}>;
|
|
7
10
|
};
|
|
8
11
|
export declare class AuthenticationConfiguration extends BrowserforcePlugin {
|
|
12
|
+
private getAuthProviderIds;
|
|
9
13
|
retrieve(definition: Config): Promise<Config>;
|
|
10
14
|
apply(plan: Config): Promise<void>;
|
|
11
15
|
}
|
|
@@ -31,6 +31,18 @@ describe(AuthenticationConfiguration.name, function () {
|
|
|
31
31
|
{ label: 'TestAuthMethod', enabled: false },
|
|
32
32
|
],
|
|
33
33
|
};
|
|
34
|
+
const configRetrieveByApiName = {
|
|
35
|
+
services: [{ authProviderApiName: 'TestAuthMethod', enabled: true }],
|
|
36
|
+
};
|
|
37
|
+
const configApplyByApiName = {
|
|
38
|
+
services: [
|
|
39
|
+
{ label: 'Login Form', enabled: true },
|
|
40
|
+
{ authProviderApiName: 'TestAuthMethod', enabled: false },
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
const configApplyMissingApiName = {
|
|
44
|
+
services: [{ authProviderApiName: 'NonExistentAuthProvider', enabled: true }],
|
|
45
|
+
};
|
|
34
46
|
it('should retrieve the single enabled Login Form auth', async () => {
|
|
35
47
|
const res = await plugin.retrieve(configRetrieveSingle);
|
|
36
48
|
assert.deepStrictEqual(res, configRetrieveSingle);
|
|
@@ -67,6 +79,31 @@ describe(AuthenticationConfiguration.name, function () {
|
|
|
67
79
|
const res = await plugin.retrieve(configApplyMultiple);
|
|
68
80
|
assert.deepStrictEqual(res, configApplyMultiple);
|
|
69
81
|
});
|
|
82
|
+
it('should retrieve using authProviderApiName', async () => {
|
|
83
|
+
const res = await plugin.retrieve(configRetrieveByApiName);
|
|
84
|
+
assert.deepStrictEqual(res, configRetrieveByApiName);
|
|
85
|
+
});
|
|
86
|
+
it('should update auth service using authProviderApiName', async () => {
|
|
87
|
+
await plugin.apply(configApplyByApiName);
|
|
88
|
+
const res = await plugin.retrieve(configApplyByApiName);
|
|
89
|
+
assert.deepStrictEqual(res, configApplyByApiName);
|
|
90
|
+
});
|
|
91
|
+
it('should not do anything when run with authProviderApiName and config already set', async () => {
|
|
92
|
+
const res = await plugin.run(configApplyByApiName);
|
|
93
|
+
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
94
|
+
});
|
|
95
|
+
it('should throw an error when authProviderApiName does not exist', async () => {
|
|
96
|
+
let err;
|
|
97
|
+
try {
|
|
98
|
+
await plugin.apply(configApplyMissingApiName);
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
err = e;
|
|
102
|
+
}
|
|
103
|
+
assert.throws(() => {
|
|
104
|
+
throw err;
|
|
105
|
+
}, /not found/);
|
|
106
|
+
});
|
|
70
107
|
it('should throw an error when trying to apply a missing service', async () => {
|
|
71
108
|
let err;
|
|
72
109
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../../src/plugins/security/authentication-configuration/index.e2e-spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../../src/plugins/security/authentication-configuration/index.e2e-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,24 +55,60 @@ const EDIT_VIEW_PATH = '/lightning/setup/OrgDomain/page?address=%2Fdomainname%2F
|
|
|
55
55
|
const SETUP_FORM_SELECTOR = 'form[id="BrandSetup:brandSetupForm"]';
|
|
56
56
|
const SERVICE_CHECKBOX_SELECTOR = 'input.authOption[type="checkbox"]';
|
|
57
57
|
const SAVE_BUTTON_SELECTOR = 'input[id$=":Save"]';
|
|
58
|
+
function authProviderIdMatchesCheckboxValue(authProviderId, checkboxValue) {
|
|
59
|
+
if (!checkboxValue)
|
|
60
|
+
return false;
|
|
61
|
+
// Support 15-char and 18-char Salesforce Id comparison
|
|
62
|
+
const id15 = authProviderId.substring(0, 15);
|
|
63
|
+
return authProviderId === checkboxValue || id15 === checkboxValue || authProviderId.includes(checkboxValue);
|
|
64
|
+
}
|
|
58
65
|
export class AuthenticationConfiguration extends BrowserforcePlugin {
|
|
66
|
+
async getAuthProviderIds(developerNames) {
|
|
67
|
+
if (developerNames.length === 0)
|
|
68
|
+
return new Map();
|
|
69
|
+
const developerNamesList = developerNames.map((name) => `'${name}'`).join(',');
|
|
70
|
+
const authProviders = await this.browserforce.connection.query(`SELECT Id, DeveloperName FROM AuthProvider WHERE DeveloperName IN (${developerNamesList})`);
|
|
71
|
+
const map = new Map();
|
|
72
|
+
for (const record of authProviders.records) {
|
|
73
|
+
map.set(record.DeveloperName, record.Id);
|
|
74
|
+
}
|
|
75
|
+
return map;
|
|
76
|
+
}
|
|
59
77
|
async retrieve(definition) {
|
|
60
78
|
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
61
79
|
try {
|
|
62
80
|
const page = __addDisposableResource(env_1, await this.browserforce.openPage(EDIT_VIEW_PATH), true);
|
|
63
81
|
const frameOrPage = await this.browserforce.waitForSelectorInFrameOrPage(page, SETUP_FORM_SELECTOR);
|
|
82
|
+
const authProviderApiNames = definition.services
|
|
83
|
+
.filter((s) => 'authProviderApiName' in s)
|
|
84
|
+
.map((s) => s.authProviderApiName);
|
|
85
|
+
const authProviderIdMap = await this.getAuthProviderIds(authProviderApiNames);
|
|
64
86
|
const inputLocators = await frameOrPage.locator(SERVICE_CHECKBOX_SELECTOR).all();
|
|
65
87
|
const allServices = await Promise.all(inputLocators.map(async (input) => {
|
|
66
88
|
const id = await input.getAttribute('id');
|
|
89
|
+
const value = await input.getAttribute('value');
|
|
67
90
|
const labelLocator = frameOrPage.locator(`label[for="${id}"]`);
|
|
68
91
|
const labelCount = await labelLocator.count();
|
|
69
92
|
const label = labelCount > 0 ? (await labelLocator.textContent()).trim() : id;
|
|
70
93
|
return {
|
|
71
94
|
label,
|
|
95
|
+
value,
|
|
72
96
|
enabled: await input.isChecked(),
|
|
73
97
|
};
|
|
74
98
|
}));
|
|
75
|
-
const services =
|
|
99
|
+
const services = definition.services
|
|
100
|
+
.map((definedService) => {
|
|
101
|
+
if ('label' in definedService) {
|
|
102
|
+
const service = allServices.find((s) => s.label === definedService.label);
|
|
103
|
+
return service ? { label: service.label, enabled: service.enabled } : null;
|
|
104
|
+
}
|
|
105
|
+
const authProviderId = authProviderIdMap.get(definedService.authProviderApiName);
|
|
106
|
+
if (!authProviderId)
|
|
107
|
+
return null;
|
|
108
|
+
const service = allServices.find((s) => authProviderIdMatchesCheckboxValue(authProviderId, s.value));
|
|
109
|
+
return service ? { authProviderApiName: definedService.authProviderApiName, enabled: service.enabled } : null;
|
|
110
|
+
})
|
|
111
|
+
.filter((s) => s !== null);
|
|
76
112
|
return { services };
|
|
77
113
|
}
|
|
78
114
|
catch (e_1) {
|
|
@@ -90,23 +126,48 @@ export class AuthenticationConfiguration extends BrowserforcePlugin {
|
|
|
90
126
|
try {
|
|
91
127
|
const page = __addDisposableResource(env_2, await this.browserforce.openPage(EDIT_VIEW_PATH), true);
|
|
92
128
|
const frameOrPage = await this.browserforce.waitForSelectorInFrameOrPage(page, SETUP_FORM_SELECTOR);
|
|
129
|
+
const authProviderApiNames = plan.services
|
|
130
|
+
.filter((s) => 'authProviderApiName' in s)
|
|
131
|
+
.map((s) => s.authProviderApiName);
|
|
132
|
+
const authProviderIdMap = await this.getAuthProviderIds(authProviderApiNames);
|
|
93
133
|
for (const svc of plan.services) {
|
|
94
134
|
const inputLocators = await frameOrPage.locator(SERVICE_CHECKBOX_SELECTOR).all();
|
|
95
135
|
let checkboxId = null;
|
|
96
|
-
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
136
|
+
if ('label' in svc) {
|
|
137
|
+
for (const input of inputLocators) {
|
|
138
|
+
const id = await input.getAttribute('id');
|
|
139
|
+
const labelLocator = frameOrPage.locator(`label[for="${id}"]`);
|
|
140
|
+
const labelCount = await labelLocator.count();
|
|
141
|
+
if (labelCount > 0) {
|
|
142
|
+
const labelText = (await labelLocator.textContent()).trim();
|
|
143
|
+
if (labelText === svc.label) {
|
|
144
|
+
checkboxId = id;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (!checkboxId) {
|
|
150
|
+
throw new Error(`Authentication service "${svc.label}" not found`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
const authProviderId = authProviderIdMap.get(svc.authProviderApiName);
|
|
155
|
+
if (!authProviderId) {
|
|
156
|
+
throw new Error(`AuthProvider with DeveloperName '${svc.authProviderApiName}' not found. ` +
|
|
157
|
+
`Please verify the AuthProvider exists in your org.`);
|
|
158
|
+
}
|
|
159
|
+
for (const input of inputLocators) {
|
|
160
|
+
const id = await input.getAttribute('id');
|
|
161
|
+
const value = await input.getAttribute('value');
|
|
162
|
+
if (authProviderIdMatchesCheckboxValue(authProviderId, value)) {
|
|
103
163
|
checkboxId = id;
|
|
104
164
|
break;
|
|
105
165
|
}
|
|
106
166
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
167
|
+
if (!checkboxId) {
|
|
168
|
+
throw new Error(`Authentication service for AuthProvider '${svc.authProviderApiName}' not found. ` +
|
|
169
|
+
`It may not be available in the Authentication Service configuration.`);
|
|
170
|
+
}
|
|
110
171
|
}
|
|
111
172
|
const selector = `[id="${checkboxId}"]`;
|
|
112
173
|
const isChecked = await frameOrPage.locator(selector).isChecked();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/security/authentication-configuration/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/security/authentication-configuration/index.ts"],"names":[],"mappings":"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"}
|
package/lib/plugins/utils.d.ts
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
1
|
export declare function semanticallyCleanObject<T extends unknown>(obj: T, id?: string): T | undefined;
|
|
2
2
|
export declare function isEmptyObjectOrArray(arg: unknown): boolean;
|
|
3
3
|
export declare function deepDiff<T extends unknown>(source: T | undefined, target: T | undefined): T | undefined;
|
|
4
|
+
/**
|
|
5
|
+
* Masks sensitive values in an object for safe logging
|
|
6
|
+
* Fields matching patterns like "secret", "password", "key", "token", etc. will be masked
|
|
7
|
+
* Additionally, fields marked as type "password" in the schema will be masked
|
|
8
|
+
* @param value The value to mask (can be object, array, or primitive)
|
|
9
|
+
* @param keyPath The current key path (for nested objects)
|
|
10
|
+
* @param schema Optional JSON schema to check for password type fields
|
|
11
|
+
* @returns Masked value safe for logging
|
|
12
|
+
*/
|
|
13
|
+
export declare function maskSensitiveValues(value: unknown, keyPath?: string, schema?: unknown): unknown;
|
package/lib/plugins/utils.js
CHANGED
|
@@ -39,4 +39,121 @@ export function deepDiff(source, target) {
|
|
|
39
39
|
// simple value
|
|
40
40
|
return target;
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Extracts password field names from a JSON schema
|
|
44
|
+
* @param schema The JSON schema object
|
|
45
|
+
* @param prefix The current path prefix (for nested schemas)
|
|
46
|
+
* @returns Set of field paths that are marked as password type
|
|
47
|
+
*/
|
|
48
|
+
function extractPasswordFields(schema, prefix = '') {
|
|
49
|
+
const passwordFields = new Set();
|
|
50
|
+
if (typeof schema !== 'object' || schema === null) {
|
|
51
|
+
return passwordFields;
|
|
52
|
+
}
|
|
53
|
+
const schemaObj = schema;
|
|
54
|
+
// Check if this schema object is marked as password using x-password property
|
|
55
|
+
if (schemaObj['x-password'] === true) {
|
|
56
|
+
if (prefix) {
|
|
57
|
+
passwordFields.add(prefix);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Handle patternProperties (for dynamic keys like auth-providers)
|
|
61
|
+
if (schemaObj.patternProperties && typeof schemaObj.patternProperties === 'object') {
|
|
62
|
+
const patternProps = schemaObj.patternProperties;
|
|
63
|
+
for (const subSchema of Object.values(patternProps)) {
|
|
64
|
+
const subPasswordFields = extractPasswordFields(subSchema, prefix);
|
|
65
|
+
subPasswordFields.forEach((field) => passwordFields.add(field));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Handle properties (for fixed keys)
|
|
69
|
+
if (schemaObj.properties && typeof schemaObj.properties === 'object') {
|
|
70
|
+
const properties = schemaObj.properties;
|
|
71
|
+
for (const [key, propSchema] of Object.entries(properties)) {
|
|
72
|
+
const currentPath = prefix ? `${prefix}.${key}` : key;
|
|
73
|
+
const propPasswordFields = extractPasswordFields(propSchema, currentPath);
|
|
74
|
+
propPasswordFields.forEach((field) => passwordFields.add(field));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return passwordFields;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Checks if a field path matches any password field from the schema
|
|
81
|
+
* @param fieldPath The field path to check (e.g., "consumerSecret" or "test.consumerSecret")
|
|
82
|
+
* @param passwordFields Set of password field paths from schema
|
|
83
|
+
* @returns True if the field should be masked
|
|
84
|
+
*/
|
|
85
|
+
function isPasswordField(fieldPath, passwordFields) {
|
|
86
|
+
// Check exact match
|
|
87
|
+
if (passwordFields.has(fieldPath)) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
// Check if any password field is a suffix of the current path
|
|
91
|
+
// e.g., if schema has "consumerSecret" and path is "test.consumerSecret"
|
|
92
|
+
const passwordFieldsArray = Array.from(passwordFields);
|
|
93
|
+
for (const passwordField of passwordFieldsArray) {
|
|
94
|
+
if (fieldPath.endsWith(`.${passwordField}`) || fieldPath === passwordField) {
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Masks sensitive values in an object for safe logging
|
|
102
|
+
* Fields matching patterns like "secret", "password", "key", "token", etc. will be masked
|
|
103
|
+
* Additionally, fields marked as type "password" in the schema will be masked
|
|
104
|
+
* @param value The value to mask (can be object, array, or primitive)
|
|
105
|
+
* @param keyPath The current key path (for nested objects)
|
|
106
|
+
* @param schema Optional JSON schema to check for password type fields
|
|
107
|
+
* @returns Masked value safe for logging
|
|
108
|
+
*/
|
|
109
|
+
export function maskSensitiveValues(value, keyPath = '', schema) {
|
|
110
|
+
// Extract password fields from schema if provided
|
|
111
|
+
const passwordFields = schema ? extractPasswordFields(schema) : new Set();
|
|
112
|
+
// List of patterns that indicate sensitive fields (fallback for when schema is not available)
|
|
113
|
+
const sensitivePatterns = [
|
|
114
|
+
/secret/i,
|
|
115
|
+
/password/i,
|
|
116
|
+
/token/i,
|
|
117
|
+
/key/i,
|
|
118
|
+
/credential/i,
|
|
119
|
+
/auth/i,
|
|
120
|
+
/api[_-]?key/i,
|
|
121
|
+
/access[_-]?token/i,
|
|
122
|
+
];
|
|
123
|
+
const isSensitiveField = (key) => {
|
|
124
|
+
// First check schema-based password fields
|
|
125
|
+
if (passwordFields.size > 0 && isPasswordField(key, passwordFields)) {
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
// Fallback to pattern matching
|
|
129
|
+
return sensitivePatterns.some((pattern) => pattern.test(key));
|
|
130
|
+
};
|
|
131
|
+
if (value === null || value === undefined) {
|
|
132
|
+
return value;
|
|
133
|
+
}
|
|
134
|
+
// If it's a string and we're in a sensitive field context, mask it
|
|
135
|
+
if (typeof value === 'string' && keyPath && isSensitiveField(keyPath)) {
|
|
136
|
+
return '****';
|
|
137
|
+
}
|
|
138
|
+
// If it's an object, recursively mask nested values
|
|
139
|
+
if (typeof value === 'object') {
|
|
140
|
+
if (Array.isArray(value)) {
|
|
141
|
+
return value.map((item, index) => maskSensitiveValues(item, `${keyPath}[${index}]`, schema));
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
const masked = {};
|
|
145
|
+
for (const [key, val] of Object.entries(value)) {
|
|
146
|
+
const currentPath = keyPath ? `${keyPath}.${key}` : key;
|
|
147
|
+
if (isSensitiveField(key) && typeof val === 'string' && val.length > 0) {
|
|
148
|
+
masked[key] = '****';
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
masked[key] = maskSensitiveValues(val, currentPath, schema);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return masked;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return value;
|
|
158
|
+
}
|
|
42
159
|
//# 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,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAEzC,wDAAwD;AACxD,MAAM,UAAU,uBAAuB,CAAoB,GAAM,EAAE,EAAE,GAAG,IAAI;IAC1E,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,CAAoB,MAAqB,EAAE,MAAqB;IACtF,IAAI,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACnG,IAAI,aAA4B,CAAC;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,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;QAChB,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,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAChE,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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/plugins/utils.ts"],"names":[],"mappings":"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"}
|
package/oclif.manifest.json
CHANGED