@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.
Files changed (247) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/README.md +3 -3
  3. package/package.json +17 -15
  4. package/src/app.js +7 -6
  5. package/src/cli/_template/cmd-delete.js +9 -8
  6. package/src/cli/_template/cmd-describe.js +9 -8
  7. package/src/cli/_template/cmd-export.js +9 -8
  8. package/src/cli/_template/cmd-import.js +9 -8
  9. package/src/cli/_template/cmd-list.js +9 -8
  10. package/src/cli/_template/cmd-sub1-delete.js +9 -8
  11. package/src/cli/_template/cmd-sub1-describe.js +9 -8
  12. package/src/cli/_template/cmd-sub1-export.js +9 -8
  13. package/src/cli/_template/cmd-sub1-import.js +9 -8
  14. package/src/cli/_template/cmd-sub1-list.js +9 -8
  15. package/src/cli/_template/cmd-sub2-delete.js +9 -8
  16. package/src/cli/_template/cmd-sub2-describe.js +9 -8
  17. package/src/cli/_template/cmd-sub2-export.js +9 -8
  18. package/src/cli/_template/cmd-sub2-import.js +9 -8
  19. package/src/cli/_template/cmd-sub2-list.js +9 -8
  20. package/src/cli/admin/admin-add-autoid-static-user-mapping.js +12 -12
  21. package/src/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +15 -18
  22. package/src/cli/admin/admin-get-access-token.js +12 -12
  23. package/src/cli/admin/admin-grant-oauth2-client-admin-privileges.js +13 -13
  24. package/src/cli/admin/admin-hide-generic-extension-attributes.js +13 -13
  25. package/src/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +13 -13
  26. package/src/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +14 -13
  27. package/src/cli/admin/admin-list-static-user-mappings.js +12 -12
  28. package/src/cli/admin/admin-remove-static-user-mapping.js +12 -12
  29. package/src/cli/admin/admin-repair-org-model.js +13 -13
  30. package/src/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +13 -13
  31. package/src/cli/admin/admin-show-generic-extension-attributes.js +13 -13
  32. package/src/cli/app/app-delete.js +9 -8
  33. package/src/cli/app/app-describe.js +9 -8
  34. package/src/cli/app/app-export.js +15 -15
  35. package/src/cli/app/app-import.js +11 -11
  36. package/src/cli/app/app-list.js +11 -12
  37. package/src/cli/conn/conn-add.js +11 -11
  38. package/src/cli/conn/conn-delete.js +3 -1
  39. package/src/cli/conn/conn-describe.js +3 -1
  40. package/src/cli/conn/conn-list.js +3 -4
  41. package/src/cli/email/email-template-export.js +16 -16
  42. package/src/cli/email/email-template-import.js +16 -16
  43. package/src/cli/email/email-template-list.js +11 -11
  44. package/src/cli/esv/esv-apply.js +12 -12
  45. package/src/cli/esv/esv-secret-create.js +11 -11
  46. package/src/cli/esv/esv-secret-delete.js +13 -13
  47. package/src/cli/esv/esv-secret-describe.js +11 -11
  48. package/src/cli/esv/esv-secret-export.js +9 -8
  49. package/src/cli/esv/esv-secret-import.js +9 -8
  50. package/src/cli/esv/esv-secret-list.js +11 -11
  51. package/src/cli/esv/esv-secret-set.js +11 -11
  52. package/src/cli/esv/esv-secret-version-activate.js +12 -12
  53. package/src/cli/esv/esv-secret-version-create.js +11 -11
  54. package/src/cli/esv/esv-secret-version-deactivate.js +12 -12
  55. package/src/cli/esv/esv-secret-version-delete.js +13 -13
  56. package/src/cli/esv/esv-secret-version-list.js +11 -11
  57. package/src/cli/esv/esv-variable-create.js +11 -11
  58. package/src/cli/esv/esv-variable-delete.js +13 -16
  59. package/src/cli/esv/esv-variable-describe.js +11 -11
  60. package/src/cli/esv/esv-variable-export.js +9 -8
  61. package/src/cli/esv/esv-variable-import.js +9 -8
  62. package/src/cli/esv/esv-variable-list.js +11 -11
  63. package/src/cli/esv/esv-variable-set.js +13 -16
  64. package/src/cli/idm/idm-count.js +11 -11
  65. package/src/cli/idm/idm-export.js +16 -16
  66. package/src/cli/idm/idm-list.js +11 -11
  67. package/src/cli/idp/idp-export.js +15 -19
  68. package/src/cli/idp/idp-import.js +18 -18
  69. package/src/cli/idp/idp-list.js +12 -12
  70. package/src/cli/info/info.js +23 -19
  71. package/src/cli/journey/journey-delete.js +14 -14
  72. package/src/cli/journey/journey-describe.js +26 -35
  73. package/src/cli/journey/journey-export.js +18 -21
  74. package/src/cli/journey/journey-import.js +17 -17
  75. package/src/cli/journey/journey-list.js +12 -12
  76. package/src/cli/journey/journey-prune.js +12 -12
  77. package/src/cli/logging/logs-list.js +33 -28
  78. package/src/cli/logging/logs-tail.js +26 -22
  79. package/src/cli/realm/realm-add-custom-domain.js +13 -13
  80. package/src/cli/realm/realm-describe.js +14 -14
  81. package/src/cli/realm/realm-list.js +11 -11
  82. package/src/cli/realm/realm-remove-custom-domain.js +16 -13
  83. package/src/cli/saml/saml-cot-export.js +16 -16
  84. package/src/cli/saml/saml-cot-import.js +18 -18
  85. package/src/cli/saml/saml-cot-list.js +12 -12
  86. package/src/cli/saml/saml-describe.js +12 -12
  87. package/src/cli/saml/saml-export.js +16 -19
  88. package/src/cli/saml/saml-import.js +19 -18
  89. package/src/cli/saml/saml-list.js +12 -12
  90. package/src/cli/saml/saml-metadata-export.js +15 -19
  91. package/src/cli/script/script-delete.js +9 -8
  92. package/src/cli/script/script-describe.js +9 -8
  93. package/src/cli/script/script-export.js +18 -20
  94. package/src/cli/script/script-import.js +13 -12
  95. package/src/cli/script/script-list.js +12 -12
  96. package/src/cli/theme/theme-delete.js +17 -21
  97. package/src/cli/theme/theme-export.js +19 -18
  98. package/src/cli/theme/theme-import.js +21 -20
  99. package/src/cli/theme/theme-list.js +12 -12
  100. package/.eslintrc +0 -29
  101. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -30
  102. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  103. package/.github/README.md +0 -273
  104. package/.github/workflows/pipeline.yml +0 -487
  105. package/.prettierrc +0 -6
  106. package/CODE_OF_CONDUCT.md +0 -128
  107. package/docs/BINARIES.md +0 -22
  108. package/docs/CONTRIBUTE.md +0 -96
  109. package/docs/PIPELINE.md +0 -169
  110. package/docs/images/macos_warn1.png +0 -0
  111. package/docs/images/macos_warn2.png +0 -0
  112. package/docs/images/macos_warn3.png +0 -0
  113. package/docs/images/npm_versioning_guidelines.png +0 -0
  114. package/docs/images/release_pipeline.png +0 -0
  115. package/gulpfile.js +0 -49
  116. package/jsconfig.json +0 -6
  117. package/resources/sampleEntitiesFile.json +0 -8
  118. package/resources/sampleEnvFile.env +0 -2
  119. package/src/api/AuthenticateApi.js +0 -33
  120. package/src/api/BaseApi.js +0 -242
  121. package/src/api/CirclesOfTrustApi.js +0 -87
  122. package/src/api/EmailTemplateApi.js +0 -37
  123. package/src/api/IdmConfigApi.js +0 -88
  124. package/src/api/LogApi.js +0 -45
  125. package/src/api/ManagedObjectApi.js +0 -62
  126. package/src/api/OAuth2ClientApi.js +0 -69
  127. package/src/api/OAuth2OIDCApi.js +0 -73
  128. package/src/api/OAuth2ProviderApi.js +0 -32
  129. package/src/api/RealmApi.js +0 -99
  130. package/src/api/Saml2Api.js +0 -176
  131. package/src/api/ScriptApi.js +0 -84
  132. package/src/api/SecretsApi.js +0 -151
  133. package/src/api/ServerInfoApi.js +0 -41
  134. package/src/api/SocialIdentityProvidersApi.js +0 -114
  135. package/src/api/StartupApi.js +0 -45
  136. package/src/api/ThemeApi.js +0 -181
  137. package/src/api/TreeApi.js +0 -207
  138. package/src/api/VariablesApi.js +0 -104
  139. package/src/api/utils/ApiUtils.js +0 -77
  140. package/src/api/utils/Base64.js +0 -62
  141. package/src/cli/journey/journey-delete.e2e.test.js +0 -380
  142. package/src/cli/journey/journey-list.e2e.test.js +0 -141
  143. package/src/cli/theme/theme-delete.e2e.test.js +0 -178
  144. package/src/cli/theme/theme-list.e2e.test.js +0 -119
  145. package/src/ops/AdminOps.js +0 -901
  146. package/src/ops/AuthenticateOps.js +0 -342
  147. package/src/ops/CirclesOfTrustOps.js +0 -350
  148. package/src/ops/ConnectionProfileOps.js +0 -254
  149. package/src/ops/EmailTemplateOps.js +0 -326
  150. package/src/ops/IdmOps.js +0 -227
  151. package/src/ops/IdpOps.js +0 -342
  152. package/src/ops/JourneyOps.js +0 -2026
  153. package/src/ops/LogOps.js +0 -357
  154. package/src/ops/ManagedObjectOps.js +0 -34
  155. package/src/ops/OAuth2ClientOps.js +0 -151
  156. package/src/ops/OrganizationOps.js +0 -85
  157. package/src/ops/RealmOps.js +0 -139
  158. package/src/ops/SamlOps.js +0 -541
  159. package/src/ops/ScriptOps.js +0 -211
  160. package/src/ops/SecretsOps.js +0 -288
  161. package/src/ops/StartupOps.js +0 -114
  162. package/src/ops/ThemeOps.js +0 -379
  163. package/src/ops/VariablesOps.js +0 -185
  164. package/src/ops/templates/OAuth2ClientTemplate.json +0 -270
  165. package/src/ops/templates/OrgModelUserAttributesTemplate.json +0 -149
  166. package/src/ops/templates/cloud/GenericExtensionAttributesTemplate.json +0 -392
  167. package/src/ops/templates/cloud/managed.json +0 -4119
  168. package/src/ops/utils/Console.js +0 -434
  169. package/src/ops/utils/DataProtection.js +0 -92
  170. package/src/ops/utils/ExportImportUtils.js +0 -146
  171. package/src/ops/utils/OpsUtils.js +0 -76
  172. package/src/ops/utils/Wordwrap.js +0 -11
  173. package/src/storage/SessionStorage.js +0 -45
  174. package/test/client_cli/en/connections.test.js +0 -62
  175. package/test/client_cli/en/connections_add.test.js +0 -34
  176. package/test/client_cli/en/connections_delete.test.js +0 -34
  177. package/test/client_cli/en/connections_list.test.js +0 -34
  178. package/test/client_cli/en/email_templates.test.js +0 -77
  179. package/test/client_cli/en/email_templates_export.test.js +0 -196
  180. package/test/client_cli/en/email_templates_import.test.js +0 -145
  181. package/test/client_cli/en/email_templates_list.test.js +0 -130
  182. package/test/client_cli/en/idm.test.js +0 -111
  183. package/test/client_cli/en/idm_count.test.js +0 -121
  184. package/test/client_cli/en/idm_export.test.js +0 -136
  185. package/test/client_cli/en/idm_exportAll.test.js +0 -156
  186. package/test/client_cli/en/idm_exportAllRaw.test.js +0 -120
  187. package/test/client_cli/en/idm_import.test_.js +0 -103
  188. package/test/client_cli/en/idm_importAll.test_.js +0 -103
  189. package/test/client_cli/en/idm_list.test.js +0 -103
  190. package/test/client_cli/en/info.test.js +0 -125
  191. package/test/client_cli/en/journey.test.js +0 -127
  192. package/test/client_cli/en/journey_describe.test.js +0 -196
  193. package/test/client_cli/en/journey_export.test.js +0 -213
  194. package/test/client_cli/en/journey_import.test.js +0 -195
  195. package/test/client_cli/en/journey_importAll.test.js +0 -180
  196. package/test/client_cli/en/journey_list.test.js +0 -162
  197. package/test/client_cli/en/journey_prune.test.js +0 -148
  198. package/test/client_cli/en/logs.test.js +0 -79
  199. package/test/client_cli/en/logs_list.test.js +0 -83
  200. package/test/client_cli/en/logs_tail.test.js +0 -118
  201. package/test/client_cli/en/root.test.js +0 -91
  202. package/test/client_cli/en/script.test.js +0 -77
  203. package/test/client_cli/en/script_export.test.js +0 -213
  204. package/test/client_cli/en/script_import.test.js +0 -163
  205. package/test/client_cli/en/script_list.test.js +0 -148
  206. package/test/client_cli/utils/utils.js +0 -32
  207. package/test/e2e/journey/baseline/ForgottenUsername.journey.json +0 -216
  208. package/test/e2e/journey/baseline/Login.journey.json +0 -205
  209. package/test/e2e/journey/baseline/PasswordGrant.journey.json +0 -139
  210. package/test/e2e/journey/baseline/ProgressiveProfile.journey.json +0 -198
  211. package/test/e2e/journey/baseline/Registration.journey.json +0 -249
  212. package/test/e2e/journey/baseline/ResetPassword.journey.json +0 -268
  213. package/test/e2e/journey/baseline/UpdatePassword.journey.json +0 -323
  214. package/test/e2e/journey/baseline/allAlphaJourneys.journeys.json +0 -1520
  215. package/test/e2e/journey/delete/ForgottenUsername.journey.json +0 -216
  216. package/test/e2e/journey/delete/Login.journey.json +0 -205
  217. package/test/e2e/journey/delete/PasswordGrant.journey.json +0 -139
  218. package/test/e2e/journey/delete/ProgressiveProfile.journey.json +0 -198
  219. package/test/e2e/journey/delete/Registration.journey.json +0 -249
  220. package/test/e2e/journey/delete/ResetPassword.journey.json +0 -268
  221. package/test/e2e/journey/delete/UpdatePassword.journey.json +0 -323
  222. package/test/e2e/journey/delete/deleteMe.journey.json +0 -230
  223. package/test/e2e/journey/list/Disabled.journey.json +0 -43
  224. package/test/e2e/journey/list/ForgottenUsername.journey.json +0 -216
  225. package/test/e2e/journey/list/Login.journey.json +0 -205
  226. package/test/e2e/journey/list/PasswordGrant.journey.json +0 -139
  227. package/test/e2e/journey/list/ProgressiveProfile.journey.json +0 -198
  228. package/test/e2e/journey/list/Registration.journey.json +0 -249
  229. package/test/e2e/journey/list/ResetPassword.journey.json +0 -268
  230. package/test/e2e/journey/list/UpdatePassword.journey.json +0 -323
  231. package/test/e2e/setup.js +0 -98
  232. package/test/e2e/theme/baseline/Contrast.theme.json +0 -95
  233. package/test/e2e/theme/baseline/Highlander.theme.json +0 -95
  234. package/test/e2e/theme/baseline/Robroy.theme.json +0 -95
  235. package/test/e2e/theme/baseline/Starter-Theme.theme.json +0 -94
  236. package/test/e2e/theme/baseline/Zardoz.theme.json +0 -95
  237. package/test/e2e/theme/import/Contrast.theme.json +0 -95
  238. package/test/e2e/theme/import/Highlander.theme.json +0 -95
  239. package/test/e2e/theme/import/Robroy.theme.json +0 -95
  240. package/test/e2e/theme/import/Starter-Theme.theme.json +0 -94
  241. package/test/e2e/theme/import/Zardoz.default.theme.json +0 -95
  242. package/test/fs_tmp/.gitkeep +0 -2
  243. package/test/global/setup.js +0 -65
  244. package/test/lib_api/unit_tests/ApiUtils.test.js +0 -186
  245. package/test/lib_api/unit_tests/Base64URL.test.js +0 -22
  246. package/test/lib_api/unit_tests/DataProtection.test.js +0 -25
  247. package/test/lib_api/unit_tests/ExportImportUtils.test.js +0 -121
@@ -1,380 +0,0 @@
1
- // import { jest } from '@jest/globals';
2
- import { spawn, spawnSync } from 'child_process';
3
-
4
- const ansiEscapeCodes =
5
- // eslint-disable-next-line no-control-regex
6
- /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
7
-
8
- /**
9
- * Run once before running the suites in this file
10
- */
11
- beforeAll(async () => {});
12
-
13
- /**
14
- * Run before every test in every suite in this file
15
- */
16
- beforeEach(async () => {
17
- // delete all journeys
18
- const deleteJourneysCmd = spawnSync('frodo', [
19
- 'journey',
20
- 'delete',
21
- '--all',
22
- 'frodo-dev',
23
- ]);
24
- if (deleteJourneysCmd.status > 0) {
25
- console.error(deleteJourneysCmd.stderr.toString());
26
- console.log(deleteJourneysCmd.stdout.toString());
27
- }
28
-
29
- // import test journeys
30
- const importTestJourneysCmd = spawnSync(
31
- 'frodo',
32
- ['journey', 'import', '--all-separate', 'frodo-dev'],
33
- {
34
- cwd: `test/e2e/journey/delete`,
35
- }
36
- );
37
- if (importTestJourneysCmd.status > 0) {
38
- console.error(importTestJourneysCmd.stderr.toString());
39
- console.log(importTestJourneysCmd.stdout.toString());
40
- }
41
- });
42
-
43
- describe('frodo journey delete', () => {
44
- it('"frodo journey delete -i deleteMe": should delete the deleteMe journey and all its nodes', (done) => {
45
- const deleteJourneyCmd = spawn('frodo', [
46
- 'journey',
47
- 'delete',
48
- '-i',
49
- 'deleteMe',
50
- 'frodo-dev',
51
- ]);
52
- const expected = ['✔ Deleted deleteMe and 7/7 nodes.', ''].join('\n');
53
- const chunks = [];
54
- deleteJourneyCmd.stderr.on('data', (chunk) => {
55
- chunks.push(chunk);
56
- });
57
- deleteJourneyCmd.stderr.on('end', () => {
58
- const output = Buffer.concat(chunks)
59
- .toString()
60
- .replace(ansiEscapeCodes, '');
61
- try {
62
- expect(output).toContain(expected);
63
- done();
64
- } catch (error) {
65
- done(error);
66
- }
67
- });
68
- });
69
-
70
- it('"frodo journey delete -i deleteMe --verbose": should delete the deleteMe journey and all its nodes with verbose output', (done) => {
71
- const deleteJourneyCmd = spawn('frodo', [
72
- 'journey',
73
- 'delete',
74
- '-i',
75
- 'deleteMe',
76
- '--verbose',
77
- 'frodo-dev',
78
- ]);
79
- const expected = [
80
- 'Deleted deleteMe (tree)\n',
81
- 'Read 3c89697f-c114-4d36-907f-6c36f820cde7 (PageNode) from deleteMe\n',
82
- 'Deleted 68e23c54-0c9e-4991-9b25-daf306d6ec65 (ZeroPageLoginNode) from deleteMe\n',
83
- 'Deleted 9cd184fc-9453-4666-b667-2875d9301b5e (DataStoreDecisionNode) from deleteMe\n',
84
- 'Read 2d564be0-325e-439a-aeb0-6c884270c756 (PageNode) from deleteMe\n',
85
- 'Deleted 3c89697f-c114-4d36-907f-6c36f820cde7 (PageNode) from deleteMe\n',
86
- 'Deleted fab1f53e-cda4-458a-b458-b07f75c75d5f (ValidatedUsernameNode) from deleteMe\n',
87
- 'Deleted 2d564be0-325e-439a-aeb0-6c884270c756 (PageNode) from deleteMe\n',
88
- 'Deleted 9d146833-e8d1-4802-8c35-0d7772290807 (DisplayUserNameNode) from deleteMe\n',
89
- 'Deleted c22373f9-252b-4d0b-b80e-e4b392a17d98 (ValidatedPasswordNode) from deleteMe\n',
90
- '✔ Deleted deleteMe and 7/7 nodes.\n',
91
- ];
92
- const chunks = [];
93
- deleteJourneyCmd.stderr.on('data', (chunk) => {
94
- chunks.push(chunk);
95
- });
96
- deleteJourneyCmd.stderr.on('end', () => {
97
- const output = Buffer.concat(chunks)
98
- .toString()
99
- .replace(ansiEscapeCodes, '');
100
- try {
101
- for (const str of expected) {
102
- expect(output).toContain(str);
103
- }
104
- done();
105
- } catch (error) {
106
- done(error);
107
- }
108
- });
109
- });
110
-
111
- it('"frodo journey delete -i deleteMe --no-deep": should delete the deleteMe journey and none of its nodes', (done) => {
112
- const deleteJourneyCmd = spawn('frodo', [
113
- 'journey',
114
- 'delete',
115
- '-i',
116
- 'deleteMe',
117
- '--no-deep',
118
- 'frodo-dev',
119
- ]);
120
- const expected = ['✔ Deleted deleteMe and 0/0 nodes.', ''].join('\n');
121
- const chunks = [];
122
- deleteJourneyCmd.stderr.on('data', (chunk) => {
123
- chunks.push(chunk);
124
- });
125
- deleteJourneyCmd.stderr.on('end', () => {
126
- const output = Buffer.concat(chunks)
127
- .toString()
128
- .replace(ansiEscapeCodes, '');
129
- try {
130
- expect(output).toContain(expected);
131
- done();
132
- } catch (error) {
133
- done(error);
134
- }
135
- });
136
- });
137
-
138
- it('"frodo journey delete -i deleteMe --no-deep --verbose": should delete the deleteMe journey and none of its nodes with verbose output', (done) => {
139
- const deleteJourneyCmd = spawn('frodo', [
140
- 'journey',
141
- 'delete',
142
- '-i',
143
- 'deleteMe',
144
- '--no-deep',
145
- '--verbose',
146
- 'frodo-dev',
147
- ]);
148
- const expected = [
149
- 'Deleted deleteMe (tree)\n',
150
- '✔ Deleted deleteMe and 0/0 nodes.\n',
151
- ];
152
- const chunks = [];
153
- deleteJourneyCmd.stderr.on('data', (chunk) => {
154
- chunks.push(chunk);
155
- });
156
- deleteJourneyCmd.stderr.on('end', () => {
157
- const output = Buffer.concat(chunks)
158
- .toString()
159
- .replace(ansiEscapeCodes, '');
160
- try {
161
- for (const str of expected) {
162
- expect(output).toContain(str);
163
- }
164
- done();
165
- } catch (error) {
166
- done(error);
167
- }
168
- });
169
- });
170
- });
171
-
172
- describe('frodo journey delete --all', () => {
173
- it(
174
- '"frodo journey delete -a": should delete all journeys and all their nodes',
175
- (done) => {
176
- const deleteJourneyCmd = spawn('frodo', [
177
- 'journey',
178
- 'delete',
179
- '-a',
180
- 'frodo-dev',
181
- ]);
182
- const expected = [
183
- '[========================================] 100% | 8/8 | Deleted 8/8 journeys and 51/51 nodes.',
184
- '',
185
- ].join('\n');
186
- const chunks = [];
187
- deleteJourneyCmd.stderr.on('data', (chunk) => {
188
- chunks.push(chunk);
189
- });
190
- deleteJourneyCmd.stderr.on('end', () => {
191
- const output = Buffer.concat(chunks)
192
- .toString()
193
- .replace(ansiEscapeCodes, '');
194
- try {
195
- expect(output).toContain(expected);
196
- done();
197
- } catch (error) {
198
- done(error);
199
- }
200
- });
201
- },
202
- // increase timeout for long-running test
203
- 10 * 1000
204
- );
205
-
206
- it(
207
- '"frodo journey delete -a --verbose": should delete all journeys and all their nodes with verbose output',
208
- (done) => {
209
- const deleteJourneyCmd = spawn('frodo', [
210
- 'journey',
211
- 'delete',
212
- '-a',
213
- '--verbose',
214
- 'frodo-dev',
215
- ]);
216
- const expected = [
217
- '[----------------------------------------] 0% | 0/8 | Deleting journeys...\n',
218
- 'Deleted ResetPassword (tree)\n',
219
- 'Read cc3e1ed2-25f1-47bf-83c6-17084f8b2b2b (PageNode) from ResetPassword\n',
220
- 'Deleted 06c97be5-7fdd-4739-aea1-ecc7fe082865 (EmailSuspendNode) from ResetPassword\n',
221
- 'Deleted 989f0bf8-a328-4217-b82b-5275d79ca8bd (PatchObjectNode) from ResetPassword\n',
222
- 'Deleted 21b8ddf3-0203-4ae1-ab05-51cf3a3a707a (IdentifyExistingUserNode) from ResetPassword\n',
223
- 'Read e4c752f9-c625-48c9-9644-a58802fa9e9c (PageNode) from ResetPassword\n',
224
- 'Deleted cc3e1ed2-25f1-47bf-83c6-17084f8b2b2b (PageNode) from ResetPassword\n',
225
- 'Deleted 276afa7c-a680-4cf4-a5f6-d6c78191f5c9 (AttributeCollectorNode) from ResetPassword\n',
226
- 'Deleted e4c752f9-c625-48c9-9644-a58802fa9e9c (PageNode) from ResetPassword\n',
227
- 'Deleted 009c19c8-9572-47bb-adb2-1f092c559a43 (ValidatedPasswordNode) from ResetPassword\n',
228
- 'Deleted Registration (tree)\n',
229
- 'Read 0c091c49-f3af-48fb-ac6f-07fba0499dd6 (PageNode) from Registration\n',
230
- 'Deleted d3ce2036-1523-4ce8-b1a2-895a2a036667 (AttributeCollectorNode) from Registration\n',
231
- 'Deleted 0c091c49-f3af-48fb-ac6f-07fba0499dd6 (PageNode) from Registration\n',
232
- 'Deleted 3d8709a1-f09f-4d1f-8094-2850e472c1db (ValidatedPasswordNode) from Registration\n',
233
- 'Deleted 120c69d3-90b4-4ad4-b7af-380e8b119340 (KbaCreateNode) from Registration\n',
234
- 'Deleted b4a0e915-c15d-4b83-9c9d-18347d645976 (AcceptTermsAndConditionsNode) from Registration\n',
235
- 'Deleted ad5dcbb3-7335-49b7-b3e7-7d850bb88237 (CreateObjectNode) from Registration\n',
236
- 'Deleted 7fcaf48e-a754-4959-858b-05b2933b825f (ValidatedUsernameNode) from Registration\n',
237
- 'Deleted 97a15eb2-a015-4b6d-81a0-be78c3aa1a3b (IncrementLoginCountNode) from Registration\n',
238
- 'Deleted PasswordGrant (tree)\n',
239
- 'Read 6b9a715d-ea23-4eae-9a59-69797c147157 (PageNode) from PasswordGrant\n',
240
- 'Deleted 59952413-9bc2-47e5-a9b2-b04c1d729e24 (UsernameCollectorNode) from PasswordGrant\n',
241
- 'Deleted 6b9a715d-ea23-4eae-9a59-69797c147157 (PageNode) from PasswordGrant\n',
242
- 'Deleted 8c217417-11dd-4a0f-a9e4-59c2390085be (PasswordCollectorNode) from PasswordGrant\n',
243
- 'Deleted e2988546-a459-4c9a-b0e2-fa65ae136b34 (DataStoreDecisionNode) from PasswordGrant\n',
244
- 'Deleted ProgressiveProfile (tree)\n',
245
- 'Read a5aecad8-854a-4ed5-b719-ff6c90e858c0 (PageNode) from ProgressiveProfile\n',
246
- 'Deleted 423a959a-a1b9-498a-b0f7-596b6b6e775a (PatchObjectNode) from ProgressiveProfile\n',
247
- 'Deleted a1f45b44-5bf7-4c57-aa3f-75c619c7db8e (QueryFilterDecisionNode) from ProgressiveProfile\n',
248
- 'Deleted 8afdaec3-275e-4301-bb53-34f03e6a4b29 (LoginCountDecisionNode) from ProgressiveProfile\n',
249
- 'Deleted a5aecad8-854a-4ed5-b719-ff6c90e858c0 (PageNode) from ProgressiveProfile\n',
250
- 'Deleted 0a042e10-b22e-4e02-86c4-65e26e775f7a (AttributeCollectorNode) from ProgressiveProfile\n',
251
- 'Deleted ForgottenUsername (tree)\n',
252
- 'Read 5e2a7c95-94af-4b23-8724-deb13853726a (PageNode) from ForgottenUsername\n',
253
- 'Deleted 5e2a7c95-94af-4b23-8724-deb13853726a (PageNode) from ForgottenUsername\n',
254
- 'Deleted 9f1e8d94-4922-481b-9e14-212b66548900 (AttributeCollectorNode) from ForgottenUsername\n',
255
- 'Deleted bf9ea8d5-9802-4f26-9664-a21840faac23 (IdentifyExistingUserNode) from ForgottenUsername\n',
256
- 'Deleted d9a79f01-2ce3-4be2-a28a-975f35c3c8ca (EmailSuspendNode) from ForgottenUsername\n',
257
- 'Deleted b93ce36e-1976-4610-b24f-8d6760b5463b (InnerTreeEvaluatorNode) from ForgottenUsername\n',
258
- 'Deleted deleteMe (tree)\n',
259
- 'Read 3c89697f-c114-4d36-907f-6c36f820cde7 (PageNode) from deleteMe\n',
260
- 'Deleted 9cd184fc-9453-4666-b667-2875d9301b5e (DataStoreDecisionNode) from deleteMe\n',
261
- 'Read 2d564be0-325e-439a-aeb0-6c884270c756 (PageNode) from deleteMe\n',
262
- 'Deleted 68e23c54-0c9e-4991-9b25-daf306d6ec65 (ZeroPageLoginNode) from deleteMe\n',
263
- 'Deleted 3c89697f-c114-4d36-907f-6c36f820cde7 (PageNode) from deleteMe\n',
264
- 'Deleted fab1f53e-cda4-458a-b458-b07f75c75d5f (ValidatedUsernameNode) from deleteMe\n',
265
- 'Deleted c22373f9-252b-4d0b-b80e-e4b392a17d98 (ValidatedPasswordNode) from deleteMe\n',
266
- 'Deleted 2d564be0-325e-439a-aeb0-6c884270c756 (PageNode) from deleteMe\n',
267
- 'Deleted 9d146833-e8d1-4802-8c35-0d7772290807 (DisplayUserNameNode) from deleteMe\n',
268
- 'Deleted UpdatePassword (tree)\n',
269
- 'Read 20237b34-26cb-4a0b-958f-abb422290d42 (PageNode) from UpdatePassword\n',
270
- 'Read d018fcd1-4e22-4160-8c41-63bee51c9cb3 (PageNode) from UpdatePassword\n',
271
- 'Deleted 0f0904e6-1da3-4cdb-9abf-0d2545016fab (AttributePresentDecisionNode) from UpdatePassword\n',
272
- 'Deleted 20237b34-26cb-4a0b-958f-abb422290d42 (PageNode) from UpdatePassword\n',
273
- 'Deleted 7d1deabe-cd98-49c8-943f-ca12305775f3 (DataStoreDecisionNode) from UpdatePassword\n',
274
- 'Deleted fe2962fc-4db3-4066-8624-553649afc438 (ValidatedPasswordNode) from UpdatePassword\n',
275
- 'Deleted 3990ce1f-cce6-435b-ae1c-f138e89411c1 (PatchObjectNode) from UpdatePassword\n',
276
- 'Deleted a3d97b53-e38a-4b24-aed0-a021050eb744 (EmailSuspendNode) from UpdatePassword\n',
277
- 'Deleted d018fcd1-4e22-4160-8c41-63bee51c9cb3 (PageNode) from UpdatePassword\n',
278
- 'Deleted 21a99653-a7a7-47ee-b650-f493a84bba09 (ValidatedPasswordNode) from UpdatePassword\n',
279
- 'Deleted d1b79744-493a-44fe-bc26-7d324a8caa4e (SessionDataNode) from UpdatePassword\n',
280
- 'Deleted Login (tree)\n',
281
- 'Read a12bc72f-ad97-4f1e-a789-a1fa3dd566c8 (PageNode) from Login\n',
282
- 'Deleted 33b24514-3e50-4180-8f08-ab6f4e51b07e (InnerTreeEvaluatorNode) from Login\n',
283
- 'Deleted 2998c1c9-f4c8-4a00-b2c6-3426783ee49d (DataStoreDecisionNode) from Login\n',
284
- 'Deleted 7354982f-57b6-4b04-9ddc-f1dd1e1e07d0 (ValidatedUsernameNode) from Login\n',
285
- 'Deleted bba3e0d8-8525-4e82-bf48-ac17f7988917 (IncrementLoginCountNode) from Login\n',
286
- 'Deleted 0c80c39b-4813-4e67-b4fb-5a0bba85f994 (ValidatedPasswordNode) from Login\n',
287
- 'Deleted a12bc72f-ad97-4f1e-a789-a1fa3dd566c8 (PageNode) from Login\n',
288
- '[========================================] 100% | 8/8 | Deleted 8/8 journeys and 51/51 nodes.\n',
289
- ];
290
- const chunks = [];
291
- deleteJourneyCmd.stderr.on('data', (chunk) => {
292
- chunks.push(chunk);
293
- });
294
- deleteJourneyCmd.stderr.on('end', () => {
295
- const output = Buffer.concat(chunks)
296
- .toString()
297
- .replace(ansiEscapeCodes, '');
298
- try {
299
- for (const str of expected) {
300
- expect(output).toContain(str);
301
- }
302
- done();
303
- } catch (error) {
304
- done(error);
305
- }
306
- });
307
- },
308
- // increase timeout for long-running test
309
- 10 * 1000
310
- );
311
-
312
- it('"frodo journey delete -a --no-deep": should delete all journeys but none of their nodes', (done) => {
313
- const deleteJourneyCmd = spawn('frodo', [
314
- 'journey',
315
- 'delete',
316
- '-a',
317
- '--no-deep',
318
- 'frodo-dev',
319
- ]);
320
- const expected = [
321
- '[========================================] 100% | 8/8 | Deleted 8/8 journeys and 0/0 nodes.',
322
- '',
323
- ].join('\n');
324
- const chunks = [];
325
- deleteJourneyCmd.stderr.on('data', (chunk) => {
326
- chunks.push(chunk);
327
- });
328
- deleteJourneyCmd.stderr.on('end', () => {
329
- const output = Buffer.concat(chunks)
330
- .toString()
331
- .replace(ansiEscapeCodes, '');
332
- try {
333
- expect(output).toContain(expected);
334
- done();
335
- } catch (error) {
336
- done(error);
337
- }
338
- });
339
- });
340
-
341
- it('"frodo journey delete -a --no-deep --verbose": should delete all journeys but none of their nodes with verbose output', (done) => {
342
- const deleteJourneyCmd = spawn('frodo', [
343
- 'journey',
344
- 'delete',
345
- '-a',
346
- '--no-deep',
347
- '--verbose',
348
- 'frodo-dev',
349
- ]);
350
- const expected = [
351
- '[----------------------------------------] 0% | 0/8 | Deleting journeys...\n',
352
- 'Deleted ResetPassword (tree)\n',
353
- 'Deleted Registration (tree)\n',
354
- 'Deleted PasswordGrant (tree)\n',
355
- 'Deleted ProgressiveProfile (tree)\n',
356
- 'Deleted ForgottenUsername (tree)\n',
357
- 'Deleted deleteMe (tree)\n',
358
- 'Deleted UpdatePassword (tree)\n',
359
- 'Deleted Login (tree)\n',
360
- '[========================================] 100% | 8/8 | Deleted 8/8 journeys and 0/0 nodes.\n',
361
- ];
362
- const chunks = [];
363
- deleteJourneyCmd.stderr.on('data', (chunk) => {
364
- chunks.push(chunk);
365
- });
366
- deleteJourneyCmd.stderr.on('end', () => {
367
- const output = Buffer.concat(chunks)
368
- .toString()
369
- .replace(ansiEscapeCodes, '');
370
- try {
371
- for (const str of expected) {
372
- expect(output).toContain(str);
373
- }
374
- done();
375
- } catch (error) {
376
- done(error);
377
- }
378
- });
379
- });
380
- });
@@ -1,141 +0,0 @@
1
- // import { jest } from '@jest/globals';
2
- import { spawn, spawnSync } from 'child_process';
3
-
4
- const ansiEscapeCodes =
5
- // eslint-disable-next-line no-control-regex
6
- /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
7
-
8
- /**
9
- * delete all journeys and import baseline and additional test journeys
10
- */
11
- beforeAll(async () => {
12
- // delete all journeys
13
- const deleteJourneysCmd = spawnSync('frodo', [
14
- 'journey',
15
- 'delete',
16
- '--all',
17
- 'frodo-dev',
18
- ]);
19
- if (deleteJourneysCmd.status > 0) {
20
- console.error(deleteJourneysCmd.stderr.toString());
21
- console.log(deleteJourneysCmd.stdout.toString());
22
- }
23
-
24
- // import baseline journeys
25
- const importBaselineJourneysCmd = spawnSync(
26
- 'frodo',
27
- ['journey', 'import', '--all-separate', 'frodo-dev'],
28
- {
29
- cwd: `test/e2e/journey/baseline`,
30
- }
31
- );
32
- if (importBaselineJourneysCmd.status > 0) {
33
- console.error(importBaselineJourneysCmd.stderr.toString());
34
- console.log(importBaselineJourneysCmd.stdout.toString());
35
- }
36
-
37
- // import additional test journeys
38
- const importTestJourneysCmd = spawnSync(
39
- 'frodo',
40
- ['journey', 'import', '--all-separate', 'frodo-dev'],
41
- {
42
- cwd: `test/e2e/journey/list`,
43
- }
44
- );
45
- if (importTestJourneysCmd.status > 0) {
46
- console.error(importTestJourneysCmd.stderr.toString());
47
- console.log(importTestJourneysCmd.stdout.toString());
48
- }
49
- });
50
-
51
- describe('frodo journey list', () => {
52
- it('"frodo journey list": should list the names of the default journeys', (done) => {
53
- const journeyList = spawn('frodo', ['journey', 'list', 'frodo-dev']);
54
- const expected = [
55
- 'Disabled',
56
- 'ForgottenUsername',
57
- 'Login',
58
- 'PasswordGrant',
59
- 'ProgressiveProfile',
60
- 'Registration',
61
- 'ResetPassword',
62
- 'UpdatePassword',
63
- '',
64
- ].join('\n');
65
-
66
- const chunks = [];
67
- journeyList.stdout.on('data', (chunk) => {
68
- chunks.push(chunk);
69
- });
70
-
71
- journeyList.stdout.on('end', () => {
72
- const output = Buffer.concat(chunks).toString();
73
- try {
74
- expect(output).toBe(expected);
75
- done();
76
- } catch (error) {
77
- done(error);
78
- }
79
- });
80
- });
81
-
82
- const expectedLong = [
83
- 'Name │Status │Tags ',
84
- 'Disabled │disabled│Prototype ',
85
- 'ForgottenUsername │enabled │Username Reset ',
86
- 'Login │enabled │Authentication ',
87
- 'PasswordGrant │enabled │ ',
88
- 'ProgressiveProfile│enabled │Progressive Profile',
89
- 'Registration │enabled │Registration ',
90
- 'ResetPassword │enabled │Password Reset ',
91
- 'UpdatePassword │enabled │Password Reset ',
92
- '',
93
- ].join('\n');
94
-
95
- it('"frodo journey list -l": should list the names, status, and tags of the default journeys', (done) => {
96
- const journeyList = spawn('frodo', ['journey', 'list', '-l', 'frodo-dev']);
97
-
98
- const chunks = [];
99
- journeyList.stdout.on('data', (chunk) => {
100
- chunks.push(chunk);
101
- });
102
-
103
- journeyList.stdout.on('end', () => {
104
- const output = Buffer.concat(chunks)
105
- .toString()
106
- .replace(ansiEscapeCodes, '');
107
- try {
108
- expect(output).toBe(expectedLong);
109
- done();
110
- } catch (error) {
111
- done(error);
112
- }
113
- });
114
- });
115
-
116
- it('"frodo journey list --long": should list the names, status, and tags of the default journeys', (done) => {
117
- const journeyList = spawn('frodo', [
118
- 'journey',
119
- 'list',
120
- '--long',
121
- 'frodo-dev',
122
- ]);
123
-
124
- const chunks = [];
125
- journeyList.stdout.on('data', (chunk) => {
126
- chunks.push(chunk);
127
- });
128
-
129
- journeyList.stdout.on('end', () => {
130
- const output = Buffer.concat(chunks)
131
- .toString()
132
- .replace(ansiEscapeCodes, '');
133
- try {
134
- expect(output).toBe(expectedLong);
135
- done();
136
- } catch (error) {
137
- done(error);
138
- }
139
- });
140
- });
141
- });
@@ -1,178 +0,0 @@
1
- // import { jest } from '@jest/globals';
2
- import { spawn, spawnSync } from 'child_process';
3
-
4
- const ansiEscapeCodes =
5
- // eslint-disable-next-line no-control-regex
6
- /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
7
-
8
- /**
9
- * Run once before running the suites in this file
10
- */
11
- beforeAll(async () => {});
12
-
13
- /**
14
- * Run before every test in every suite in this file
15
- */
16
- beforeEach(async () => {
17
- // delete all themes
18
- const deleteThemesCmd = spawnSync('frodo', [
19
- 'theme',
20
- 'delete',
21
- '--all',
22
- 'frodo-dev',
23
- ]);
24
- if (deleteThemesCmd.status > 0) {
25
- console.error(deleteThemesCmd.stderr.toString());
26
- console.log(deleteThemesCmd.stdout.toString());
27
- }
28
-
29
- // import test themes
30
- const importTestThemesCmd = spawnSync(
31
- 'frodo',
32
- ['theme', 'import', '--all-separate', 'frodo-dev'],
33
- {
34
- cwd: `test/e2e/theme/baseline`,
35
- }
36
- );
37
- if (importTestThemesCmd.status > 0) {
38
- console.error(importTestThemesCmd.stderr.toString());
39
- console.log(importTestThemesCmd.stdout.toString());
40
- }
41
- });
42
-
43
- describe('frodo theme delete', () => {
44
- it('"frodo theme delete -n Zardoz": should delete the Zardoz theme', (done) => {
45
- const deleteThemeCmd = spawn('frodo', [
46
- 'theme',
47
- 'delete',
48
- '-n',
49
- 'Zardoz',
50
- 'frodo-dev',
51
- ]);
52
- const expected = ['✔ Deleted Zardoz.', ''].join('\n');
53
- const chunks = [];
54
- deleteThemeCmd.stderr.on('data', (chunk) => {
55
- chunks.push(chunk);
56
- });
57
- deleteThemeCmd.stderr.on('end', () => {
58
- const output = Buffer.concat(chunks)
59
- .toString()
60
- .replace(ansiEscapeCodes, '');
61
- try {
62
- expect(output).toContain(expected);
63
- done();
64
- } catch (error) {
65
- done(error);
66
- }
67
- });
68
- });
69
-
70
- it('"frodo theme delete -n DoesNotExist": should report an error that the theme does not exist', (done) => {
71
- const deleteThemeCmd = spawn('frodo', [
72
- 'theme',
73
- 'delete',
74
- '-n',
75
- 'DoesNotExist',
76
- 'frodo-dev',
77
- ]);
78
- const expected = ['✖ Error: DoesNotExist not found', ''].join('\n');
79
- const chunks = [];
80
- deleteThemeCmd.stderr.on('data', (chunk) => {
81
- chunks.push(chunk);
82
- });
83
- deleteThemeCmd.stderr.on('end', () => {
84
- const output = Buffer.concat(chunks)
85
- .toString()
86
- .replace(ansiEscapeCodes, '');
87
- try {
88
- expect(output).toContain(expected);
89
- done();
90
- } catch (error) {
91
- done(error);
92
- }
93
- });
94
- });
95
-
96
- it('"frodo theme delete -i 4ded6d91-ceea-400a-ae3f-42209f1b0e06": should delete the 4ded6d91-ceea-400a-ae3f-42209f1b0e06 (Zardoz) theme', (done) => {
97
- const deleteThemeCmd = spawn('frodo', [
98
- 'theme',
99
- 'delete',
100
- '-i',
101
- '4ded6d91-ceea-400a-ae3f-42209f1b0e06',
102
- 'frodo-dev',
103
- ]);
104
- const expected = [
105
- '✔ Deleted 4ded6d91-ceea-400a-ae3f-42209f1b0e06.',
106
- '',
107
- ].join('\n');
108
- const chunks = [];
109
- deleteThemeCmd.stderr.on('data', (chunk) => {
110
- chunks.push(chunk);
111
- });
112
- deleteThemeCmd.stderr.on('end', () => {
113
- const output = Buffer.concat(chunks)
114
- .toString()
115
- .replace(ansiEscapeCodes, '');
116
- try {
117
- expect(output).toContain(expected);
118
- done();
119
- } catch (error) {
120
- done(error);
121
- }
122
- });
123
- });
124
-
125
- it('"frodo theme delete -i 4ded6d91-ceea-400a-ae3f-42209f1b0e07": should report an error that the theme does not exist', (done) => {
126
- const deleteThemeCmd = spawn('frodo', [
127
- 'theme',
128
- 'delete',
129
- '-i',
130
- '4ded6d91-ceea-400a-ae3f-42209f1b0e07',
131
- 'frodo-dev',
132
- ]);
133
- const expected = [
134
- '✖ Error: 4ded6d91-ceea-400a-ae3f-42209f1b0e07 not found',
135
- '',
136
- ].join('\n');
137
- const chunks = [];
138
- deleteThemeCmd.stderr.on('data', (chunk) => {
139
- chunks.push(chunk);
140
- });
141
- deleteThemeCmd.stderr.on('end', () => {
142
- const output = Buffer.concat(chunks)
143
- .toString()
144
- .replace(ansiEscapeCodes, '');
145
- try {
146
- expect(output).toContain(expected);
147
- done();
148
- } catch (error) {
149
- done(error);
150
- }
151
- });
152
- });
153
-
154
- it('"frodo theme delete -a": should delete all themes', (done) => {
155
- const deleteThemeCmd = spawn('frodo', [
156
- 'theme',
157
- 'delete',
158
- '-a',
159
- 'frodo-dev',
160
- ]);
161
- const expected = ['✔ Deleted all realm themes.', ''].join('\n');
162
- const chunks = [];
163
- deleteThemeCmd.stderr.on('data', (chunk) => {
164
- chunks.push(chunk);
165
- });
166
- deleteThemeCmd.stderr.on('end', () => {
167
- const output = Buffer.concat(chunks)
168
- .toString()
169
- .replace(ansiEscapeCodes, '');
170
- try {
171
- expect(output).toContain(expected);
172
- done();
173
- } catch (error) {
174
- done(error);
175
- }
176
- });
177
- });
178
- });