@rockcarver/frodo-cli 0.10.4 → 0.11.1-2
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/CHANGELOG.md +13 -1
- package/README.md +3 -3
- package/package.json +17 -15
- package/src/app.js +7 -6
- package/src/cli/_template/cmd-delete.js +9 -8
- package/src/cli/_template/cmd-describe.js +9 -8
- package/src/cli/_template/cmd-export.js +9 -8
- package/src/cli/_template/cmd-import.js +9 -8
- package/src/cli/_template/cmd-list.js +9 -8
- package/src/cli/_template/cmd-sub1-delete.js +9 -8
- package/src/cli/_template/cmd-sub1-describe.js +9 -8
- package/src/cli/_template/cmd-sub1-export.js +9 -8
- package/src/cli/_template/cmd-sub1-import.js +9 -8
- package/src/cli/_template/cmd-sub1-list.js +9 -8
- package/src/cli/_template/cmd-sub2-delete.js +9 -8
- package/src/cli/_template/cmd-sub2-describe.js +9 -8
- package/src/cli/_template/cmd-sub2-export.js +9 -8
- package/src/cli/_template/cmd-sub2-import.js +9 -8
- package/src/cli/_template/cmd-sub2-list.js +9 -8
- package/src/cli/admin/admin-add-autoid-static-user-mapping.js +12 -12
- package/src/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +15 -18
- package/src/cli/admin/admin-get-access-token.js +12 -12
- package/src/cli/admin/admin-grant-oauth2-client-admin-privileges.js +13 -13
- package/src/cli/admin/admin-hide-generic-extension-attributes.js +13 -13
- package/src/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +13 -13
- package/src/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +14 -13
- package/src/cli/admin/admin-list-static-user-mappings.js +12 -12
- package/src/cli/admin/admin-remove-static-user-mapping.js +12 -12
- package/src/cli/admin/admin-repair-org-model.js +13 -13
- package/src/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +13 -13
- package/src/cli/admin/admin-show-generic-extension-attributes.js +13 -13
- package/src/cli/app/app-delete.js +9 -8
- package/src/cli/app/app-describe.js +9 -8
- package/src/cli/app/app-export.js +15 -15
- package/src/cli/app/app-import.js +11 -11
- package/src/cli/app/app-list.js +11 -12
- package/src/cli/conn/conn-add.js +11 -11
- package/src/cli/conn/conn-delete.js +3 -1
- package/src/cli/conn/conn-describe.js +3 -1
- package/src/cli/conn/conn-list.js +3 -4
- package/src/cli/email/email-template-export.js +16 -16
- package/src/cli/email/email-template-import.js +16 -16
- package/src/cli/email/email-template-list.js +11 -11
- package/src/cli/esv/esv-apply.js +12 -12
- package/src/cli/esv/esv-secret-create.js +11 -11
- package/src/cli/esv/esv-secret-delete.js +13 -13
- package/src/cli/esv/esv-secret-describe.js +11 -11
- package/src/cli/esv/esv-secret-export.js +9 -8
- package/src/cli/esv/esv-secret-import.js +9 -8
- package/src/cli/esv/esv-secret-list.js +11 -11
- package/src/cli/esv/esv-secret-set.js +11 -11
- package/src/cli/esv/esv-secret-version-activate.js +12 -12
- package/src/cli/esv/esv-secret-version-create.js +11 -11
- package/src/cli/esv/esv-secret-version-deactivate.js +12 -12
- package/src/cli/esv/esv-secret-version-delete.js +13 -13
- package/src/cli/esv/esv-secret-version-list.js +11 -11
- package/src/cli/esv/esv-variable-create.js +11 -11
- package/src/cli/esv/esv-variable-delete.js +13 -16
- package/src/cli/esv/esv-variable-describe.js +11 -11
- package/src/cli/esv/esv-variable-export.js +9 -8
- package/src/cli/esv/esv-variable-import.js +9 -8
- package/src/cli/esv/esv-variable-list.js +11 -11
- package/src/cli/esv/esv-variable-set.js +13 -16
- package/src/cli/idm/idm-count.js +11 -11
- package/src/cli/idm/idm-export.js +16 -16
- package/src/cli/idm/idm-list.js +11 -11
- package/src/cli/idp/idp-export.js +15 -19
- package/src/cli/idp/idp-import.js +18 -18
- package/src/cli/idp/idp-list.js +12 -12
- package/src/cli/info/info.js +23 -19
- package/src/cli/journey/journey-delete.js +14 -14
- package/src/cli/journey/journey-describe.js +26 -35
- package/src/cli/journey/journey-export.js +18 -21
- package/src/cli/journey/journey-import.js +17 -17
- package/src/cli/journey/journey-list.js +12 -12
- package/src/cli/journey/journey-prune.js +12 -12
- package/src/cli/logging/logs-list.js +33 -28
- package/src/cli/logging/logs-tail.js +26 -22
- package/src/cli/realm/realm-add-custom-domain.js +13 -13
- package/src/cli/realm/realm-describe.js +14 -14
- package/src/cli/realm/realm-list.js +11 -11
- package/src/cli/realm/realm-remove-custom-domain.js +16 -13
- package/src/cli/saml/saml-cot-export.js +16 -16
- package/src/cli/saml/saml-cot-import.js +18 -18
- package/src/cli/saml/saml-cot-list.js +12 -12
- package/src/cli/saml/saml-describe.js +12 -12
- package/src/cli/saml/saml-export.js +16 -19
- package/src/cli/saml/saml-import.js +19 -18
- package/src/cli/saml/saml-list.js +12 -12
- package/src/cli/saml/saml-metadata-export.js +15 -19
- package/src/cli/script/script-delete.js +9 -8
- package/src/cli/script/script-describe.js +9 -8
- package/src/cli/script/script-export.js +18 -20
- package/src/cli/script/script-import.js +13 -12
- package/src/cli/script/script-list.js +12 -12
- package/src/cli/theme/theme-delete.js +17 -21
- package/src/cli/theme/theme-export.js +19 -18
- package/src/cli/theme/theme-import.js +21 -20
- package/src/cli/theme/theme-list.js +12 -12
- package/.eslintrc +0 -29
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -30
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/.github/README.md +0 -273
- package/.github/workflows/pipeline.yml +0 -487
- package/.prettierrc +0 -6
- package/CODE_OF_CONDUCT.md +0 -128
- package/docs/BINARIES.md +0 -22
- package/docs/CONTRIBUTE.md +0 -96
- package/docs/PIPELINE.md +0 -169
- package/docs/images/macos_warn1.png +0 -0
- package/docs/images/macos_warn2.png +0 -0
- package/docs/images/macos_warn3.png +0 -0
- package/docs/images/npm_versioning_guidelines.png +0 -0
- package/docs/images/release_pipeline.png +0 -0
- package/gulpfile.js +0 -49
- package/jsconfig.json +0 -6
- package/resources/sampleEntitiesFile.json +0 -8
- package/resources/sampleEnvFile.env +0 -2
- package/src/api/AuthenticateApi.js +0 -33
- package/src/api/BaseApi.js +0 -242
- package/src/api/CirclesOfTrustApi.js +0 -87
- package/src/api/EmailTemplateApi.js +0 -37
- package/src/api/IdmConfigApi.js +0 -88
- package/src/api/LogApi.js +0 -45
- package/src/api/ManagedObjectApi.js +0 -62
- package/src/api/OAuth2ClientApi.js +0 -69
- package/src/api/OAuth2OIDCApi.js +0 -73
- package/src/api/OAuth2ProviderApi.js +0 -32
- package/src/api/RealmApi.js +0 -99
- package/src/api/Saml2Api.js +0 -176
- package/src/api/ScriptApi.js +0 -84
- package/src/api/SecretsApi.js +0 -151
- package/src/api/ServerInfoApi.js +0 -41
- package/src/api/SocialIdentityProvidersApi.js +0 -114
- package/src/api/StartupApi.js +0 -45
- package/src/api/ThemeApi.js +0 -181
- package/src/api/TreeApi.js +0 -207
- package/src/api/VariablesApi.js +0 -104
- package/src/api/utils/ApiUtils.js +0 -77
- package/src/api/utils/Base64.js +0 -62
- package/src/cli/journey/journey-delete.e2e.test.js +0 -380
- package/src/cli/journey/journey-list.e2e.test.js +0 -141
- package/src/cli/theme/theme-delete.e2e.test.js +0 -178
- package/src/cli/theme/theme-list.e2e.test.js +0 -119
- package/src/ops/AdminOps.js +0 -901
- package/src/ops/AuthenticateOps.js +0 -342
- package/src/ops/CirclesOfTrustOps.js +0 -350
- package/src/ops/ConnectionProfileOps.js +0 -254
- package/src/ops/EmailTemplateOps.js +0 -326
- package/src/ops/IdmOps.js +0 -227
- package/src/ops/IdpOps.js +0 -342
- package/src/ops/JourneyOps.js +0 -2026
- package/src/ops/LogOps.js +0 -357
- package/src/ops/ManagedObjectOps.js +0 -34
- package/src/ops/OAuth2ClientOps.js +0 -151
- package/src/ops/OrganizationOps.js +0 -85
- package/src/ops/RealmOps.js +0 -139
- package/src/ops/SamlOps.js +0 -541
- package/src/ops/ScriptOps.js +0 -211
- package/src/ops/SecretsOps.js +0 -288
- package/src/ops/StartupOps.js +0 -114
- package/src/ops/ThemeOps.js +0 -379
- package/src/ops/VariablesOps.js +0 -185
- package/src/ops/templates/OAuth2ClientTemplate.json +0 -270
- package/src/ops/templates/OrgModelUserAttributesTemplate.json +0 -149
- package/src/ops/templates/cloud/GenericExtensionAttributesTemplate.json +0 -392
- package/src/ops/templates/cloud/managed.json +0 -4119
- package/src/ops/utils/Console.js +0 -434
- package/src/ops/utils/DataProtection.js +0 -92
- package/src/ops/utils/ExportImportUtils.js +0 -146
- package/src/ops/utils/OpsUtils.js +0 -76
- package/src/ops/utils/Wordwrap.js +0 -11
- package/src/storage/SessionStorage.js +0 -45
- package/test/client_cli/en/connections.test.js +0 -62
- package/test/client_cli/en/connections_add.test.js +0 -34
- package/test/client_cli/en/connections_delete.test.js +0 -34
- package/test/client_cli/en/connections_list.test.js +0 -34
- package/test/client_cli/en/email_templates.test.js +0 -77
- package/test/client_cli/en/email_templates_export.test.js +0 -196
- package/test/client_cli/en/email_templates_import.test.js +0 -145
- package/test/client_cli/en/email_templates_list.test.js +0 -130
- package/test/client_cli/en/idm.test.js +0 -111
- package/test/client_cli/en/idm_count.test.js +0 -121
- package/test/client_cli/en/idm_export.test.js +0 -136
- package/test/client_cli/en/idm_exportAll.test.js +0 -156
- package/test/client_cli/en/idm_exportAllRaw.test.js +0 -120
- package/test/client_cli/en/idm_import.test_.js +0 -103
- package/test/client_cli/en/idm_importAll.test_.js +0 -103
- package/test/client_cli/en/idm_list.test.js +0 -103
- package/test/client_cli/en/info.test.js +0 -125
- package/test/client_cli/en/journey.test.js +0 -127
- package/test/client_cli/en/journey_describe.test.js +0 -196
- package/test/client_cli/en/journey_export.test.js +0 -213
- package/test/client_cli/en/journey_import.test.js +0 -195
- package/test/client_cli/en/journey_importAll.test.js +0 -180
- package/test/client_cli/en/journey_list.test.js +0 -162
- package/test/client_cli/en/journey_prune.test.js +0 -148
- package/test/client_cli/en/logs.test.js +0 -79
- package/test/client_cli/en/logs_list.test.js +0 -83
- package/test/client_cli/en/logs_tail.test.js +0 -118
- package/test/client_cli/en/root.test.js +0 -91
- package/test/client_cli/en/script.test.js +0 -77
- package/test/client_cli/en/script_export.test.js +0 -213
- package/test/client_cli/en/script_import.test.js +0 -163
- package/test/client_cli/en/script_list.test.js +0 -148
- package/test/client_cli/utils/utils.js +0 -32
- package/test/e2e/journey/baseline/ForgottenUsername.journey.json +0 -216
- package/test/e2e/journey/baseline/Login.journey.json +0 -205
- package/test/e2e/journey/baseline/PasswordGrant.journey.json +0 -139
- package/test/e2e/journey/baseline/ProgressiveProfile.journey.json +0 -198
- package/test/e2e/journey/baseline/Registration.journey.json +0 -249
- package/test/e2e/journey/baseline/ResetPassword.journey.json +0 -268
- package/test/e2e/journey/baseline/UpdatePassword.journey.json +0 -323
- package/test/e2e/journey/baseline/allAlphaJourneys.journeys.json +0 -1520
- package/test/e2e/journey/delete/ForgottenUsername.journey.json +0 -216
- package/test/e2e/journey/delete/Login.journey.json +0 -205
- package/test/e2e/journey/delete/PasswordGrant.journey.json +0 -139
- package/test/e2e/journey/delete/ProgressiveProfile.journey.json +0 -198
- package/test/e2e/journey/delete/Registration.journey.json +0 -249
- package/test/e2e/journey/delete/ResetPassword.journey.json +0 -268
- package/test/e2e/journey/delete/UpdatePassword.journey.json +0 -323
- package/test/e2e/journey/delete/deleteMe.journey.json +0 -230
- package/test/e2e/journey/list/Disabled.journey.json +0 -43
- package/test/e2e/journey/list/ForgottenUsername.journey.json +0 -216
- package/test/e2e/journey/list/Login.journey.json +0 -205
- package/test/e2e/journey/list/PasswordGrant.journey.json +0 -139
- package/test/e2e/journey/list/ProgressiveProfile.journey.json +0 -198
- package/test/e2e/journey/list/Registration.journey.json +0 -249
- package/test/e2e/journey/list/ResetPassword.journey.json +0 -268
- package/test/e2e/journey/list/UpdatePassword.journey.json +0 -323
- package/test/e2e/setup.js +0 -98
- package/test/e2e/theme/baseline/Contrast.theme.json +0 -95
- package/test/e2e/theme/baseline/Highlander.theme.json +0 -95
- package/test/e2e/theme/baseline/Robroy.theme.json +0 -95
- package/test/e2e/theme/baseline/Starter-Theme.theme.json +0 -94
- package/test/e2e/theme/baseline/Zardoz.theme.json +0 -95
- package/test/e2e/theme/import/Contrast.theme.json +0 -95
- package/test/e2e/theme/import/Highlander.theme.json +0 -95
- package/test/e2e/theme/import/Robroy.theme.json +0 -95
- package/test/e2e/theme/import/Starter-Theme.theme.json +0 -94
- package/test/e2e/theme/import/Zardoz.default.theme.json +0 -95
- package/test/fs_tmp/.gitkeep +0 -2
- package/test/global/setup.js +0 -65
- package/test/lib_api/unit_tests/ApiUtils.test.js +0 -186
- package/test/lib_api/unit_tests/Base64URL.test.js +0 -22
- package/test/lib_api/unit_tests/DataProtection.test.js +0 -25
- package/test/lib_api/unit_tests/ExportImportUtils.test.js +0 -121
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import cp from 'child_process';
|
|
2
|
-
import { promisify } from 'util';
|
|
3
|
-
import { crudeMultilineTakeUntil, collapseWhitespace } from '../utils/utils';
|
|
4
|
-
|
|
5
|
-
const exec = promisify(cp.exec);
|
|
6
|
-
const CMD = 'frodo logs --help';
|
|
7
|
-
const { stdout } = await exec(CMD);
|
|
8
|
-
|
|
9
|
-
test("CLI help interface for 'logs' Usage should be expected english", async () => {
|
|
10
|
-
// Arrange
|
|
11
|
-
const expected = `
|
|
12
|
-
Usage: frodo logs [options] [command] <host>
|
|
13
|
-
`.trim();
|
|
14
|
-
// Act
|
|
15
|
-
const testLine = stdout
|
|
16
|
-
.split(/\n/)
|
|
17
|
-
.find(line => line.trim().startsWith('Usage:'))
|
|
18
|
-
.trim();
|
|
19
|
-
// Assert
|
|
20
|
-
expect(testLine).toBe(expected);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
test("CLI help interface 'logs' description at line 2 should be expected english", async () => {
|
|
25
|
-
// Arrange
|
|
26
|
-
const expected = `
|
|
27
|
-
View Identity Cloud logs.
|
|
28
|
-
`.trim();
|
|
29
|
-
// Act
|
|
30
|
-
const testLine = stdout
|
|
31
|
-
.split(/\n/)
|
|
32
|
-
.map(line => line.trim())
|
|
33
|
-
.at(2)
|
|
34
|
-
// Assert
|
|
35
|
-
expect(testLine).toBe(expected);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
test("CLI help interface 'logs argument host' description should be expected english", async () => {
|
|
39
|
-
// Arrange
|
|
40
|
-
const expected = collapseWhitespace(`
|
|
41
|
-
host Access Management base URL, e.g.: https://cdk.iam.example.com/am. To use a connection profile, just specify a unique substring.
|
|
42
|
-
`).trim();
|
|
43
|
-
// Act
|
|
44
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
45
|
-
stdout,
|
|
46
|
-
' host ',
|
|
47
|
-
'Options:'
|
|
48
|
-
));
|
|
49
|
-
// Assert
|
|
50
|
-
expect(collapseWhitespace(testLine)).toBe(expected);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
test("CLI help interface 'logs commands list' description should be expected english", async () => {
|
|
54
|
-
// Arrange
|
|
55
|
-
const expected = `
|
|
56
|
-
list [options] <host> [key] [secret] List available ID Cloud log sources.
|
|
57
|
-
`.trim();
|
|
58
|
-
// Act
|
|
59
|
-
const testLine = stdout
|
|
60
|
-
.split(/\n/)
|
|
61
|
-
.find(line => line.trim().startsWith('list'))
|
|
62
|
-
.trim();
|
|
63
|
-
// Assert
|
|
64
|
-
expect(testLine).toBe(expected);
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
test("CLI help interface 'logs commands tail' description should be expected english", async () => {
|
|
68
|
-
// Arrange
|
|
69
|
-
const expected = `
|
|
70
|
-
tail [options] <host> [key] [secret] Tail Identity Cloud logs.
|
|
71
|
-
`.trim();
|
|
72
|
-
// Act
|
|
73
|
-
const testLine = stdout
|
|
74
|
-
.split(/\n/)
|
|
75
|
-
.find(line => line.trim().startsWith('tail'))
|
|
76
|
-
.trim();
|
|
77
|
-
// Assert
|
|
78
|
-
expect(testLine).toBe(expected);
|
|
79
|
-
});
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import cp from 'child_process';
|
|
2
|
-
import { promisify } from 'util';
|
|
3
|
-
import { crudeMultilineTakeUntil, collapseWhitespace } from '../utils/utils';
|
|
4
|
-
|
|
5
|
-
const exec = promisify(cp.exec);
|
|
6
|
-
const CMD = 'frodo logs list --help';
|
|
7
|
-
const { stdout } = await exec(CMD);
|
|
8
|
-
|
|
9
|
-
test("CLI help interface for 'logs list' Usage should be expected english", async () => {
|
|
10
|
-
// Arrange
|
|
11
|
-
const expected = `
|
|
12
|
-
Usage: frodo logs list [options] <host> [key] [secret]
|
|
13
|
-
`.trim();
|
|
14
|
-
// Act
|
|
15
|
-
const testLine = stdout
|
|
16
|
-
.split(/\n/)
|
|
17
|
-
.find(line => line.trim().startsWith('Usage:'))
|
|
18
|
-
.trim();
|
|
19
|
-
// Assert
|
|
20
|
-
expect(testLine).toBe(expected);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
test("CLI help interface 'logs list' description at line 2 should be expected english", async () => {
|
|
25
|
-
// Arrange
|
|
26
|
-
const expected = `
|
|
27
|
-
List available ID Cloud log sources.
|
|
28
|
-
`.trim();
|
|
29
|
-
// Act
|
|
30
|
-
const testLine = stdout
|
|
31
|
-
.split(/\n/)
|
|
32
|
-
.map(line => line.trim())
|
|
33
|
-
.at(2)
|
|
34
|
-
// Assert
|
|
35
|
-
expect(testLine).toBe(expected);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
test("CLI help interface 'list argument host' description should be expected english", async () => {
|
|
39
|
-
// Arrange
|
|
40
|
-
const expected = collapseWhitespace(`
|
|
41
|
-
host Access Management base URL, e.g.: https://cdk.iam.example.com/am. To use a connection profile, just specify a unique substring.
|
|
42
|
-
`).trim();
|
|
43
|
-
// Act
|
|
44
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
45
|
-
stdout,
|
|
46
|
-
' host ',
|
|
47
|
-
' key '
|
|
48
|
-
));
|
|
49
|
-
// Assert
|
|
50
|
-
expect(collapseWhitespace(testLine)).toBe(expected);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
test("CLI help interface 'list argument key' description should be expected english", async () => {
|
|
55
|
-
// Arrange
|
|
56
|
-
const expected = collapseWhitespace(`
|
|
57
|
-
key API key for logging API.
|
|
58
|
-
`).trim();
|
|
59
|
-
// Act
|
|
60
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
61
|
-
stdout,
|
|
62
|
-
' key ',
|
|
63
|
-
' secret '
|
|
64
|
-
));
|
|
65
|
-
// Assert
|
|
66
|
-
expect(collapseWhitespace(testLine)).toBe(expected);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
test("CLI help interface 'tail argument secret' description should be expected english", async () => {
|
|
71
|
-
// Arrange
|
|
72
|
-
const expected = collapseWhitespace(`
|
|
73
|
-
secret API secret for logging API.
|
|
74
|
-
`).trim();
|
|
75
|
-
// Act
|
|
76
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
77
|
-
stdout,
|
|
78
|
-
' secret ',
|
|
79
|
-
'Options:'
|
|
80
|
-
));
|
|
81
|
-
// Assert
|
|
82
|
-
expect(collapseWhitespace(testLine)).toBe(expected);
|
|
83
|
-
});
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import cp from 'child_process';
|
|
2
|
-
import { promisify } from 'util';
|
|
3
|
-
import { crudeMultilineTakeUntil, collapseWhitespace } from '../utils/utils';
|
|
4
|
-
|
|
5
|
-
const exec = promisify(cp.exec);
|
|
6
|
-
const CMD = 'frodo logs tail --help';
|
|
7
|
-
const { stdout } = await exec(CMD);
|
|
8
|
-
|
|
9
|
-
test("CLI help interface for 'logs tail' Usage should be expected english", async () => {
|
|
10
|
-
// Arrange
|
|
11
|
-
const expected = `
|
|
12
|
-
Usage: frodo logs tail [options] <host> [key] [secret]
|
|
13
|
-
`.trim();
|
|
14
|
-
// Act
|
|
15
|
-
const testLine = stdout
|
|
16
|
-
.split(/\n/)
|
|
17
|
-
.find(line => line.trim().startsWith('Usage:'))
|
|
18
|
-
.trim();
|
|
19
|
-
// Assert
|
|
20
|
-
expect(testLine).toBe(expected);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
test("CLI help interface 'logs tail' description at line 2 should be expected english", async () => {
|
|
25
|
-
// Arrange
|
|
26
|
-
const expected = `
|
|
27
|
-
Tail Identity Cloud logs.
|
|
28
|
-
`.trim();
|
|
29
|
-
// Act
|
|
30
|
-
const testLine = stdout
|
|
31
|
-
.split(/\n/)
|
|
32
|
-
.map(line => line.trim())
|
|
33
|
-
.at(2)
|
|
34
|
-
// Assert
|
|
35
|
-
expect(testLine).toBe(expected);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
test("CLI help interface 'tail argument host' description should be expected english", async () => {
|
|
39
|
-
// Arrange
|
|
40
|
-
const expected = collapseWhitespace(`
|
|
41
|
-
host Access Management base URL, e.g.:
|
|
42
|
-
https://cdk.iam.example.com/am. To use a connection profile,
|
|
43
|
-
just specify a unique substring.
|
|
44
|
-
`).trim();
|
|
45
|
-
// Act
|
|
46
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
47
|
-
stdout,
|
|
48
|
-
' host ',
|
|
49
|
-
' key '
|
|
50
|
-
));
|
|
51
|
-
// Assert
|
|
52
|
-
expect(collapseWhitespace(testLine)).toBe(expected);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
test("CLI help interface 'tail argument key' description should be expected english", async () => {
|
|
56
|
-
// Arrange
|
|
57
|
-
const expected = collapseWhitespace(`
|
|
58
|
-
key API key for logging API.
|
|
59
|
-
`).trim();
|
|
60
|
-
// Act
|
|
61
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
62
|
-
stdout,
|
|
63
|
-
' key ',
|
|
64
|
-
' secret '
|
|
65
|
-
));
|
|
66
|
-
// Assert
|
|
67
|
-
expect(collapseWhitespace(testLine)).toBe(expected);
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
test("CLI help interface 'tail argument secret' description should be expected english", async () => {
|
|
71
|
-
// Arrange
|
|
72
|
-
const expected = collapseWhitespace(`
|
|
73
|
-
secret API secret for logging API.
|
|
74
|
-
`).trim();
|
|
75
|
-
// Act
|
|
76
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
77
|
-
stdout,
|
|
78
|
-
' secret ',
|
|
79
|
-
'Options:'
|
|
80
|
-
));
|
|
81
|
-
// Assert
|
|
82
|
-
expect(collapseWhitespace(testLine)).toBe(expected);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
test("CLI help interface 'list option -k, --insecure' description should be expected english multiline", async () => {
|
|
86
|
-
// Arrange
|
|
87
|
-
const expected = collapseWhitespace(`
|
|
88
|
-
-k, --insecure Allow insecure connections when using SSL/TLS
|
|
89
|
-
(default: Don't allow insecure connections)
|
|
90
|
-
`);
|
|
91
|
-
// Act
|
|
92
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
93
|
-
stdout,
|
|
94
|
-
' -k, --insecure ',
|
|
95
|
-
' -c, --sources <sources> ',
|
|
96
|
-
));
|
|
97
|
-
|
|
98
|
-
// Assert
|
|
99
|
-
expect(testLine).toBe(expected);
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
test("CLI help interface 'list option -c, --sources <sources>' description should be expected english multiline", async () => {
|
|
104
|
-
// Arrange
|
|
105
|
-
const expected = collapseWhitespace(`
|
|
106
|
-
-c, --sources <sources> Comma separated list of log sources (default: Log
|
|
107
|
-
everything)
|
|
108
|
-
`);
|
|
109
|
-
// Act
|
|
110
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
111
|
-
stdout,
|
|
112
|
-
' -c, --sources <sources>',
|
|
113
|
-
' -h, --help ',
|
|
114
|
-
));
|
|
115
|
-
|
|
116
|
-
// Assert
|
|
117
|
-
expect(testLine).toBe(expected);
|
|
118
|
-
});
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import cp from 'child_process';
|
|
2
|
-
import { promisify } from 'util';
|
|
3
|
-
|
|
4
|
-
const exec = promisify(cp.exec);
|
|
5
|
-
const CMD = 'frodo --help';
|
|
6
|
-
const { stdout } = await exec(CMD);
|
|
7
|
-
|
|
8
|
-
test("CLI help interface 'connections' description should be expected english", async () => {
|
|
9
|
-
// Arrange
|
|
10
|
-
const expectedDescription = `
|
|
11
|
-
connections Manage connection profiles.
|
|
12
|
-
`.trim();
|
|
13
|
-
// Act
|
|
14
|
-
const testLine = stdout
|
|
15
|
-
.split(/\n/)
|
|
16
|
-
.find(line => line.trim().startsWith('connections'))
|
|
17
|
-
.trim();
|
|
18
|
-
// Assert
|
|
19
|
-
expect(testLine).toBe(expectedDescription);
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
test("CLI help interface 'info' description should be expected english", async () => {
|
|
23
|
-
// Arrange
|
|
24
|
-
const expectedDescription = `
|
|
25
|
-
info [options] <host> [user] [password] Print versions and tokens.
|
|
26
|
-
`.trim();
|
|
27
|
-
// Act
|
|
28
|
-
const testLine = stdout
|
|
29
|
-
.split(/\n/)
|
|
30
|
-
.find(line => line.trim().startsWith('info'))
|
|
31
|
-
.trim();
|
|
32
|
-
// Assert
|
|
33
|
-
expect(testLine).toBe(expectedDescription);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
test("CLI help interface 'journey' description should be expected english", async () => {
|
|
37
|
-
// Arrange
|
|
38
|
-
const expectedDescription = `
|
|
39
|
-
journey Manage journeys/trees.
|
|
40
|
-
`.trim();
|
|
41
|
-
// Act
|
|
42
|
-
const testLine = stdout
|
|
43
|
-
.split(/\n/)
|
|
44
|
-
.find(line => line.trim().startsWith('journey'))
|
|
45
|
-
.trim();
|
|
46
|
-
// Assert
|
|
47
|
-
expect(testLine).toBe(expectedDescription);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
test("CLI help interface 'script' description should be expected english", async () => {
|
|
51
|
-
// Arrange
|
|
52
|
-
const expectedDescription = `
|
|
53
|
-
script Manage scripts.
|
|
54
|
-
`.trim();
|
|
55
|
-
// Act
|
|
56
|
-
const testLine = stdout
|
|
57
|
-
.split(/\n/)
|
|
58
|
-
.find(line => line.trim().startsWith('script'))
|
|
59
|
-
.trim();
|
|
60
|
-
// Assert
|
|
61
|
-
expect(testLine).toBe(expectedDescription);
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
test("CLI help interface 'idm' description should be expected english", async () => {
|
|
65
|
-
// Arrange
|
|
66
|
-
const expectedDescription = `
|
|
67
|
-
idm Manage IDM configuration.
|
|
68
|
-
`.trim();
|
|
69
|
-
// Act
|
|
70
|
-
const testLine = stdout
|
|
71
|
-
.split(/\n/)
|
|
72
|
-
.find(line => line.trim().startsWith('idm'))
|
|
73
|
-
.trim();
|
|
74
|
-
// Assert
|
|
75
|
-
expect(testLine).toBe(expectedDescription);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
test("CLI help interface 'logs' description should be expected english", async () => {
|
|
80
|
-
// Arrange
|
|
81
|
-
const expectedDescription = `
|
|
82
|
-
logs <host> View Identity Cloud logs.
|
|
83
|
-
`.trim();
|
|
84
|
-
// Act
|
|
85
|
-
const testLine = stdout
|
|
86
|
-
.split(/\n/)
|
|
87
|
-
.find(line => line.trim().startsWith('logs'))
|
|
88
|
-
.trim();
|
|
89
|
-
// Assert
|
|
90
|
-
expect(testLine).toBe(expectedDescription);
|
|
91
|
-
});
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import cp from 'child_process';
|
|
2
|
-
import { promisify } from 'util';
|
|
3
|
-
|
|
4
|
-
const exec = promisify(cp.exec);
|
|
5
|
-
const CMD = 'frodo script --help';
|
|
6
|
-
const { stdout } = await exec(CMD);
|
|
7
|
-
|
|
8
|
-
test("CLI help interface for 'script' Usage should be expected english", async () => {
|
|
9
|
-
// Arrange
|
|
10
|
-
const expected = `
|
|
11
|
-
Usage: frodo script [options] [command]
|
|
12
|
-
`.trim();
|
|
13
|
-
// Act
|
|
14
|
-
const testLine = stdout
|
|
15
|
-
.split(/\n/)
|
|
16
|
-
.find(line => line.trim().startsWith('Usage:'))
|
|
17
|
-
.trim();
|
|
18
|
-
// Assert
|
|
19
|
-
expect(testLine).toBe(expected);
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
test("CLI help interface 'script' description at line 2 should be expected english", async () => {
|
|
24
|
-
// Arrange
|
|
25
|
-
const expected = `
|
|
26
|
-
Manage scripts.
|
|
27
|
-
`.trim();
|
|
28
|
-
// Act
|
|
29
|
-
const testLine = stdout
|
|
30
|
-
.split(/\n/)
|
|
31
|
-
.map(line => line.trim())
|
|
32
|
-
.at(2)
|
|
33
|
-
// Assert
|
|
34
|
-
expect(testLine).toBe(expected);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
test("CLI help interface 'script commands list' description should be expected english", async () => {
|
|
38
|
-
// Arrange
|
|
39
|
-
const expected = `
|
|
40
|
-
list [options] <host> [realm] [user] [password] List all the scripts in a realm.
|
|
41
|
-
`.trim();
|
|
42
|
-
// Act
|
|
43
|
-
const testLine = stdout
|
|
44
|
-
.split(/\n/)
|
|
45
|
-
.find(line => line.trim().startsWith('list'))
|
|
46
|
-
.trim();
|
|
47
|
-
// Assert
|
|
48
|
-
expect(testLine).toBe(expected);
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
test("CLI help interface 'script commands export' description should be expected english", async () => {
|
|
52
|
-
// Arrange
|
|
53
|
-
const expected = `
|
|
54
|
-
export [options] <host> [realm] [user] [password] Export scripts.
|
|
55
|
-
`.trim();
|
|
56
|
-
// Act
|
|
57
|
-
const testLine = stdout
|
|
58
|
-
.split(/\n/)
|
|
59
|
-
.find(line => line.trim().startsWith('export'))
|
|
60
|
-
.trim();
|
|
61
|
-
// Assert
|
|
62
|
-
expect(testLine).toBe(expected);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
test("CLI help interface 'script commands import' description should be expected english", async () => {
|
|
66
|
-
// Arrange
|
|
67
|
-
const expected = `
|
|
68
|
-
import [options] <host> [realm] [user] [password] Import script.
|
|
69
|
-
`.trim();
|
|
70
|
-
// Act
|
|
71
|
-
const testLine = stdout
|
|
72
|
-
.split(/\n/)
|
|
73
|
-
.find(line => line.trim().startsWith('import'))
|
|
74
|
-
.trim();
|
|
75
|
-
// Assert
|
|
76
|
-
expect(testLine).toBe(expected);
|
|
77
|
-
});
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
import cp from 'child_process';
|
|
2
|
-
import { promisify } from 'util';
|
|
3
|
-
import { crudeMultilineTakeUntil, collapseWhitespace } from '../utils/utils';
|
|
4
|
-
|
|
5
|
-
const exec = promisify(cp.exec);
|
|
6
|
-
const CMD = 'frodo script export --help';
|
|
7
|
-
const { stdout } = await exec(CMD);
|
|
8
|
-
|
|
9
|
-
test("CLI help interface for 'script export' Usage should be expected english", async () => {
|
|
10
|
-
// Arrange
|
|
11
|
-
const expected = `
|
|
12
|
-
Usage: frodo script export [options] <host> [realm] [user] [password]
|
|
13
|
-
`.trim();
|
|
14
|
-
// Act
|
|
15
|
-
const testLine = stdout
|
|
16
|
-
.split(/\n/)
|
|
17
|
-
.find(line => line.trim().startsWith('Usage:'))
|
|
18
|
-
.trim();
|
|
19
|
-
// Assert
|
|
20
|
-
expect(testLine).toBe(expected);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
test("CLI help interface 'script export' description at line 2 should be expected english", async () => {
|
|
24
|
-
// Arrange
|
|
25
|
-
const expected = `
|
|
26
|
-
Export scripts.
|
|
27
|
-
`.trim();
|
|
28
|
-
// Act
|
|
29
|
-
const testLine = stdout
|
|
30
|
-
.split(/\n/)
|
|
31
|
-
.map(line => line.trim())
|
|
32
|
-
.at(2)
|
|
33
|
-
// Assert
|
|
34
|
-
expect(testLine).toBe(expected);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
test("CLI help interface 'export argument host' description should be expected english multiline", async () => {
|
|
39
|
-
// Arrange
|
|
40
|
-
const expected = collapseWhitespace(`
|
|
41
|
-
host Access Management base URL, e.g.:
|
|
42
|
-
https://cdk.iam.example.com/am. To use a connection
|
|
43
|
-
profile, just specify a unique substring.
|
|
44
|
-
`);
|
|
45
|
-
// Act
|
|
46
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
47
|
-
stdout,
|
|
48
|
-
' host ',
|
|
49
|
-
' realm '
|
|
50
|
-
));
|
|
51
|
-
|
|
52
|
-
// Assert
|
|
53
|
-
expect(testLine).toBe(expected);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
test("CLI help interface 'export argument realm' description should be expected english multiline", async () => {
|
|
58
|
-
// Arrange
|
|
59
|
-
const expected = collapseWhitespace(`
|
|
60
|
-
realm Realm. Specify realm as '/' for the root realm or 'realm'
|
|
61
|
-
or '/parent/child' otherwise. (default: "__default__realm__")
|
|
62
|
-
`);
|
|
63
|
-
// Act
|
|
64
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
65
|
-
stdout,
|
|
66
|
-
' realm ',
|
|
67
|
-
' user '
|
|
68
|
-
));
|
|
69
|
-
|
|
70
|
-
// Assert
|
|
71
|
-
expect(testLine).toBe(expected);
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
test("CLI help interface 'export argument user' description should be expected english multiline", async () => {
|
|
75
|
-
// Arrange
|
|
76
|
-
const expected = collapseWhitespace(`
|
|
77
|
-
user Username to login with. Must be an admin user with appropriate
|
|
78
|
-
rights to manage authentication journeys/trees.
|
|
79
|
-
`);
|
|
80
|
-
// Act
|
|
81
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
82
|
-
stdout,
|
|
83
|
-
' user ',
|
|
84
|
-
' password '
|
|
85
|
-
));
|
|
86
|
-
|
|
87
|
-
// Assert
|
|
88
|
-
expect(testLine).toBe(expected);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
test("CLI help interface 'export argument password' description should be expected english", async () => {
|
|
92
|
-
// Arrange
|
|
93
|
-
const expectedDescription = `
|
|
94
|
-
password Password.
|
|
95
|
-
`.trim();
|
|
96
|
-
// Act
|
|
97
|
-
const testLine = stdout
|
|
98
|
-
.split(/\n/)
|
|
99
|
-
.find(line => line.trim().startsWith('password'))
|
|
100
|
-
.trim();
|
|
101
|
-
// Assert
|
|
102
|
-
expect(testLine).toBe(expectedDescription);
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
test("CLI help interface 'export option -m, --type <type>' description should be expected english multiline", async () => {
|
|
106
|
-
// Arrange
|
|
107
|
-
const expected = collapseWhitespace(`
|
|
108
|
-
-m, --type <type> Override auto-detected deployment type. Valid values for
|
|
109
|
-
type:
|
|
110
|
-
classic: A classic Access Management-only deployment
|
|
111
|
-
with custom layout and configuration.
|
|
112
|
-
cloud: A ForgeRock Identity Cloud environment.
|
|
113
|
-
forgeops: A ForgeOps CDK or CDM deployment.
|
|
114
|
-
The detected or provided deployment type controls certain
|
|
115
|
-
behavior like obtaining an Identity Management admin
|
|
116
|
-
token or not and whether to export/import referenced
|
|
117
|
-
email templates or how to walk through the tenant admin
|
|
118
|
-
login flow of Identity Cloud and handle MFA (choices:
|
|
119
|
-
"classic", "cloud", "forgeops")
|
|
120
|
-
`);
|
|
121
|
-
// Act
|
|
122
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
123
|
-
stdout,
|
|
124
|
-
' -m, --type <type> ',
|
|
125
|
-
' -k, --insecure '
|
|
126
|
-
));
|
|
127
|
-
|
|
128
|
-
// Assert
|
|
129
|
-
expect(testLine).toBe(expected);
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
test("CLI help interface 'export option -k, --insecure' description should be expected english multiline", async () => {
|
|
134
|
-
// Arrange
|
|
135
|
-
const expected = collapseWhitespace(`
|
|
136
|
-
-k, --insecure Allow insecure connections when using SSL/TLS (default: Don't
|
|
137
|
-
allow insecure connections)
|
|
138
|
-
`);
|
|
139
|
-
// Act
|
|
140
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
141
|
-
stdout,
|
|
142
|
-
' -k, --insecure ',
|
|
143
|
-
' -s, --script <script> ',
|
|
144
|
-
));
|
|
145
|
-
|
|
146
|
-
// Assert
|
|
147
|
-
expect(testLine).toBe(expected);
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
test("CLI help interface 'export option -s, --script <script>' description should be expected english multiline", async () => {
|
|
151
|
-
// Arrange
|
|
152
|
-
const expected = collapseWhitespace(`
|
|
153
|
-
-s, --script <script> Name of a script. If specified, -a and -A are
|
|
154
|
-
ignored.
|
|
155
|
-
`);
|
|
156
|
-
// Act
|
|
157
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
158
|
-
stdout,
|
|
159
|
-
' -s, --script <script> ',
|
|
160
|
-
' -f, --file <file> '
|
|
161
|
-
));
|
|
162
|
-
|
|
163
|
-
// Assert
|
|
164
|
-
expect(testLine).toBe(expected);
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
test("CLI help interface 'export option -f, --file <file>' description should be expected english", async () => {
|
|
168
|
-
// Arrange
|
|
169
|
-
const expected = collapseWhitespace(`
|
|
170
|
-
-f, --file <file> Name of the file to write the exported script(s) to.
|
|
171
|
-
Ignored with -A.
|
|
172
|
-
`);
|
|
173
|
-
// Act
|
|
174
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
175
|
-
stdout,
|
|
176
|
-
' -f, --file <file> ',
|
|
177
|
-
' -a, --all '
|
|
178
|
-
));
|
|
179
|
-
// Assert
|
|
180
|
-
expect(testLine).toBe(expected);
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
test("CLI help interface 'export option -a, --all' description should be expected english", async () => {
|
|
184
|
-
// Arrange
|
|
185
|
-
const expected = collapseWhitespace(`
|
|
186
|
-
-a, --all Export all the scripts in a realm. Ignored with
|
|
187
|
-
-t.
|
|
188
|
-
`);
|
|
189
|
-
// Act
|
|
190
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
191
|
-
stdout,
|
|
192
|
-
' -a, --all ',
|
|
193
|
-
' -A, --allSeparate ',
|
|
194
|
-
));
|
|
195
|
-
// Assert
|
|
196
|
-
expect(testLine).toBe(expected);
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
test("CLI help interface 'export option -A, --allSeparate' description should be expected english", async () => {
|
|
200
|
-
// Arrange
|
|
201
|
-
const expected = collapseWhitespace(`
|
|
202
|
-
-A, --allSeparate Export all the scripts in a realm as separate
|
|
203
|
-
files <script>.json. Ignored with -s or -a.
|
|
204
|
-
`);
|
|
205
|
-
// Act
|
|
206
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
207
|
-
stdout,
|
|
208
|
-
' -A, --allSeparate ',
|
|
209
|
-
' -h, --help ',
|
|
210
|
-
));
|
|
211
|
-
// Assert
|
|
212
|
-
expect(testLine).toBe(expected);
|
|
213
|
-
});
|