@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,195 +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 journey import --help';
|
|
7
|
-
const { stdout } = await exec(CMD);
|
|
8
|
-
|
|
9
|
-
test("CLI help interface for 'journey import' Usage should be expected english", async () => {
|
|
10
|
-
// Arrange
|
|
11
|
-
const expected = `
|
|
12
|
-
Usage: frodo journey import [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 'journey import' description at line 2 should be expected english", async () => {
|
|
24
|
-
// Arrange
|
|
25
|
-
const expected = `
|
|
26
|
-
Import journey/tree.
|
|
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 'import 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 'import 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 'import 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 'import 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 'import 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 'import 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
|
-
' -t, --tree <tree> ',
|
|
144
|
-
));
|
|
145
|
-
|
|
146
|
-
// Assert
|
|
147
|
-
expect(testLine).toBe(expected);
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
test("CLI help interface 'describe option -t, --tree <tree>' description should be expected english", async () => {
|
|
151
|
-
// Arrange
|
|
152
|
-
const expectedDescription = `
|
|
153
|
-
-t, --tree <tree> Name of a journey/tree. If specified, -a and -A are ignored.
|
|
154
|
-
`.trim();
|
|
155
|
-
// Act
|
|
156
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
157
|
-
stdout,
|
|
158
|
-
' -t, --tree <tree> ',
|
|
159
|
-
' -f, --file <file> '
|
|
160
|
-
));
|
|
161
|
-
// Assert
|
|
162
|
-
expect(testLine).toBe(expectedDescription);
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
test("CLI help interface 'import option -f, --file <file>' description should be expected english", async () => {
|
|
166
|
-
// Arrange
|
|
167
|
-
const expected = collapseWhitespace(`
|
|
168
|
-
-f, --file <file> Name of the file to write the exported journey(s) to. Ignored with -A. -a, --all Import all the journeys/trees from single file. Ignored with -t. -A, --allSeparate Import all the journeys/trees from separate files <journey/tree name>.json. Ignored with -t or -a.
|
|
169
|
-
`);
|
|
170
|
-
// Act
|
|
171
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
172
|
-
stdout,
|
|
173
|
-
' -f, --file <file> ',
|
|
174
|
-
' -n '
|
|
175
|
-
));
|
|
176
|
-
// Assert
|
|
177
|
-
expect(testLine).toBe(expected);
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
test("CLI help interface 'import option -n' description should be expected english multiline", async () => {
|
|
181
|
-
// Arrange
|
|
182
|
-
const expected = collapseWhitespace(`
|
|
183
|
-
-n No Re-UUID, i.e., import does not generate new UUIDs for
|
|
184
|
-
(inner)nodes. Used to update existing trees/nodes instead
|
|
185
|
-
of cloning them.
|
|
186
|
-
`);
|
|
187
|
-
// Act
|
|
188
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
189
|
-
stdout,
|
|
190
|
-
' -n ',
|
|
191
|
-
' -h, --help '
|
|
192
|
-
));
|
|
193
|
-
// Assert
|
|
194
|
-
expect(testLine).toBe(expected);
|
|
195
|
-
});
|
|
@@ -1,180 +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 journey importAll --help';
|
|
7
|
-
const { stdout } = await exec(CMD);
|
|
8
|
-
|
|
9
|
-
test("CLI help interface for 'journey importAll' Usage should be expected english", async () => {
|
|
10
|
-
// Arrange
|
|
11
|
-
const expected = `
|
|
12
|
-
Usage: frodo journey importAll [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 'journey importAll' description at line 2 should be expected english", async () => {
|
|
24
|
-
// Arrange
|
|
25
|
-
const expected = `
|
|
26
|
-
Import all the trees in a realm.
|
|
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 'importAll 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 'importAll 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 'importAll 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 'importAll 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 'importAll 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 'importAll 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
|
-
' -f, --file <file> ',
|
|
144
|
-
));
|
|
145
|
-
|
|
146
|
-
// Assert
|
|
147
|
-
expect(testLine).toBe(expected);
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
test("CLI help interface 'importAll option -f, --file <file>' description should be expected english", async () => {
|
|
151
|
-
// Arrange
|
|
152
|
-
const expected = collapseWhitespace(`
|
|
153
|
-
-f, --file <file> File name.
|
|
154
|
-
`);
|
|
155
|
-
// Act
|
|
156
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
157
|
-
stdout,
|
|
158
|
-
' -f, --file <file> ',
|
|
159
|
-
' -n '
|
|
160
|
-
));
|
|
161
|
-
// Assert
|
|
162
|
-
expect(testLine).toBe(expected);
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
test("CLI help interface 'importAll option -n' description should be expected english multiline", async () => {
|
|
166
|
-
// Arrange
|
|
167
|
-
const expected = collapseWhitespace(`
|
|
168
|
-
-n No Re-UUID, i.e., import does not generate new UUIDs for
|
|
169
|
-
(inner)nodes. Used to update existing trees/nodes instead
|
|
170
|
-
of cloning them.
|
|
171
|
-
`);
|
|
172
|
-
// Act
|
|
173
|
-
const testLine = collapseWhitespace(crudeMultilineTakeUntil(
|
|
174
|
-
stdout,
|
|
175
|
-
' -n ',
|
|
176
|
-
' -h, --help '
|
|
177
|
-
));
|
|
178
|
-
// Assert
|
|
179
|
-
expect(testLine).toBe(expected);
|
|
180
|
-
});
|
|
@@ -1,162 +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 journey list --help';
|
|
7
|
-
const { stdout } = await exec(CMD);
|
|
8
|
-
|
|
9
|
-
test("CLI help interface for 'journey list' Usage should be expected english", async () => {
|
|
10
|
-
// Arrange
|
|
11
|
-
const expected = `
|
|
12
|
-
Usage: frodo journey list [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 'journey list' description at line 2 should be expected english", async () => {
|
|
24
|
-
// Arrange
|
|
25
|
-
const expected = `
|
|
26
|
-
List all the journeys/trees in a realm.
|
|
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 'list 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 'list 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 'list 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 'list 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 'list 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 'list 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
|
-
' -a, --analyze ',
|
|
144
|
-
));
|
|
145
|
-
|
|
146
|
-
// Assert
|
|
147
|
-
expect(testLine).toBe(expected);
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
test("CLI help interface 'list option --analyze' description should be expected english", async () => {
|
|
151
|
-
// Arrange
|
|
152
|
-
const expectedDescription = `
|
|
153
|
-
-a, --analyze Analyze journeys for custom nodes.
|
|
154
|
-
`.trim();
|
|
155
|
-
// Act
|
|
156
|
-
const testLine = stdout
|
|
157
|
-
.split(/\n/)
|
|
158
|
-
.find(line => line.trim().startsWith('-a, --analyze'))
|
|
159
|
-
.trim();
|
|
160
|
-
// Assert
|
|
161
|
-
expect(testLine).toBe(expectedDescription);
|
|
162
|
-
});
|
|
@@ -1,148 +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 journey prune --help';
|
|
7
|
-
const { stdout } = await exec(CMD);
|
|
8
|
-
|
|
9
|
-
test("CLI help interface for 'journey prune' Usage should be expected english", async () => {
|
|
10
|
-
// Arrange
|
|
11
|
-
const expected = `
|
|
12
|
-
Usage: frodo journey prune [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 'journey prune' description at line 2 should be expected english", async () => {
|
|
24
|
-
// Arrange
|
|
25
|
-
const expected = `
|
|
26
|
-
Prune orphaned configuration artifacts left behind after deleting authentication trees. You will be prompted before any destructive operations are performed.
|
|
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 'prune 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 'prune 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 'prune 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 'prune 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 'prune 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 'prune 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
|
-
' -h, --help ',
|
|
144
|
-
));
|
|
145
|
-
|
|
146
|
-
// Assert
|
|
147
|
-
expect(testLine).toBe(expected);
|
|
148
|
-
});
|