@microsoft/power-apps-cli 0.6.0 → 0.6.4

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 (178) hide show
  1. package/lib/ArgumentProvider.d.ts.map +1 -1
  2. package/lib/ArgumentProvider.js +11 -7
  3. package/lib/ArgumentProvider.js.map +1 -1
  4. package/lib/Authentication/NodeMsalAuthenticationProvider.d.ts +4 -1
  5. package/lib/Authentication/NodeMsalAuthenticationProvider.d.ts.map +1 -1
  6. package/lib/Authentication/NodeMsalAuthenticationProvider.js +5 -1
  7. package/lib/Authentication/NodeMsalAuthenticationProvider.js.map +1 -1
  8. package/lib/Authentication/PacCliAuthenticationProvider.d.ts +2 -1
  9. package/lib/Authentication/PacCliAuthenticationProvider.d.ts.map +1 -1
  10. package/lib/Authentication/PacCliAuthenticationProvider.js +1 -1
  11. package/lib/Authentication/PacCliAuthenticationProvider.js.map +1 -1
  12. package/lib/Authentication/ServicePrincipalAuthenticationProvider.d.ts +3 -1
  13. package/lib/Authentication/ServicePrincipalAuthenticationProvider.d.ts.map +1 -1
  14. package/lib/Authentication/ServicePrincipalAuthenticationProvider.js +4 -2
  15. package/lib/Authentication/ServicePrincipalAuthenticationProvider.js.map +1 -1
  16. package/lib/Cli.d.ts.map +1 -1
  17. package/lib/Cli.js +1 -2
  18. package/lib/Cli.js.map +1 -1
  19. package/lib/CliUtils.d.ts +1 -1
  20. package/lib/CliUtils.d.ts.map +1 -1
  21. package/lib/CliUtils.js +36 -9
  22. package/lib/CliUtils.js.map +1 -1
  23. package/lib/HttpClient/CliHttpClient.d.ts.map +1 -1
  24. package/lib/HttpClient/CliHttpClient.js +2 -1
  25. package/lib/HttpClient/CliHttpClient.js.map +1 -1
  26. package/lib/Types/Cli.types.d.ts +2 -1
  27. package/lib/Types/Cli.types.d.ts.map +1 -1
  28. package/lib/Utils/EnhanceNetworkError.d.ts +14 -0
  29. package/lib/Utils/EnhanceNetworkError.d.ts.map +1 -0
  30. package/lib/Utils/EnhanceNetworkError.js +59 -0
  31. package/lib/Utils/EnhanceNetworkError.js.map +1 -0
  32. package/lib/Verbs/Init.d.ts.map +1 -1
  33. package/lib/Verbs/Init.js +3 -0
  34. package/lib/Verbs/Init.js.map +1 -1
  35. package/lib/__tests__/E2eTests/basicSetup/loggingConfiguration.test.d.ts +5 -0
  36. package/lib/__tests__/E2eTests/basicSetup/loggingConfiguration.test.d.ts.map +1 -0
  37. package/lib/__tests__/E2eTests/basicSetup/loggingConfiguration.test.js +246 -0
  38. package/lib/__tests__/E2eTests/basicSetup/loggingConfiguration.test.js.map +1 -0
  39. package/lib/__tests__/E2eTests/cliUsability/cliHelp.test.d.ts +5 -0
  40. package/lib/__tests__/E2eTests/cliUsability/cliHelp.test.d.ts.map +1 -0
  41. package/lib/__tests__/E2eTests/cliUsability/cliHelp.test.js +162 -0
  42. package/lib/__tests__/E2eTests/cliUsability/cliHelp.test.js.map +1 -0
  43. package/lib/__tests__/E2eTests/cliUsability/logoutReauth.test.d.ts +5 -0
  44. package/lib/__tests__/E2eTests/cliUsability/logoutReauth.test.d.ts.map +1 -0
  45. package/lib/__tests__/E2eTests/cliUsability/logoutReauth.test.js +115 -0
  46. package/lib/__tests__/E2eTests/cliUsability/logoutReauth.test.js.map +1 -0
  47. package/lib/__tests__/E2eTests/cliUsability/missingParameters.test.d.ts +5 -0
  48. package/lib/__tests__/E2eTests/cliUsability/missingParameters.test.d.ts.map +1 -0
  49. package/lib/__tests__/E2eTests/cliUsability/missingParameters.test.js +189 -0
  50. package/lib/__tests__/E2eTests/cliUsability/missingParameters.test.js.map +1 -0
  51. package/lib/__tests__/E2eTests/commonUserWorkflowSmokeTest.test.js +8 -6
  52. package/lib/__tests__/E2eTests/commonUserWorkflowSmokeTest.test.js.map +1 -1
  53. package/lib/__tests__/E2eTests/e2eConfig.d.ts +95 -0
  54. package/lib/__tests__/E2eTests/e2eConfig.d.ts.map +1 -0
  55. package/lib/__tests__/E2eTests/e2eConfig.js +122 -0
  56. package/lib/__tests__/E2eTests/e2eConfig.js.map +1 -0
  57. package/lib/__tests__/UnitTests/CliUtils.spec.d.ts +5 -0
  58. package/lib/__tests__/UnitTests/CliUtils.spec.d.ts.map +1 -0
  59. package/lib/__tests__/UnitTests/CliUtils.spec.js +94 -0
  60. package/lib/__tests__/UnitTests/CliUtils.spec.js.map +1 -0
  61. package/lib/__tests__/UnitTests/ServicePrincipalAuthenticationProvider.spec.js +3 -3
  62. package/lib/__tests__/UnitTests/ServicePrincipalAuthenticationProvider.spec.js.map +1 -1
  63. package/lib/__tests__/UnitTests/enhanceNetworkError.test.d.ts +5 -0
  64. package/lib/__tests__/UnitTests/enhanceNetworkError.test.d.ts.map +1 -0
  65. package/lib/__tests__/UnitTests/enhanceNetworkError.test.js +177 -0
  66. package/lib/__tests__/UnitTests/enhanceNetworkError.test.js.map +1 -0
  67. package/lib/__tests__/helpers/e2eTestHelpers.d.ts.map +1 -1
  68. package/lib/__tests__/helpers/e2eTestHelpers.js +16 -0
  69. package/lib/__tests__/helpers/e2eTestHelpers.js.map +1 -1
  70. package/lib/__tests__/helpers/testHelpers.d.ts +146 -30
  71. package/lib/__tests__/helpers/testHelpers.d.ts.map +1 -1
  72. package/lib/__tests__/helpers/testHelpers.js +245 -74
  73. package/lib/__tests__/helpers/testHelpers.js.map +1 -1
  74. package/lib-cjs/ArgumentProvider.d.ts.map +1 -1
  75. package/lib-cjs/ArgumentProvider.js +7 -1
  76. package/lib-cjs/ArgumentProvider.js.map +1 -1
  77. package/lib-cjs/Authentication/NodeMsalAuthenticationProvider.d.ts +4 -1
  78. package/lib-cjs/Authentication/NodeMsalAuthenticationProvider.d.ts.map +1 -1
  79. package/lib-cjs/Authentication/NodeMsalAuthenticationProvider.js +4 -1
  80. package/lib-cjs/Authentication/NodeMsalAuthenticationProvider.js.map +1 -1
  81. package/lib-cjs/Authentication/PacCliAuthenticationProvider.d.ts +2 -1
  82. package/lib-cjs/Authentication/PacCliAuthenticationProvider.d.ts.map +1 -1
  83. package/lib-cjs/Authentication/PacCliAuthenticationProvider.js +1 -1
  84. package/lib-cjs/Authentication/PacCliAuthenticationProvider.js.map +1 -1
  85. package/lib-cjs/Authentication/ServicePrincipalAuthenticationProvider.d.ts +3 -1
  86. package/lib-cjs/Authentication/ServicePrincipalAuthenticationProvider.d.ts.map +1 -1
  87. package/lib-cjs/Authentication/ServicePrincipalAuthenticationProvider.js +4 -2
  88. package/lib-cjs/Authentication/ServicePrincipalAuthenticationProvider.js.map +1 -1
  89. package/lib-cjs/Cli.d.ts.map +1 -1
  90. package/lib-cjs/Cli.js +14 -18
  91. package/lib-cjs/Cli.js.map +1 -1
  92. package/lib-cjs/CliUtils.d.ts +1 -1
  93. package/lib-cjs/CliUtils.d.ts.map +1 -1
  94. package/lib-cjs/CliUtils.js +38 -11
  95. package/lib-cjs/CliUtils.js.map +1 -1
  96. package/lib-cjs/HttpClient/CliHttpClient.d.ts.map +1 -1
  97. package/lib-cjs/HttpClient/CliHttpClient.js +2 -1
  98. package/lib-cjs/HttpClient/CliHttpClient.js.map +1 -1
  99. package/lib-cjs/Types/Cli.types.d.ts +2 -1
  100. package/lib-cjs/Types/Cli.types.d.ts.map +1 -1
  101. package/lib-cjs/Utils/EnhanceNetworkError.d.ts +13 -0
  102. package/lib-cjs/Utils/EnhanceNetworkError.d.ts.map +1 -0
  103. package/lib-cjs/Utils/EnhanceNetworkError.js +63 -0
  104. package/lib-cjs/Utils/EnhanceNetworkError.js.map +1 -0
  105. package/lib-cjs/Verbs/Init.d.ts.map +1 -1
  106. package/lib-cjs/Verbs/Init.js +4 -0
  107. package/lib-cjs/Verbs/Init.js.map +1 -1
  108. package/lib-cjs/__tests__/E2eTests/basicSetup/loggingConfiguration.test.d.ts +4 -0
  109. package/lib-cjs/__tests__/E2eTests/basicSetup/loggingConfiguration.test.d.ts.map +1 -0
  110. package/lib-cjs/__tests__/E2eTests/basicSetup/loggingConfiguration.test.js +271 -0
  111. package/lib-cjs/__tests__/E2eTests/basicSetup/loggingConfiguration.test.js.map +1 -0
  112. package/lib-cjs/__tests__/E2eTests/cliUsability/cliHelp.test.d.ts +4 -0
  113. package/lib-cjs/__tests__/E2eTests/cliUsability/cliHelp.test.d.ts.map +1 -0
  114. package/lib-cjs/__tests__/E2eTests/cliUsability/cliHelp.test.js +187 -0
  115. package/lib-cjs/__tests__/E2eTests/cliUsability/cliHelp.test.js.map +1 -0
  116. package/lib-cjs/__tests__/E2eTests/cliUsability/logoutReauth.test.d.ts +4 -0
  117. package/lib-cjs/__tests__/E2eTests/cliUsability/logoutReauth.test.d.ts.map +1 -0
  118. package/lib-cjs/__tests__/E2eTests/cliUsability/logoutReauth.test.js +140 -0
  119. package/lib-cjs/__tests__/E2eTests/cliUsability/logoutReauth.test.js.map +1 -0
  120. package/lib-cjs/__tests__/E2eTests/cliUsability/missingParameters.test.d.ts +4 -0
  121. package/lib-cjs/__tests__/E2eTests/cliUsability/missingParameters.test.d.ts.map +1 -0
  122. package/lib-cjs/__tests__/E2eTests/cliUsability/missingParameters.test.js +191 -0
  123. package/lib-cjs/__tests__/E2eTests/cliUsability/missingParameters.test.js.map +1 -0
  124. package/lib-cjs/__tests__/E2eTests/commonUserWorkflowSmokeTest.test.js +5 -5
  125. package/lib-cjs/__tests__/E2eTests/commonUserWorkflowSmokeTest.test.js.map +1 -1
  126. package/lib-cjs/__tests__/E2eTests/e2eConfig.d.ts +94 -0
  127. package/lib-cjs/__tests__/E2eTests/e2eConfig.d.ts.map +1 -0
  128. package/lib-cjs/__tests__/E2eTests/e2eConfig.js +149 -0
  129. package/lib-cjs/__tests__/E2eTests/e2eConfig.js.map +1 -0
  130. package/lib-cjs/__tests__/UnitTests/CliUtils.spec.d.ts +4 -0
  131. package/lib-cjs/__tests__/UnitTests/CliUtils.spec.d.ts.map +1 -0
  132. package/lib-cjs/__tests__/UnitTests/CliUtils.spec.js +97 -0
  133. package/lib-cjs/__tests__/UnitTests/CliUtils.spec.js.map +1 -0
  134. package/lib-cjs/__tests__/UnitTests/ServicePrincipalAuthenticationProvider.spec.js +3 -3
  135. package/lib-cjs/__tests__/UnitTests/ServicePrincipalAuthenticationProvider.spec.js.map +1 -1
  136. package/lib-cjs/__tests__/UnitTests/enhanceNetworkError.test.d.ts +4 -0
  137. package/lib-cjs/__tests__/UnitTests/enhanceNetworkError.test.d.ts.map +1 -0
  138. package/lib-cjs/__tests__/UnitTests/enhanceNetworkError.test.js +179 -0
  139. package/lib-cjs/__tests__/UnitTests/enhanceNetworkError.test.js.map +1 -0
  140. package/lib-cjs/__tests__/helpers/e2eTestHelpers.d.ts.map +1 -1
  141. package/lib-cjs/__tests__/helpers/e2eTestHelpers.js +16 -0
  142. package/lib-cjs/__tests__/helpers/e2eTestHelpers.js.map +1 -1
  143. package/lib-cjs/__tests__/helpers/testHelpers.d.ts +146 -30
  144. package/lib-cjs/__tests__/helpers/testHelpers.d.ts.map +1 -1
  145. package/lib-cjs/__tests__/helpers/testHelpers.js +242 -98
  146. package/lib-cjs/__tests__/helpers/testHelpers.js.map +1 -1
  147. package/node_modules/@microsoft/powerapps-data/package.json +2 -2
  148. package/node_modules/@microsoft/powerapps-player-actions/lib/Actions/ListTables.d.ts +1 -1
  149. package/node_modules/@microsoft/powerapps-player-actions/lib/Actions/ListTables.d.ts.map +1 -1
  150. package/node_modules/@microsoft/powerapps-player-actions/lib/Actions/ListTables.js +11 -2
  151. package/node_modules/@microsoft/powerapps-player-actions/lib/Actions/ListTables.js.map +1 -1
  152. package/node_modules/@microsoft/powerapps-player-actions/lib/CodeGen/modelServiceGenerator.d.ts +10 -0
  153. package/node_modules/@microsoft/powerapps-player-actions/lib/CodeGen/modelServiceGenerator.d.ts.map +1 -1
  154. package/node_modules/@microsoft/powerapps-player-actions/lib/CodeGen/modelServiceGenerator.js +98 -36
  155. package/node_modules/@microsoft/powerapps-player-actions/lib/CodeGen/modelServiceGenerator.js.map +1 -1
  156. package/node_modules/@microsoft/powerapps-player-actions/lib/__tests__/ModelServiceGenerator.spec.js +16 -2
  157. package/node_modules/@microsoft/powerapps-player-actions/lib/__tests__/ModelServiceGenerator.spec.js.map +1 -1
  158. package/node_modules/@microsoft/powerapps-player-actions/lib-cjs/Actions/ListTables.d.ts +1 -1
  159. package/node_modules/@microsoft/powerapps-player-actions/lib-cjs/Actions/ListTables.d.ts.map +1 -1
  160. package/node_modules/@microsoft/powerapps-player-actions/lib-cjs/Actions/ListTables.js +14 -5
  161. package/node_modules/@microsoft/powerapps-player-actions/lib-cjs/Actions/ListTables.js.map +1 -1
  162. package/node_modules/@microsoft/powerapps-player-actions/lib-cjs/CodeGen/modelServiceGenerator.d.ts +10 -0
  163. package/node_modules/@microsoft/powerapps-player-actions/lib-cjs/CodeGen/modelServiceGenerator.d.ts.map +1 -1
  164. package/node_modules/@microsoft/powerapps-player-actions/lib-cjs/CodeGen/modelServiceGenerator.js +139 -65
  165. package/node_modules/@microsoft/powerapps-player-actions/lib-cjs/CodeGen/modelServiceGenerator.js.map +1 -1
  166. package/node_modules/@microsoft/powerapps-player-actions/lib-cjs/__tests__/ModelServiceGenerator.spec.js +31 -1
  167. package/node_modules/@microsoft/powerapps-player-actions/lib-cjs/__tests__/ModelServiceGenerator.spec.js.map +1 -1
  168. package/node_modules/@microsoft/powerapps-player-actions/package.json +2 -2
  169. package/node_modules/@pa-client/powerapps-player-services/lib/Services/Connectivity/__tests__/ApimService.spec.js +3 -0
  170. package/node_modules/@pa-client/powerapps-player-services/lib/Services/Connectivity/__tests__/ApimService.spec.js.map +1 -1
  171. package/node_modules/@pa-client/powerapps-player-services/lib/Services/PlayerLaunchService/PlayerLaunchService.types.d.ts +1 -0
  172. package/node_modules/@pa-client/powerapps-player-services/lib/Services/PlayerLaunchService/PlayerLaunchService.types.d.ts.map +1 -1
  173. package/node_modules/@pa-client/powerapps-player-services/lib-cjs/Services/Connectivity/__tests__/ApimService.spec.js +3 -0
  174. package/node_modules/@pa-client/powerapps-player-services/lib-cjs/Services/Connectivity/__tests__/ApimService.spec.js.map +1 -1
  175. package/node_modules/@pa-client/powerapps-player-services/lib-cjs/Services/PlayerLaunchService/PlayerLaunchService.types.d.ts +1 -0
  176. package/node_modules/@pa-client/powerapps-player-services/lib-cjs/Services/PlayerLaunchService/PlayerLaunchService.types.d.ts.map +1 -1
  177. package/node_modules/@pa-client/powerapps-player-services/package.json +1 -1
  178. package/package.json +4 -4
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (C) Microsoft Corporation. All rights reserved.
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ /**
30
+ * E2E Tests: Basic Setup - Logging Configuration
31
+ *
32
+ * Tests that the CLI logging and telemetry configuration works correctly.
33
+ * Test Cases:
34
+ * - TC 35840167: Logging Configuration Baseline
35
+ * - TC 35840168: Telemetry Event Emission on Command Execution
36
+ */
37
+ var globals_1 = require("@jest/globals");
38
+ var fs = __importStar(require("fs"));
39
+ var path = __importStar(require("path"));
40
+ var e2eTestHelpers_1 = require("../../helpers/e2eTestHelpers");
41
+ var testHelpers_1 = require("../../helpers/testHelpers");
42
+ var e2eConfig_1 = require("../e2eConfig");
43
+ var TEST_FOLDER_NAME = 'loggingConfigTests';
44
+ (0, e2eTestHelpers_1.describeE2E)('Basic Setup - Logging Configuration (TC: 35840167, 35840168)', function () {
45
+ var testSetup;
46
+ (0, globals_1.beforeAll)(function () {
47
+ testSetup = (0, testHelpers_1.setupE2eTest)({
48
+ testFolderName: TEST_FOLDER_NAME,
49
+ tempBaseDir: e2eConfig_1.E2E_CONFIG.tempBaseDir,
50
+ });
51
+ // Create power.config.json
52
+ var configPath = path.join(testSetup.projectRoot, 'power.config.json');
53
+ fs.writeFileSync(configPath, JSON.stringify({
54
+ version: '1.0',
55
+ appId: null,
56
+ appDisplayName: 'Logging Config Test App',
57
+ region: e2eConfig_1.E2E_CONFIG.region,
58
+ environmentId: e2eConfig_1.E2E_CONFIG.environmentId,
59
+ connectionReferences: {},
60
+ databaseReferences: {},
61
+ }));
62
+ });
63
+ (0, globals_1.afterAll)(function () {
64
+ testSetup.cleanup();
65
+ });
66
+ (0, globals_1.describe)('default logging behavior (TC: 35840167)', function () {
67
+ (0, globals_1.beforeEach)(function () {
68
+ // Remove user settings to test defaults
69
+ if (fs.existsSync(testSetup.userSettingsPath)) {
70
+ fs.unlinkSync(testSetup.userSettingsPath);
71
+ }
72
+ });
73
+ (0, globals_1.it)('CLI runs without user settings file', function () {
74
+ (0, globals_1.expect)(fs.existsSync(testSetup.userSettingsPath)).toBe(false);
75
+ var result = testSetup.execute('logout', []);
76
+ // Should succeed even without settings
77
+ (0, globals_1.expect)(result.stderr).toBe('');
78
+ (0, globals_1.expect)(result.stdout.includes('Successfully logged out') || result.stdout.includes('No user found')).toBe(true);
79
+ });
80
+ (0, globals_1.it)('--help works without any configuration', function () {
81
+ var result = testSetup.execute('', ['--help']);
82
+ (0, globals_1.expect)(result.exitCode).toBe(0);
83
+ (0, globals_1.expect)(result.stderr).toBe('');
84
+ (0, globals_1.expect)(result.stdout).toContain('Usage:');
85
+ });
86
+ (0, globals_1.it)('default output is user-friendly (not verbose telemetry)', function () {
87
+ var result = testSetup.execute('logout', []);
88
+ // Default output should be clean, not full of telemetry
89
+ (0, globals_1.expect)(result.stdout).not.toContain('[scenario:start]');
90
+ (0, globals_1.expect)(result.stdout).not.toContain('[scenario:complete]');
91
+ (0, globals_1.expect)(result.stdout).not.toContain('scenarioGuid');
92
+ });
93
+ (0, globals_1.it)('errors are displayed in user-friendly format', function () {
94
+ var result = testSetup.execute('add-data-source', []);
95
+ // Error output should be readable
96
+ (0, globals_1.expect)(result.stderr.length + result.stdout.length).toBeGreaterThan(0);
97
+ // Should not be a raw stack trace by default
98
+ var combinedOutput = "".concat(result.stdout, " ").concat(result.stderr);
99
+ // Check it's not just a stack trace
100
+ if (result.exitCode !== 0) {
101
+ (0, globals_1.expect)(combinedOutput.toLowerCase().includes('required') ||
102
+ combinedOutput.toLowerCase().includes('missing') ||
103
+ combinedOutput.toLowerCase().includes('usage') ||
104
+ combinedOutput.toLowerCase().includes('error') ||
105
+ combinedOutput.includes('--')).toBe(true);
106
+ }
107
+ });
108
+ });
109
+ (0, globals_1.describe)('telemetry settings persistence', function () {
110
+ (0, globals_1.it)('settings persist across command executions', function () {
111
+ // Write settings
112
+ fs.writeFileSync(testSetup.userSettingsPath, JSON.stringify({
113
+ enabled: true,
114
+ consoleOnly: true,
115
+ outputToConsole: true,
116
+ }));
117
+ // Run multiple commands
118
+ var result1 = testSetup.execute('logout', []);
119
+ var result2 = testSetup.execute('logout', []);
120
+ // Settings should still exist
121
+ (0, globals_1.expect)(fs.existsSync(testSetup.userSettingsPath)).toBe(true);
122
+ // Both should have similar behavior
123
+ (0, globals_1.expect)(result1.exitCode).toBe(result2.exitCode);
124
+ });
125
+ (0, globals_1.it)('invalid settings file is handled gracefully', function () {
126
+ // Write invalid JSON
127
+ fs.writeFileSync(testSetup.userSettingsPath, '{ invalid json }');
128
+ var result = testSetup.execute('logout', []);
129
+ // Should either recover gracefully or report clear error
130
+ // Should not crash with unhandled exception
131
+ (0, globals_1.expect)(result.stdout.length + result.stderr.length).toBeGreaterThan(0);
132
+ });
133
+ (0, globals_1.it)('empty settings file is handled gracefully', function () {
134
+ fs.writeFileSync(testSetup.userSettingsPath, '');
135
+ var result = testSetup.execute('logout', []);
136
+ // Should handle gracefully
137
+ (0, globals_1.expect)(result.stdout.length + result.stderr.length).toBeGreaterThan(0);
138
+ });
139
+ });
140
+ (0, globals_1.describe)('telemetry event emission (TC: 35840168)', function () {
141
+ (0, globals_1.beforeEach)(function () {
142
+ // Enable console telemetry
143
+ fs.writeFileSync(testSetup.userSettingsPath, JSON.stringify({
144
+ enabled: true,
145
+ consoleOnly: true,
146
+ outputToConsole: true,
147
+ }));
148
+ });
149
+ (0, globals_1.it)('emits telemetry for logout command', function () {
150
+ var result = testSetup.execute('logout', []);
151
+ var output = "".concat(result.stdout, " ").concat(result.stderr);
152
+ // With telemetry enabled, should see events
153
+ var hasEvents = output.includes('[scenario:') || output.includes('scenarioGuid') || output.includes('elapsedTime');
154
+ // If events are emitted, they should be properly formatted
155
+ if (hasEvents) {
156
+ (0, globals_1.expect)(output).not.toContain('undefined');
157
+ (0, globals_1.expect)(output).not.toContain('[object Object]');
158
+ }
159
+ });
160
+ (0, globals_1.it)('emits telemetry for init --help command', function () {
161
+ var result = testSetup.execute('init', ['--help']);
162
+ var output = "".concat(result.stdout, " ").concat(result.stderr);
163
+ // Help commands should also emit telemetry if enabled
164
+ var hasEvents = output.includes('[scenario:') || output.includes('scenarioGuid') || output.includes('elapsedTime');
165
+ if (hasEvents) {
166
+ (0, globals_1.expect)(output).not.toContain('NaN');
167
+ }
168
+ });
169
+ (0, globals_1.it)('emits telemetry for list-codeapps command', function () {
170
+ var result = testSetup.execute('list-codeapps', []);
171
+ var output = "".concat(result.stdout, " ").concat(result.stderr);
172
+ // Should have some telemetry output
173
+ var hasEvents = output.includes('[scenario:') || output.includes('scenarioGuid') || output.includes('elapsedTime');
174
+ if (hasEvents) {
175
+ // Verify no malformed output
176
+ (0, globals_1.expect)(output).not.toContain('undefined');
177
+ }
178
+ });
179
+ (0, globals_1.it)('emits telemetry for failing commands', function () {
180
+ var result = testSetup.execute('add-data-source', []);
181
+ var output = "".concat(result.stdout, " ").concat(result.stderr);
182
+ // Failed commands should also emit telemetry
183
+ (0, globals_1.expect)(result.exitCode).not.toBe(0);
184
+ // Should have some output
185
+ (0, globals_1.expect)(output.length).toBeGreaterThan(0);
186
+ });
187
+ (0, globals_1.it)('telemetry events have timestamps', function () {
188
+ var result = testSetup.execute('logout', []);
189
+ var output = "".concat(result.stdout, " ").concat(result.stderr);
190
+ // If telemetry is present, check for timestamps
191
+ if (output.includes('[scenario:')) {
192
+ // Should have time-based information
193
+ var hasTimestamp = /\d{2}:\d{2}:\d{2}/.test(output) || // HH:MM:SS format
194
+ /scenarioStartTime/.test(output) ||
195
+ /elapsedTime/.test(output);
196
+ (0, globals_1.expect)(hasTimestamp).toBe(true);
197
+ }
198
+ });
199
+ });
200
+ (0, globals_1.describe)('telemetry disable functionality', function () {
201
+ (0, globals_1.it)('telemetry is suppressed when disabled', function () {
202
+ fs.writeFileSync(testSetup.userSettingsPath, JSON.stringify({
203
+ enabled: false,
204
+ consoleOnly: false,
205
+ outputToConsole: false,
206
+ }));
207
+ var result = testSetup.execute('logout', []);
208
+ var output = "".concat(result.stdout, " ").concat(result.stderr);
209
+ // Should not have verbose telemetry
210
+ (0, globals_1.expect)(output).not.toContain('[scenario:start]');
211
+ (0, globals_1.expect)(output).not.toContain('[scenario:complete]');
212
+ (0, globals_1.expect)(output).not.toContain('scenarioGuid');
213
+ });
214
+ (0, globals_1.it)('command output is cleaner when telemetry disabled', function () {
215
+ // With telemetry enabled
216
+ fs.writeFileSync(testSetup.userSettingsPath, JSON.stringify({
217
+ enabled: true,
218
+ consoleOnly: true,
219
+ outputToConsole: true,
220
+ }));
221
+ var enabledResult = testSetup.execute('logout', []);
222
+ var enabledOutput = "".concat(enabledResult.stdout, " ").concat(enabledResult.stderr);
223
+ // With telemetry disabled
224
+ fs.writeFileSync(testSetup.userSettingsPath, JSON.stringify({
225
+ enabled: false,
226
+ consoleOnly: false,
227
+ outputToConsole: false,
228
+ }));
229
+ var disabledResult = testSetup.execute('logout', []);
230
+ var disabledOutput = "".concat(disabledResult.stdout, " ").concat(disabledResult.stderr);
231
+ // Disabled output should be shorter or equal (less verbose)
232
+ if (enabledOutput.includes('[scenario:')) {
233
+ (0, globals_1.expect)(disabledOutput.length).toBeLessThanOrEqual(enabledOutput.length);
234
+ }
235
+ });
236
+ });
237
+ (0, globals_1.describe)('CLI config directory behavior', function () {
238
+ (0, globals_1.it)('uses POWERAPPS_CLI_CONFIG_DIR environment variable', function () {
239
+ // Our test setup already uses this, verify it works
240
+ fs.writeFileSync(testSetup.userSettingsPath, JSON.stringify({
241
+ testMarker: 'isolated-config-test',
242
+ }));
243
+ // Verify file is in the isolated directory
244
+ (0, globals_1.expect)(testSetup.userSettingsPath).toContain(TEST_FOLDER_NAME);
245
+ (0, globals_1.expect)(fs.existsSync(testSetup.userSettingsPath)).toBe(true);
246
+ var settings = JSON.parse(fs.readFileSync(testSetup.userSettingsPath, 'utf-8'));
247
+ (0, globals_1.expect)(settings.testMarker).toBe('isolated-config-test');
248
+ });
249
+ (0, globals_1.it)('different test suites have isolated configs', function () {
250
+ // Create another isolated config using setupE2eTest
251
+ var otherSetup = (0, testHelpers_1.setupE2eTest)({
252
+ testFolderName: 'otherTestIsolation',
253
+ tempBaseDir: e2eConfig_1.E2E_CONFIG.tempBaseDir,
254
+ });
255
+ try {
256
+ fs.writeFileSync(testSetup.userSettingsPath, JSON.stringify({ source: 'main-test' }));
257
+ fs.writeFileSync(otherSetup.userSettingsPath, JSON.stringify({ source: 'other-test' }));
258
+ // Verify they're different
259
+ var mainSettings = JSON.parse(fs.readFileSync(testSetup.userSettingsPath, 'utf-8'));
260
+ var otherSettings = JSON.parse(fs.readFileSync(otherSetup.userSettingsPath, 'utf-8'));
261
+ (0, globals_1.expect)(mainSettings.source).toBe('main-test');
262
+ (0, globals_1.expect)(otherSettings.source).toBe('other-test');
263
+ (0, globals_1.expect)(testSetup.userSettingsPath).not.toBe(otherSetup.userSettingsPath);
264
+ }
265
+ finally {
266
+ otherSetup.cleanup();
267
+ }
268
+ });
269
+ });
270
+ });
271
+ //# sourceMappingURL=loggingConfiguration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loggingConfiguration.test.js","sourceRoot":"","sources":["../../../../src/__tests__/E2eTests/basicSetup/loggingConfiguration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliHelp.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/E2eTests/cliUsability/cliHelp.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (C) Microsoft Corporation. All rights reserved.
4
+ */
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ var __read = (this && this.__read) || function (o, n) {
17
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
18
+ if (!m) return o;
19
+ var i = m.call(o), r, ar = [], e;
20
+ try {
21
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
22
+ }
23
+ catch (error) { e = { error: error }; }
24
+ finally {
25
+ try {
26
+ if (r && !r.done && (m = i["return"])) m.call(i);
27
+ }
28
+ finally { if (e) throw e.error; }
29
+ }
30
+ return ar;
31
+ };
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ /**
34
+ * The goal of these tests is to verify that the CLI help output is shown correctly
35
+ * in various scenarios, including when no verb is provided, when the help verb
36
+ * is explicitly requested, and when help for a specific verb is requested.
37
+ */
38
+ var globals_1 = require("@jest/globals");
39
+ var HelpStrings_1 = require("../../../Constants/HelpStrings");
40
+ var VerbRegistry_1 = require("../../../Constants/VerbRegistry");
41
+ var testHelpers_1 = require("../../helpers/testHelpers");
42
+ var e2eTestHelpers_1 = require("../../helpers/e2eTestHelpers");
43
+ var e2eConfig_1 = require("../e2eConfig");
44
+ var TEST_FOLDER_NAME = 'cliHelpTests';
45
+ // Central list of verbs whose --help we want to validate.
46
+ // '' represents "no verb" (top-level/global help).
47
+ var VERBS_UNDER_TEST = [
48
+ {
49
+ verb: '',
50
+ usage: 'Usage: power-apps [option] [command] [<args>]',
51
+ expectedText: HelpStrings_1.HelpStrings.Global.ProgramDescription,
52
+ },
53
+ {
54
+ verb: 'init',
55
+ usage: 'Usage: power-apps init',
56
+ expectedText: HelpStrings_1.HelpStrings.Verbs.Init.Description,
57
+ options: HelpStrings_1.HelpStrings.Verbs.Init.Options,
58
+ },
59
+ {
60
+ verb: 'add-data-source',
61
+ usage: 'Usage: power-apps add-data-source',
62
+ expectedText: HelpStrings_1.HelpStrings.Verbs['Add-data-source'].Description,
63
+ options: HelpStrings_1.HelpStrings.Verbs['Add-data-source'].Options,
64
+ },
65
+ {
66
+ verb: 'delete-data-source',
67
+ usage: 'Usage: power-apps delete-data-source',
68
+ expectedText: HelpStrings_1.HelpStrings.Verbs['Delete-data-source'].Description,
69
+ options: HelpStrings_1.HelpStrings.Verbs['Delete-data-source'].Options,
70
+ },
71
+ {
72
+ verb: 'list-codeapps',
73
+ usage: 'Usage: power-apps list-codeapps',
74
+ expectedText: HelpStrings_1.HelpStrings.Verbs['List-codeapps'].Description,
75
+ },
76
+ {
77
+ verb: 'list-sqlStoredProcedures',
78
+ usage: 'Usage: power-apps list-sqlStoredProcedures',
79
+ expectedText: HelpStrings_1.HelpStrings.Verbs['List-sqlStoredProcedures'].Description,
80
+ options: HelpStrings_1.HelpStrings.Verbs['List-sqlStoredProcedures'].Options,
81
+ },
82
+ {
83
+ verb: 'list-datasets',
84
+ usage: 'Usage: power-apps list-datasets',
85
+ expectedText: HelpStrings_1.HelpStrings.Verbs['List-datasets'].Description,
86
+ options: HelpStrings_1.HelpStrings.Verbs['List-datasets'].Options,
87
+ },
88
+ {
89
+ verb: 'list-tables',
90
+ usage: 'Usage: power-apps list-tables',
91
+ expectedText: HelpStrings_1.HelpStrings.Verbs['List-tables'].Description,
92
+ options: HelpStrings_1.HelpStrings.Verbs['List-tables'].Options,
93
+ },
94
+ {
95
+ verb: 'list-environment-variables',
96
+ usage: 'Usage: power-apps list-environment-variables',
97
+ expectedText: HelpStrings_1.HelpStrings.Verbs['List-environment-variables'].Description,
98
+ options: HelpStrings_1.HelpStrings.Verbs['List-environment-variables'].Options,
99
+ },
100
+ {
101
+ verb: 'list-connection-references',
102
+ usage: 'Usage: power-apps list-connection-references',
103
+ expectedText: HelpStrings_1.HelpStrings.Verbs['List-connection-references'].Description,
104
+ options: HelpStrings_1.HelpStrings.Verbs['List-connection-references'].Options,
105
+ },
106
+ {
107
+ verb: 'logout',
108
+ usage: 'Usage: power-apps logout',
109
+ expectedText: HelpStrings_1.HelpStrings.Verbs.Logout.Description,
110
+ },
111
+ {
112
+ verb: 'push',
113
+ usage: 'Usage: power-apps push',
114
+ expectedText: HelpStrings_1.HelpStrings.Verbs.Push.Description,
115
+ options: HelpStrings_1.HelpStrings.Verbs.Push.Options,
116
+ },
117
+ {
118
+ verb: 'run',
119
+ usage: 'Usage: power-apps run',
120
+ expectedText: HelpStrings_1.HelpStrings.Verbs.Run.Description,
121
+ options: HelpStrings_1.HelpStrings.Verbs.Run.Options,
122
+ },
123
+ ];
124
+ (0, e2eTestHelpers_1.describeE2E)('power-apps help output', function () {
125
+ var testSetup;
126
+ var originalEnv = __assign({}, process.env);
127
+ (0, globals_1.beforeEach)(function () {
128
+ process.env = __assign({}, originalEnv);
129
+ });
130
+ (0, globals_1.beforeAll)(function () {
131
+ testSetup = (0, testHelpers_1.setupE2eTest)({
132
+ tempBaseDir: e2eConfig_1.E2E_CONFIG.tempBaseDir,
133
+ testFolderName: TEST_FOLDER_NAME,
134
+ });
135
+ });
136
+ (0, globals_1.afterAll)(function () {
137
+ process.env = originalEnv;
138
+ testSetup.cleanup();
139
+ });
140
+ (0, globals_1.it)('shows help when no verb is passed', function () {
141
+ var _a = testSetup.execute('', []), stdout = _a.stdout, stderr = _a.stderr;
142
+ (0, globals_1.expect)(stderr).toBe('');
143
+ (0, globals_1.expect)(stdout.length).toBeGreaterThan(0);
144
+ (0, globals_1.expect)((0, testHelpers_1.normalizeWhitespace)(stdout)).toContain((0, testHelpers_1.normalizeWhitespace)(HelpStrings_1.HelpStrings.Global.ProgramDescription));
145
+ });
146
+ (0, globals_1.it)('global help includes global option descriptions', function () {
147
+ var stdout = testSetup.execute('', ['--help']).stdout;
148
+ var normalizedOutput = (0, testHelpers_1.normalizeWhitespace)(stdout);
149
+ (0, globals_1.expect)(normalizedOutput).toContain("Usage: power-apps [option] [command] [<args>]\n\nPower Apps CLI for managing Power Apps code apps.\n\nOptions:\n -v, --version output the current version\n -h, --help display help for command");
150
+ });
151
+ (0, globals_1.it)('global help includes verb table with all verbs', function () {
152
+ var stdout = testSetup.execute('', ['--help']).stdout;
153
+ // Verify the "Available Commands:" header appears
154
+ (0, globals_1.expect)(stdout).toContain('Available Commands:');
155
+ (0, globals_1.expect)(stdout).toContain('Command');
156
+ (0, globals_1.expect)(stdout).toContain('Description');
157
+ // Verify each verb from the registry appears in the help output
158
+ // Note: VERB_REGISTRY is guaranteed to be complete via compile-time type checks
159
+ Object.entries(VerbRegistry_1.VERB_HELP_REGISTRY).forEach(function (_a) {
160
+ var _b = __read(_a, 2), verb = _b[0], verbMetadata = _b[1];
161
+ (0, globals_1.expect)(stdout).toContain(verb);
162
+ (0, globals_1.expect)(stdout).toContain(verbMetadata.description);
163
+ });
164
+ });
165
+ (0, globals_1.describe)('--help for each verb', function () {
166
+ globals_1.it.each(VERBS_UNDER_TEST)('prints help for %s', function (_a) {
167
+ var verb = _a.verb, usage = _a.usage, expectedText = _a.expectedText, options = _a.options;
168
+ var _b = verb === '' ? testSetup.execute('', ['--help']) : testSetup.execute(verb, ['--help']), stdout = _b.stdout, stderr = _b.stderr;
169
+ (0, globals_1.expect)(stderr).toBe('');
170
+ (0, globals_1.expect)(stdout.length).toBeGreaterThan(0);
171
+ // Verify the expected usage line appears in help output.
172
+ (0, globals_1.expect)(stdout).toContain(usage);
173
+ var normalizedOutput = (0, testHelpers_1.normalizeWhitespace)(stdout);
174
+ // Verify the expected description text appears in help output.
175
+ if (expectedText) {
176
+ (0, globals_1.expect)(normalizedOutput).toContain((0, testHelpers_1.normalizeWhitespace)(expectedText));
177
+ }
178
+ // Verify all option descriptions appear in help output.
179
+ if (options) {
180
+ Object.values(options).forEach(function (optionDesc) {
181
+ (0, globals_1.expect)(normalizedOutput).toContain((0, testHelpers_1.normalizeWhitespace)(optionDesc));
182
+ });
183
+ }
184
+ });
185
+ });
186
+ });
187
+ //# sourceMappingURL=cliHelp.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliHelp.test.js","sourceRoot":"","sources":["../../../../src/__tests__/E2eTests/cliUsability/cliHelp.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logoutReauth.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/E2eTests/cliUsability/logoutReauth.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (C) Microsoft Corporation. All rights reserved.
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ /**
30
+ * E2E Tests: CLI Usability - Logout and Reauthentication
31
+ *
32
+ * Tests that the CLI properly handles logout and subsequent commands that require auth.
33
+ * Test Case: TC 35840928 - Logout Requires Reauthentication
34
+ */
35
+ var globals_1 = require("@jest/globals");
36
+ var fs = __importStar(require("fs"));
37
+ var path = __importStar(require("path"));
38
+ var e2eTestHelpers_1 = require("../../helpers/e2eTestHelpers");
39
+ var testHelpers_1 = require("../../helpers/testHelpers");
40
+ var e2eConfig_1 = require("../e2eConfig");
41
+ var TEST_FOLDER_NAME = 'logoutReauthTests';
42
+ (0, e2eTestHelpers_1.describeE2E)('CLI Usability - Logout and Reauthentication (TC: 35840928)', function () {
43
+ var testSetup;
44
+ (0, globals_1.beforeAll)(function () {
45
+ testSetup = (0, testHelpers_1.setupE2eTest)({
46
+ testFolderName: TEST_FOLDER_NAME,
47
+ tempBaseDir: e2eConfig_1.E2E_CONFIG.tempBaseDir,
48
+ });
49
+ });
50
+ (0, globals_1.afterAll)(function () {
51
+ testSetup.cleanup();
52
+ });
53
+ (0, globals_1.describe)('logout command behavior', function () {
54
+ (0, globals_1.it)('logout reports success or no user found', function () {
55
+ var result = testSetup.execute('logout', []);
56
+ // Logout should succeed with one of two messages
57
+ (0, globals_1.expect)(result.stdout.includes('Successfully logged out') || result.stdout.includes('No user found')).toBe(true);
58
+ (0, globals_1.expect)(result.stderr).toBe('');
59
+ });
60
+ (0, globals_1.it)('logout is idempotent - running twice does not error', function () {
61
+ // First logout
62
+ var result1 = testSetup.execute('logout', []);
63
+ (0, globals_1.expect)(result1.stderr).toBe('');
64
+ (0, globals_1.expect)(result1.exitCode).toBe(0);
65
+ // Second logout should also succeed
66
+ var result2 = testSetup.execute('logout', []);
67
+ (0, globals_1.expect)(result2.stderr).toBe('');
68
+ (0, globals_1.expect)(result2.exitCode).toBe(0);
69
+ });
70
+ });
71
+ (0, globals_1.describe)('commands after logout require reauthentication', function () {
72
+ // with the CI setup using service principal auth, these commands should succeed automatically
73
+ (0, globals_1.beforeAll)(function () {
74
+ // Ensure we're logged out
75
+ testSetup.execute('logout', []);
76
+ // Verify no user is cached by checking auth cache directory doesn't exist
77
+ var authCacheDir = (0, testHelpers_1.getAuthCachePath)(testSetup);
78
+ if (fs.existsSync(authCacheDir)) {
79
+ throw new Error("Auth cache directory still exists after logout: ".concat(authCacheDir));
80
+ }
81
+ // Create a power.config.json for commands that need it
82
+ (0, testHelpers_1.writeMinimalConfig)(testSetup, {
83
+ region: e2eConfig_1.E2E_CONFIG.region,
84
+ environmentId: e2eConfig_1.E2E_CONFIG.environmentId,
85
+ });
86
+ });
87
+ (0, globals_1.it)('list-codeapps after logout succeeds with service principal', function () {
88
+ // After logout, list-codeapps should succeed if using service principal auth (E2E test mode)
89
+ var result = testSetup.execute('list-codeapps', []);
90
+ (0, globals_1.expect)(result.exitCode).toBe(0);
91
+ (0, globals_1.expect)(result.stderr).toBe('');
92
+ (0, globals_1.expect)(result.stdout).toBe('');
93
+ });
94
+ (0, globals_1.it)('add-data-source after logout succeeds with service principal', function () {
95
+ // After logout, add-data-source should succeed if using service principal auth (E2E test mode)
96
+ var result = testSetup.execute('add-data-source', [
97
+ '--apiId',
98
+ 'dataverse',
99
+ '--resourceName',
100
+ 'contact',
101
+ ]);
102
+ (0, globals_1.expect)(result.exitCode).toBe(0);
103
+ (0, globals_1.expect)(result.stderr).toBe('');
104
+ (0, globals_1.expect)(result.stdout).toBe('');
105
+ });
106
+ });
107
+ (0, globals_1.describe)('logout clears cached credentials', function () {
108
+ (0, globals_1.it)('auth cache directory is cleared after logout', function () {
109
+ // This test verifies the implementation detail from Logout.ts
110
+ // AUTH_CACHE_DIRECTORY is CLI_CONFIG_DIRECTORY/cache/auth
111
+ var authCacheDir = (0, testHelpers_1.getAuthCachePath)(testSetup);
112
+ // Create the auth cache directory to simulate a logged-in user
113
+ fs.mkdirSync(authCacheDir, { recursive: true });
114
+ // Add a dummy cache file
115
+ fs.writeFileSync(path.join(authCacheDir, 'token-cache.json'), '{}');
116
+ (0, globals_1.expect)(fs.existsSync(authCacheDir)).toBe(true);
117
+ // Run logout - should clear the directory
118
+ var logoutResult = testSetup.execute('logout', []);
119
+ (0, globals_1.expect)(logoutResult.stderr).toBe('');
120
+ (0, globals_1.expect)(logoutResult.stdout.includes('Successfully logged out')).toBe(true);
121
+ // Verify the auth cache directory is removed
122
+ (0, globals_1.expect)(fs.existsSync(authCacheDir)).toBe(false);
123
+ });
124
+ (0, globals_1.it)('logout reports no user when auth cache does not exist', function () {
125
+ var authCacheDir = (0, testHelpers_1.getAuthCachePath)(testSetup);
126
+ // Ensure auth cache doesn't exist
127
+ if (fs.existsSync(authCacheDir)) {
128
+ fs.rmSync(authCacheDir, { recursive: true, force: true });
129
+ }
130
+ (0, globals_1.expect)(fs.existsSync(authCacheDir)).toBe(false);
131
+ // Run logout - should report no user
132
+ var logoutResult = testSetup.execute('logout', []);
133
+ (0, globals_1.expect)(logoutResult.stderr).toBe('');
134
+ (0, globals_1.expect)(logoutResult.stdout.includes('No user found')).toBe(true);
135
+ // Directory should still not exist
136
+ (0, globals_1.expect)(fs.existsSync(authCacheDir)).toBe(false);
137
+ });
138
+ });
139
+ });
140
+ //# sourceMappingURL=logoutReauth.test.js.map