@sembix/cli 1.3.0 → 1.4.1
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/COMMANDS.md +1522 -0
- package/QUICKSTART.md +829 -0
- package/README.md +1949 -285
- package/USAGE-EXAMPLES.md +872 -0
- package/dist/commands/configure.d.ts.map +1 -1
- package/dist/commands/configure.js +172 -2
- package/dist/commands/configure.js.map +1 -1
- package/dist/commands/index.d.ts +10 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +11 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/login.d.ts +19 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +118 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +21 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +66 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/profile-project.d.ts +14 -0
- package/dist/commands/profile-project.d.ts.map +1 -0
- package/dist/commands/profile-project.js +123 -0
- package/dist/commands/profile-project.js.map +1 -0
- package/dist/commands/profile.d.ts +26 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +177 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/project.d.ts +16 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +153 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/setup.js +1 -1
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/update.js +2 -2
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/workflow.d.ts +91 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +1201 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/config-schema.d.ts +23 -0
- package/dist/config-schema.d.ts.map +1 -1
- package/dist/config-schema.js +21 -1
- package/dist/config-schema.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +23 -2
- package/dist/config.js.map +1 -1
- package/dist/index.js +318 -1
- package/dist/index.js.map +1 -1
- package/dist/prompts/project-selection.d.ts +8 -0
- package/dist/prompts/project-selection.d.ts.map +1 -0
- package/dist/prompts/project-selection.js +132 -0
- package/dist/prompts/project-selection.js.map +1 -0
- package/dist/prompts/workflow-inputs.d.ts +10 -0
- package/dist/prompts/workflow-inputs.d.ts.map +1 -0
- package/dist/prompts/workflow-inputs.js +71 -0
- package/dist/prompts/workflow-inputs.js.map +1 -0
- package/dist/prompts/workflow-selection.d.ts +8 -0
- package/dist/prompts/workflow-selection.d.ts.map +1 -0
- package/dist/prompts/workflow-selection.js +147 -0
- package/dist/prompts/workflow-selection.js.map +1 -0
- package/dist/sembix-cli-1.4.1.tgz +0 -0
- package/dist/services/cognito-auth.d.ts +92 -0
- package/dist/services/cognito-auth.d.ts.map +1 -0
- package/dist/services/cognito-auth.js +319 -0
- package/dist/services/cognito-auth.js.map +1 -0
- package/dist/services/studio-api-client.d.ts +127 -0
- package/dist/services/studio-api-client.d.ts.map +1 -0
- package/dist/services/studio-api-client.js +291 -0
- package/dist/services/studio-api-client.js.map +1 -0
- package/dist/types/studio.d.ts +82 -0
- package/dist/types/studio.d.ts.map +1 -0
- package/dist/types/studio.js +7 -0
- package/dist/types/studio.js.map +1 -0
- package/dist/types.d.ts +283 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/browser-auth.d.ts +45 -0
- package/dist/utils/browser-auth.d.ts.map +1 -0
- package/dist/utils/browser-auth.js +168 -0
- package/dist/utils/browser-auth.js.map +1 -0
- package/dist/utils/cognito-auth.d.ts +3 -0
- package/dist/utils/cognito-auth.d.ts.map +1 -0
- package/dist/utils/cognito-auth.js +3 -0
- package/dist/utils/cognito-auth.js.map +1 -0
- package/dist/utils/config-file.d.ts +40 -0
- package/dist/utils/config-file.d.ts.map +1 -1
- package/dist/utils/config-file.js +158 -4
- package/dist/utils/config-file.js.map +1 -1
- package/dist/utils/environment.d.ts +22 -0
- package/dist/utils/environment.d.ts.map +1 -0
- package/dist/utils/environment.js +39 -0
- package/dist/utils/environment.js.map +1 -0
- package/dist/utils/error-handler.d.ts +53 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +174 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/fuzzy-match.d.ts +31 -0
- package/dist/utils/fuzzy-match.d.ts.map +1 -0
- package/dist/utils/fuzzy-match.js +138 -0
- package/dist/utils/fuzzy-match.js.map +1 -0
- package/dist/utils/github.d.ts +2 -2
- package/dist/utils/github.d.ts.map +1 -1
- package/dist/utils/github.js +30 -10
- package/dist/utils/github.js.map +1 -1
- package/dist/utils/input-parser.d.ts +14 -0
- package/dist/utils/input-parser.d.ts.map +1 -0
- package/dist/utils/input-parser.js +34 -0
- package/dist/utils/input-parser.js.map +1 -0
- package/dist/utils/output.d.ts +55 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +80 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/recent-workflows.d.ts +37 -0
- package/dist/utils/recent-workflows.d.ts.map +1 -0
- package/dist/utils/recent-workflows.js +172 -0
- package/dist/utils/recent-workflows.js.map +1 -0
- package/dist/utils/studio-api-client.d.ts +3 -0
- package/dist/utils/studio-api-client.d.ts.map +1 -0
- package/dist/utils/studio-api-client.js +3 -0
- package/dist/utils/studio-api-client.js.map +1 -0
- package/dist/utils/studio-api.d.ts +53 -0
- package/dist/utils/studio-api.d.ts.map +1 -0
- package/dist/utils/studio-api.js +102 -0
- package/dist/utils/studio-api.js.map +1 -0
- package/dist/utils/studio-config.d.ts +74 -0
- package/dist/utils/studio-config.d.ts.map +1 -0
- package/dist/utils/studio-config.js +213 -0
- package/dist/utils/studio-config.js.map +1 -0
- package/dist/utils/token-manager.d.ts +4 -0
- package/dist/utils/token-manager.d.ts.map +1 -0
- package/dist/utils/token-manager.js +3 -0
- package/dist/utils/token-manager.js.map +1 -0
- package/dist/utils/ui.d.ts +55 -1
- package/dist/utils/ui.d.ts.map +1 -1
- package/dist/utils/ui.js +151 -2
- package/dist/utils/ui.js.map +1 -1
- package/package.json +4 -1
- package/dist/__tests__/config-schema.test.d.ts +0 -2
- package/dist/__tests__/config-schema.test.d.ts.map +0 -1
- package/dist/__tests__/config-schema.test.js +0 -471
- package/dist/__tests__/config-schema.test.js.map +0 -1
- package/dist/__tests__/config.test.d.ts +0 -2
- package/dist/__tests__/config.test.d.ts.map +0 -1
- package/dist/__tests__/config.test.js +0 -75
- package/dist/__tests__/config.test.js.map +0 -1
- package/dist/__tests__/integration/configure.test.d.ts +0 -2
- package/dist/__tests__/integration/configure.test.d.ts.map +0 -1
- package/dist/__tests__/integration/configure.test.js +0 -247
- package/dist/__tests__/integration/configure.test.js.map +0 -1
- package/dist/__tests__/integration/fixtures/configs.d.ts +0 -477
- package/dist/__tests__/integration/fixtures/configs.d.ts.map +0 -1
- package/dist/__tests__/integration/fixtures/configs.js +0 -175
- package/dist/__tests__/integration/fixtures/configs.js.map +0 -1
- package/dist/__tests__/integration/helpers/cli-runner.d.ts +0 -63
- package/dist/__tests__/integration/helpers/cli-runner.d.ts.map +0 -1
- package/dist/__tests__/integration/helpers/cli-runner.js +0 -152
- package/dist/__tests__/integration/helpers/cli-runner.js.map +0 -1
- package/dist/__tests__/integration/helpers/command-runner.d.ts +0 -53
- package/dist/__tests__/integration/helpers/command-runner.d.ts.map +0 -1
- package/dist/__tests__/integration/helpers/command-runner.js +0 -117
- package/dist/__tests__/integration/helpers/command-runner.js.map +0 -1
- package/dist/__tests__/integration/studio-create.test.d.ts +0 -2
- package/dist/__tests__/integration/studio-create.test.d.ts.map +0 -1
- package/dist/__tests__/integration/studio-create.test.js +0 -209
- package/dist/__tests__/integration/studio-create.test.js.map +0 -1
- package/dist/__tests__/integration/studio-update.test.d.ts +0 -2
- package/dist/__tests__/integration/studio-update.test.d.ts.map +0 -1
- package/dist/__tests__/integration/studio-update.test.js +0 -166
- package/dist/__tests__/integration/studio-update.test.js.map +0 -1
- package/dist/commands/__tests__/configure.test.d.ts +0 -2
- package/dist/commands/__tests__/configure.test.d.ts.map +0 -1
- package/dist/commands/__tests__/configure.test.js +0 -229
- package/dist/commands/__tests__/configure.test.js.map +0 -1
- package/dist/prompts/__tests__/environment-setup.test.d.ts +0 -2
- package/dist/prompts/__tests__/environment-setup.test.d.ts.map +0 -1
- package/dist/prompts/__tests__/environment-setup.test.js +0 -206
- package/dist/prompts/__tests__/environment-setup.test.js.map +0 -1
- package/dist/prompts/__tests__/hub-integration.test.d.ts +0 -2
- package/dist/prompts/__tests__/hub-integration.test.d.ts.map +0 -1
- package/dist/prompts/__tests__/hub-integration.test.js +0 -126
- package/dist/prompts/__tests__/hub-integration.test.js.map +0 -1
- package/dist/prompts/__tests__/prompt-helpers.test.d.ts +0 -2
- package/dist/prompts/__tests__/prompt-helpers.test.d.ts.map +0 -1
- package/dist/prompts/__tests__/prompt-helpers.test.js +0 -235
- package/dist/prompts/__tests__/prompt-helpers.test.js.map +0 -1
- package/dist/sembix-cli-1.3.0.tgz +0 -0
- package/dist/utils/__tests__/config-file.test.d.ts +0 -2
- package/dist/utils/__tests__/config-file.test.d.ts.map +0 -1
- package/dist/utils/__tests__/config-file.test.js +0 -218
- package/dist/utils/__tests__/config-file.test.js.map +0 -1
- package/dist/utils/__tests__/config-loader.test.d.ts +0 -2
- package/dist/utils/__tests__/config-loader.test.d.ts.map +0 -1
- package/dist/utils/__tests__/config-loader.test.js +0 -325
- package/dist/utils/__tests__/config-loader.test.js.map +0 -1
- package/dist/utils/__tests__/github.test.d.ts +0 -2
- package/dist/utils/__tests__/github.test.d.ts.map +0 -1
- package/dist/utils/__tests__/github.test.js +0 -282
- package/dist/utils/__tests__/github.test.js.map +0 -1
- package/dist/utils/__tests__/ui.test.d.ts +0 -2
- package/dist/utils/__tests__/ui.test.d.ts.map +0 -1
- package/dist/utils/__tests__/ui.test.js +0 -256
- package/dist/utils/__tests__/ui.test.js.map +0 -1
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Helper utilities for running CLI commands in integration tests
|
|
3
|
-
*/
|
|
4
|
-
export interface CLIResult {
|
|
5
|
-
exitCode: number;
|
|
6
|
-
stdout: string;
|
|
7
|
-
stderr: string;
|
|
8
|
-
duration: number;
|
|
9
|
-
}
|
|
10
|
-
export interface CLIOptions {
|
|
11
|
-
cwd?: string;
|
|
12
|
-
env?: Record<string, string>;
|
|
13
|
-
timeout?: number;
|
|
14
|
-
input?: string;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Run the CLI with given arguments
|
|
18
|
-
*/
|
|
19
|
-
export declare function runCLI(args: string[], options?: CLIOptions): Promise<CLIResult>;
|
|
20
|
-
/**
|
|
21
|
-
* Create a temporary YAML config file
|
|
22
|
-
*/
|
|
23
|
-
export declare function createTempConfigFile(config: Record<string, unknown>): Promise<string>;
|
|
24
|
-
/**
|
|
25
|
-
* Clean up temporary config file
|
|
26
|
-
*/
|
|
27
|
-
export declare function removeTempConfigFile(filePath: string): Promise<void>;
|
|
28
|
-
/**
|
|
29
|
-
* Run CLI command with config file
|
|
30
|
-
*/
|
|
31
|
-
export declare function runCLIWithConfig(command: string[], config: Record<string, unknown>, options?: CLIOptions): Promise<{
|
|
32
|
-
result: CLIResult;
|
|
33
|
-
configPath: string;
|
|
34
|
-
}>;
|
|
35
|
-
/**
|
|
36
|
-
* Extract environment name from CLI output
|
|
37
|
-
*/
|
|
38
|
-
export declare function extractEnvironmentName(output: string): string | null;
|
|
39
|
-
/**
|
|
40
|
-
* Extract repository from CLI output
|
|
41
|
-
*/
|
|
42
|
-
export declare function extractRepository(output: string): string | null;
|
|
43
|
-
/**
|
|
44
|
-
* Check if output contains success message
|
|
45
|
-
*/
|
|
46
|
-
export declare function hasSuccessMessage(output: string): boolean;
|
|
47
|
-
/**
|
|
48
|
-
* Check if output contains error message
|
|
49
|
-
*/
|
|
50
|
-
export declare function hasErrorMessage(output: string): boolean;
|
|
51
|
-
/**
|
|
52
|
-
* Extract validation errors from output
|
|
53
|
-
*/
|
|
54
|
-
export declare function extractValidationErrors(output: string): string[];
|
|
55
|
-
/**
|
|
56
|
-
* Mock GitHub token for tests
|
|
57
|
-
*/
|
|
58
|
-
export declare const TEST_GITHUB_TOKEN = "ghp_test_token_1234567890abcdefghijklmnopqrstu";
|
|
59
|
-
/**
|
|
60
|
-
* Create environment variables for test
|
|
61
|
-
*/
|
|
62
|
-
export declare function createTestEnv(overrides?: Record<string, string>): Record<string, string>;
|
|
63
|
-
//# sourceMappingURL=cli-runner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-runner.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/integration/helpers/cli-runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CA6DzF;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAI3F;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAUpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG/D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAWhE;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,mDAAmD,CAAC;AAElF;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM5F"}
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Helper utilities for running CLI commands in integration tests
|
|
3
|
-
*/
|
|
4
|
-
import { spawn } from 'child_process';
|
|
5
|
-
import { join } from 'path';
|
|
6
|
-
import { writeFile, unlink } from 'fs/promises';
|
|
7
|
-
import { tmpdir } from 'os';
|
|
8
|
-
import yaml from 'js-yaml';
|
|
9
|
-
/**
|
|
10
|
-
* Run the CLI with given arguments
|
|
11
|
-
*/
|
|
12
|
-
export async function runCLI(args, options = {}) {
|
|
13
|
-
const startTime = Date.now();
|
|
14
|
-
const cwd = options.cwd || process.cwd();
|
|
15
|
-
const env = {
|
|
16
|
-
...process.env,
|
|
17
|
-
...(options.env || {}),
|
|
18
|
-
// Disable colors for easier assertion
|
|
19
|
-
NO_COLOR: '1',
|
|
20
|
-
FORCE_COLOR: '0',
|
|
21
|
-
};
|
|
22
|
-
return new Promise((resolve) => {
|
|
23
|
-
const child = spawn('node', ['dist/index.js', ...args], {
|
|
24
|
-
cwd,
|
|
25
|
-
env,
|
|
26
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
27
|
-
});
|
|
28
|
-
let stdout = '';
|
|
29
|
-
let stderr = '';
|
|
30
|
-
child.stdout?.on('data', (data) => {
|
|
31
|
-
stdout += data.toString();
|
|
32
|
-
});
|
|
33
|
-
child.stderr?.on('data', (data) => {
|
|
34
|
-
stderr += data.toString();
|
|
35
|
-
});
|
|
36
|
-
// Handle input for interactive prompts
|
|
37
|
-
if (options.input && child.stdin) {
|
|
38
|
-
child.stdin.write(options.input);
|
|
39
|
-
child.stdin.end();
|
|
40
|
-
}
|
|
41
|
-
// Set timeout
|
|
42
|
-
const timeout = options.timeout || 30000;
|
|
43
|
-
const timeoutId = setTimeout(() => {
|
|
44
|
-
child.kill('SIGTERM');
|
|
45
|
-
}, timeout);
|
|
46
|
-
child.on('close', (code) => {
|
|
47
|
-
clearTimeout(timeoutId);
|
|
48
|
-
resolve({
|
|
49
|
-
exitCode: code || 0,
|
|
50
|
-
stdout,
|
|
51
|
-
stderr,
|
|
52
|
-
duration: Date.now() - startTime,
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
child.on('error', (error) => {
|
|
56
|
-
clearTimeout(timeoutId);
|
|
57
|
-
resolve({
|
|
58
|
-
exitCode: 1,
|
|
59
|
-
stdout,
|
|
60
|
-
stderr: stderr + error.message,
|
|
61
|
-
duration: Date.now() - startTime,
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Create a temporary YAML config file
|
|
68
|
-
*/
|
|
69
|
-
export async function createTempConfigFile(config) {
|
|
70
|
-
const tempFile = join(tmpdir(), `sembix-test-${Date.now()}-${Math.random().toString(36).slice(2)}.yaml`);
|
|
71
|
-
await writeFile(tempFile, yaml.dump(config), 'utf-8');
|
|
72
|
-
return tempFile;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Clean up temporary config file
|
|
76
|
-
*/
|
|
77
|
-
export async function removeTempConfigFile(filePath) {
|
|
78
|
-
try {
|
|
79
|
-
await unlink(filePath);
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
// Ignore errors if file doesn't exist
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Run CLI command with config file
|
|
87
|
-
*/
|
|
88
|
-
export async function runCLIWithConfig(command, config, options = {}) {
|
|
89
|
-
const configPath = await createTempConfigFile(config);
|
|
90
|
-
try {
|
|
91
|
-
const result = await runCLI([...command, '--config', configPath], options);
|
|
92
|
-
return { result, configPath };
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
await removeTempConfigFile(configPath);
|
|
96
|
-
throw error;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Extract environment name from CLI output
|
|
101
|
-
*/
|
|
102
|
-
export function extractEnvironmentName(output) {
|
|
103
|
-
const match = output.match(/Environment:\s+(\S+)/);
|
|
104
|
-
return match ? match[1] : null;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Extract repository from CLI output
|
|
108
|
-
*/
|
|
109
|
-
export function extractRepository(output) {
|
|
110
|
-
const match = output.match(/Repository:\s+(\S+\/\S+)/);
|
|
111
|
-
return match ? match[1] : null;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Check if output contains success message
|
|
115
|
-
*/
|
|
116
|
-
export function hasSuccessMessage(output) {
|
|
117
|
-
return output.includes('✓') || output.includes('successfully') || output.includes('Success');
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Check if output contains error message
|
|
121
|
-
*/
|
|
122
|
-
export function hasErrorMessage(output) {
|
|
123
|
-
return output.includes('✗') || output.includes('Error') || output.includes('failed');
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Extract validation errors from output
|
|
127
|
-
*/
|
|
128
|
-
export function extractValidationErrors(output) {
|
|
129
|
-
const errors = [];
|
|
130
|
-
const lines = output.split('\n');
|
|
131
|
-
for (const line of lines) {
|
|
132
|
-
if (line.includes('•') && (line.includes('Error') || line.includes('Invalid') || line.includes('Must'))) {
|
|
133
|
-
errors.push(line.trim());
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return errors;
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Mock GitHub token for tests
|
|
140
|
-
*/
|
|
141
|
-
export const TEST_GITHUB_TOKEN = 'ghp_test_token_1234567890abcdefghijklmnopqrstu';
|
|
142
|
-
/**
|
|
143
|
-
* Create environment variables for test
|
|
144
|
-
*/
|
|
145
|
-
export function createTestEnv(overrides = {}) {
|
|
146
|
-
return {
|
|
147
|
-
GITHUB_TOKEN: TEST_GITHUB_TOKEN,
|
|
148
|
-
NODE_ENV: 'test',
|
|
149
|
-
...overrides,
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
//# sourceMappingURL=cli-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-runner.js","sourceRoot":"","sources":["../../../../src/__tests__/integration/helpers/cli-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Command Runner for Integration Tests
|
|
3
|
-
*
|
|
4
|
-
* This helper runs CLI commands directly by importing and calling command functions,
|
|
5
|
-
* rather than spawning separate processes. This allows mocks to work properly while
|
|
6
|
-
* still testing the full command flow.
|
|
7
|
-
*/
|
|
8
|
-
import { removeTempConfigFile } from './cli-runner.js';
|
|
9
|
-
interface CommandResult {
|
|
10
|
-
success: boolean;
|
|
11
|
-
error?: Error;
|
|
12
|
-
stdout: string;
|
|
13
|
-
stderr: string;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Run 'studio create' command with config file
|
|
17
|
-
*/
|
|
18
|
-
export declare function runCreateWithConfig(config: Record<string, unknown>, environmentName?: string, options?: {
|
|
19
|
-
token?: string;
|
|
20
|
-
}): Promise<CommandResult & {
|
|
21
|
-
configPath: string;
|
|
22
|
-
}>;
|
|
23
|
-
/**
|
|
24
|
-
* Run 'studio create' command with CLI flags only
|
|
25
|
-
*/
|
|
26
|
-
export declare function runCreateWithFlags(environmentName: string, flags: Record<string, unknown>, token?: string): Promise<CommandResult>;
|
|
27
|
-
/**
|
|
28
|
-
* Run 'studio update' command with config file
|
|
29
|
-
*/
|
|
30
|
-
export declare function runUpdateWithConfig(config: Record<string, unknown>, environmentName: string, options?: {
|
|
31
|
-
token?: string;
|
|
32
|
-
repo?: string;
|
|
33
|
-
}): Promise<CommandResult & {
|
|
34
|
-
configPath: string;
|
|
35
|
-
}>;
|
|
36
|
-
/**
|
|
37
|
-
* Run 'studio update' command with CLI flags
|
|
38
|
-
*/
|
|
39
|
-
export declare function runUpdateWithFlags(environmentName: string, flags: Record<string, unknown>, token?: string): Promise<CommandResult>;
|
|
40
|
-
/**
|
|
41
|
-
* Helper to check if result indicates success
|
|
42
|
-
*/
|
|
43
|
-
export declare function isSuccess(result: CommandResult): boolean;
|
|
44
|
-
/**
|
|
45
|
-
* Helper to check if result contains error
|
|
46
|
-
*/
|
|
47
|
-
export declare function hasError(result: CommandResult): boolean;
|
|
48
|
-
/**
|
|
49
|
-
* Helper to extract error message
|
|
50
|
-
*/
|
|
51
|
-
export declare function getErrorMessage(result: CommandResult): string;
|
|
52
|
-
export { removeTempConfigFile };
|
|
53
|
-
//# sourceMappingURL=command-runner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-runner.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/integration/helpers/command-runner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAwB,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAqDD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,CAAC,EAAE,MAAM,EACxB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,aAAa,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAajD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,GAAE,MAAqB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,OAAO,CAAC,aAAa,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAajD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,GAAE,MAAqB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAK7D;AAGD,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Command Runner for Integration Tests
|
|
3
|
-
*
|
|
4
|
-
* This helper runs CLI commands directly by importing and calling command functions,
|
|
5
|
-
* rather than spawning separate processes. This allows mocks to work properly while
|
|
6
|
-
* still testing the full command flow.
|
|
7
|
-
*/
|
|
8
|
-
import { createTempConfigFile, removeTempConfigFile } from './cli-runner.js';
|
|
9
|
-
/**
|
|
10
|
-
* Capture console output during command execution
|
|
11
|
-
*/
|
|
12
|
-
function captureConsoleOutput(fn) {
|
|
13
|
-
const stdoutLines = [];
|
|
14
|
-
const stderrLines = [];
|
|
15
|
-
// Save original console methods and process.exit
|
|
16
|
-
const originalLog = console.log;
|
|
17
|
-
const originalError = console.error;
|
|
18
|
-
const originalWarn = console.warn;
|
|
19
|
-
const originalInfo = console.info;
|
|
20
|
-
const originalExit = process.exit;
|
|
21
|
-
let exitCode;
|
|
22
|
-
// Override console methods
|
|
23
|
-
console.log = (...args) => stdoutLines.push(args.join(' '));
|
|
24
|
-
console.error = (...args) => stderrLines.push(args.join(' '));
|
|
25
|
-
console.warn = (...args) => stderrLines.push(args.join(' '));
|
|
26
|
-
console.info = (...args) => stdoutLines.push(args.join(' '));
|
|
27
|
-
// Override process.exit to capture exit code without actually exiting
|
|
28
|
-
process.exit = ((code) => {
|
|
29
|
-
exitCode = code || 0;
|
|
30
|
-
throw new Error(`process.exit(${code})`);
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
|
-
});
|
|
33
|
-
return fn()
|
|
34
|
-
.then(() => ({
|
|
35
|
-
success: true,
|
|
36
|
-
stdout: stdoutLines.join('\n'),
|
|
37
|
-
stderr: stderrLines.join('\n'),
|
|
38
|
-
}))
|
|
39
|
-
.catch((error) => ({
|
|
40
|
-
success: exitCode === 0 || exitCode === undefined,
|
|
41
|
-
error,
|
|
42
|
-
stdout: stdoutLines.join('\n'),
|
|
43
|
-
stderr: stderrLines.join('\n'),
|
|
44
|
-
}))
|
|
45
|
-
.finally(() => {
|
|
46
|
-
// Restore original console methods and process.exit
|
|
47
|
-
console.log = originalLog;
|
|
48
|
-
console.error = originalError;
|
|
49
|
-
console.warn = originalWarn;
|
|
50
|
-
console.info = originalInfo;
|
|
51
|
-
process.exit = originalExit;
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Run 'studio create' command with config file
|
|
56
|
-
*/
|
|
57
|
-
export async function runCreateWithConfig(config, environmentName, options = {}) {
|
|
58
|
-
const { setupEnvironment } = await import('../../../commands/setup.js');
|
|
59
|
-
const configPath = await createTempConfigFile(config);
|
|
60
|
-
const result = await captureConsoleOutput(async () => {
|
|
61
|
-
await setupEnvironment(options.token || 'test-token', environmentName, { config: configPath });
|
|
62
|
-
});
|
|
63
|
-
return { ...result, configPath };
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Run 'studio create' command with CLI flags only
|
|
67
|
-
*/
|
|
68
|
-
export async function runCreateWithFlags(environmentName, flags, token = 'test-token') {
|
|
69
|
-
const { setupEnvironment } = await import('../../../commands/setup.js');
|
|
70
|
-
return captureConsoleOutput(async () => {
|
|
71
|
-
await setupEnvironment(token, environmentName, flags);
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Run 'studio update' command with config file
|
|
76
|
-
*/
|
|
77
|
-
export async function runUpdateWithConfig(config, environmentName, options = {}) {
|
|
78
|
-
const { updateEnvironment } = await import('../../../commands/update.js');
|
|
79
|
-
const configPath = await createTempConfigFile(config);
|
|
80
|
-
const result = await captureConsoleOutput(async () => {
|
|
81
|
-
await updateEnvironment(options.token || 'test-token', environmentName, { config: configPath, repo: options.repo });
|
|
82
|
-
});
|
|
83
|
-
return { ...result, configPath };
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Run 'studio update' command with CLI flags
|
|
87
|
-
*/
|
|
88
|
-
export async function runUpdateWithFlags(environmentName, flags, token = 'test-token') {
|
|
89
|
-
const { updateEnvironment } = await import('../../../commands/update.js');
|
|
90
|
-
return captureConsoleOutput(async () => {
|
|
91
|
-
await updateEnvironment(token, environmentName, flags);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Helper to check if result indicates success
|
|
96
|
-
*/
|
|
97
|
-
export function isSuccess(result) {
|
|
98
|
-
return result.success && !result.error;
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Helper to check if result contains error
|
|
102
|
-
*/
|
|
103
|
-
export function hasError(result) {
|
|
104
|
-
return !result.success || !!result.error;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Helper to extract error message
|
|
108
|
-
*/
|
|
109
|
-
export function getErrorMessage(result) {
|
|
110
|
-
if (result.error) {
|
|
111
|
-
return result.error.message;
|
|
112
|
-
}
|
|
113
|
-
return result.stderr || result.stdout;
|
|
114
|
-
}
|
|
115
|
-
// Re-export cleanup helper
|
|
116
|
-
export { removeTempConfigFile };
|
|
117
|
-
//# sourceMappingURL=command-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-runner.js","sourceRoot":"","sources":["../../../../src/__tests__/integration/helpers/command-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"studio-create.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/integration/studio-create.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
-
import { runCreateWithConfig, runCreateWithFlags, removeTempConfigFile, } from './helpers/command-runner.js';
|
|
3
|
-
import { validMinimalConfig, validFullConfig, validConfigWithHub, invalidConfigs, } from './fixtures/configs.js';
|
|
4
|
-
import { GitHubClient } from '../../utils/github.js';
|
|
5
|
-
// Mock GitHub Client
|
|
6
|
-
vi.mock('../../utils/github.js');
|
|
7
|
-
// Mock prompts to return defaults without hanging
|
|
8
|
-
vi.mock('@inquirer/prompts', () => ({
|
|
9
|
-
input: vi.fn().mockResolvedValue('default-value'),
|
|
10
|
-
select: vi.fn().mockResolvedValue('default-option'),
|
|
11
|
-
confirm: vi.fn().mockResolvedValue(true), // Confirm operations
|
|
12
|
-
password: vi.fn().mockResolvedValue('secret'),
|
|
13
|
-
}));
|
|
14
|
-
// Mock chalk to avoid ANSI codes in tests
|
|
15
|
-
const createChalkMock = () => {
|
|
16
|
-
const mockFn = (str) => str;
|
|
17
|
-
return new Proxy(mockFn, {
|
|
18
|
-
get: () => createChalkMock(),
|
|
19
|
-
apply: (target, thisArg, args) => args[0]
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
vi.mock('chalk', () => ({
|
|
23
|
-
default: createChalkMock()
|
|
24
|
-
}));
|
|
25
|
-
describe('studio create command - Integration Tests', () => {
|
|
26
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
-
let mockGitHubClient;
|
|
28
|
-
beforeEach(() => {
|
|
29
|
-
// Setup GitHub Client mock
|
|
30
|
-
mockGitHubClient = {
|
|
31
|
-
listRepositories: vi.fn().mockResolvedValue([
|
|
32
|
-
{ owner: 'test-org', repo: 'test-repo', full_name: 'test-org/test-repo' },
|
|
33
|
-
]),
|
|
34
|
-
getRepository: vi.fn().mockResolvedValue({
|
|
35
|
-
owner: 'test-org',
|
|
36
|
-
repo: 'test-repo',
|
|
37
|
-
full_name: 'test-org/test-repo',
|
|
38
|
-
}),
|
|
39
|
-
createEnvironment: vi.fn().mockResolvedValue({}),
|
|
40
|
-
environmentExists: vi.fn().mockResolvedValue(false),
|
|
41
|
-
createEnvironmentVariables: vi.fn().mockResolvedValue({}),
|
|
42
|
-
createEnvironmentSecrets: vi.fn().mockResolvedValue({}),
|
|
43
|
-
};
|
|
44
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
|
-
vi.mocked(GitHubClient).mockImplementation(function () {
|
|
46
|
-
return mockGitHubClient;
|
|
47
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
describe('Config File Tests', () => {
|
|
51
|
-
it('should create environment using minimal valid config file', async () => {
|
|
52
|
-
const { success, stdout, configPath } = await runCreateWithConfig(validMinimalConfig, 'test-env');
|
|
53
|
-
await removeTempConfigFile(configPath);
|
|
54
|
-
expect(success).toBe(true);
|
|
55
|
-
expect(stdout).toContain('Configuration file loaded successfully');
|
|
56
|
-
});
|
|
57
|
-
it('should create environment using full config file with all options', async () => {
|
|
58
|
-
const { success, stdout, configPath } = await runCreateWithConfig(validFullConfig, 'test-env');
|
|
59
|
-
await removeTempConfigFile(configPath);
|
|
60
|
-
expect(success).toBe(true);
|
|
61
|
-
expect(stdout).toContain('Configuration file loaded successfully');
|
|
62
|
-
});
|
|
63
|
-
it('should create environment with Hub integration from config', async () => {
|
|
64
|
-
const { success, stdout, configPath } = await runCreateWithConfig(validConfigWithHub, 'test-env');
|
|
65
|
-
await removeTempConfigFile(configPath);
|
|
66
|
-
expect(success).toBe(true);
|
|
67
|
-
expect(stdout).toContain('Hub');
|
|
68
|
-
});
|
|
69
|
-
it('should fail with invalid AWS account ID in config', async () => {
|
|
70
|
-
const { success, stdout, configPath } = await runCreateWithConfig(invalidConfigs.invalidAwsAccountId, 'test-env');
|
|
71
|
-
await removeTempConfigFile(configPath);
|
|
72
|
-
expect(success).toBe(false);
|
|
73
|
-
expect(stdout).toContain('validation failed');
|
|
74
|
-
});
|
|
75
|
-
it('should fail with invalid environment name in config', async () => {
|
|
76
|
-
const { success, stdout, configPath } = await runCreateWithConfig(invalidConfigs.invalidEnvironmentName, 'test-env');
|
|
77
|
-
await removeTempConfigFile(configPath);
|
|
78
|
-
expect(success).toBe(false);
|
|
79
|
-
expect(stdout).toContain('validation failed');
|
|
80
|
-
});
|
|
81
|
-
it('should fail with invalid IAM role ARN in config', async () => {
|
|
82
|
-
const { success, stdout, configPath } = await runCreateWithConfig(invalidConfigs.invalidIamRoleArn, 'test-env');
|
|
83
|
-
await removeTempConfigFile(configPath);
|
|
84
|
-
expect(success).toBe(false);
|
|
85
|
-
expect(stdout).toContain('validation failed');
|
|
86
|
-
});
|
|
87
|
-
it('should fail with non-existent config file', async () => {
|
|
88
|
-
const { setupEnvironment } = await import('../../commands/setup.js');
|
|
89
|
-
await expect(setupEnvironment('test-token', 'test-env', { config: '/nonexistent/config.yaml' })).rejects.toThrow();
|
|
90
|
-
});
|
|
91
|
-
it('should handle YAML parsing errors gracefully', async () => {
|
|
92
|
-
const { setupEnvironment } = await import('../../commands/setup.js');
|
|
93
|
-
const fs = await import('fs/promises');
|
|
94
|
-
const path = await import('path');
|
|
95
|
-
const os = await import('os');
|
|
96
|
-
// Create a temp file with invalid YAML
|
|
97
|
-
const tmpDir = os.tmpdir();
|
|
98
|
-
const invalidYamlPath = path.join(tmpDir, `invalid-${Date.now()}.yaml`);
|
|
99
|
-
await fs.writeFile(invalidYamlPath, 'invalid: yaml: content: [unclosed');
|
|
100
|
-
await expect(setupEnvironment('test-token', 'test-env', { config: invalidYamlPath })).rejects.toThrow();
|
|
101
|
-
// Clean up - use try/catch in case already deleted
|
|
102
|
-
try {
|
|
103
|
-
await fs.unlink(invalidYamlPath);
|
|
104
|
-
}
|
|
105
|
-
catch {
|
|
106
|
-
// File may have been deleted already, ignore
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
describe('CLI Flags Tests', () => {
|
|
111
|
-
it('should create environment using only CLI flags', async () => {
|
|
112
|
-
const { success, stdout } = await runCreateWithFlags('test-env', {
|
|
113
|
-
repo: 'test-org/test-repo',
|
|
114
|
-
awsAccountId: '123456789012',
|
|
115
|
-
awsRegion: 'us-east-1',
|
|
116
|
-
customerRoleArn: 'arn:aws:iam::123456789012:role/test-role',
|
|
117
|
-
terraformStateBucket: 'test-bucket',
|
|
118
|
-
databaseName: 'testdb',
|
|
119
|
-
});
|
|
120
|
-
expect(success).toBe(true);
|
|
121
|
-
expect(stdout).toContain('test-env');
|
|
122
|
-
});
|
|
123
|
-
it('should override config file with CLI flags', async () => {
|
|
124
|
-
const { success, configPath } = await runCreateWithConfig(validMinimalConfig, 'test-env');
|
|
125
|
-
await removeTempConfigFile(configPath);
|
|
126
|
-
expect(success).toBe(true);
|
|
127
|
-
// Note: This test verifies the config was loaded successfully
|
|
128
|
-
// Full override testing would require more complex setup
|
|
129
|
-
});
|
|
130
|
-
it('should fail with invalid AWS account ID flag', async () => {
|
|
131
|
-
const { success } = await runCreateWithFlags('test-env', {
|
|
132
|
-
repo: 'test-org/test-repo',
|
|
133
|
-
awsAccountId: '12345', // Invalid - too short
|
|
134
|
-
awsRegion: 'us-east-1',
|
|
135
|
-
});
|
|
136
|
-
expect(success).toBe(false);
|
|
137
|
-
});
|
|
138
|
-
it('should accept boolean flags correctly', async () => {
|
|
139
|
-
const { success } = await runCreateWithFlags('test-env', {
|
|
140
|
-
repo: 'test-org/test-repo',
|
|
141
|
-
awsAccountId: '123456789012',
|
|
142
|
-
awsRegion: 'us-east-1',
|
|
143
|
-
customerRoleArn: 'arn:aws:iam::123456789012:role/test-role',
|
|
144
|
-
terraformStateBucket: 'test-bucket',
|
|
145
|
-
databaseName: 'testdb',
|
|
146
|
-
enableMemory: true,
|
|
147
|
-
enableNotifications: false,
|
|
148
|
-
});
|
|
149
|
-
expect(success).toBe(true);
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
describe('Environment Name Tests', () => {
|
|
153
|
-
it('should accept environment name as positional argument', async () => {
|
|
154
|
-
const { success, stdout, configPath } = await runCreateWithConfig(validMinimalConfig, 'my-environment');
|
|
155
|
-
await removeTempConfigFile(configPath);
|
|
156
|
-
expect(success).toBe(true);
|
|
157
|
-
expect(stdout).toContain('my-environment');
|
|
158
|
-
});
|
|
159
|
-
it('should accept environment name via environmentName in config', async () => {
|
|
160
|
-
const configWithEnv = {
|
|
161
|
-
...validMinimalConfig,
|
|
162
|
-
environmentName: 'config-environment',
|
|
163
|
-
};
|
|
164
|
-
const { success, stdout, configPath } = await runCreateWithConfig(configWithEnv);
|
|
165
|
-
await removeTempConfigFile(configPath);
|
|
166
|
-
expect(success).toBe(true);
|
|
167
|
-
expect(stdout).toContain('config-environment');
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
describe('GitHub Integration', () => {
|
|
171
|
-
it('should call GitHub API to create environment', async () => {
|
|
172
|
-
const { success, configPath } = await runCreateWithConfig(validMinimalConfig, 'test-env');
|
|
173
|
-
await removeTempConfigFile(configPath);
|
|
174
|
-
expect(success).toBe(true);
|
|
175
|
-
expect(mockGitHubClient.createEnvironment).toHaveBeenCalled();
|
|
176
|
-
expect(mockGitHubClient.createEnvironmentVariables).toHaveBeenCalled();
|
|
177
|
-
expect(mockGitHubClient.createEnvironmentSecrets).toHaveBeenCalled();
|
|
178
|
-
});
|
|
179
|
-
it('should handle GitHub API errors gracefully', async () => {
|
|
180
|
-
mockGitHubClient.createEnvironment.mockRejectedValue(new Error('API Error'));
|
|
181
|
-
const { success, configPath } = await runCreateWithConfig(validMinimalConfig, 'test-env');
|
|
182
|
-
await removeTempConfigFile(configPath);
|
|
183
|
-
expect(success).toBe(false);
|
|
184
|
-
});
|
|
185
|
-
});
|
|
186
|
-
describe('Hub Integration', () => {
|
|
187
|
-
it('should include Hub configuration when provided', async () => {
|
|
188
|
-
const { success, stdout, configPath } = await runCreateWithConfig(validConfigWithHub, 'test-env');
|
|
189
|
-
await removeTempConfigFile(configPath);
|
|
190
|
-
expect(success).toBe(true);
|
|
191
|
-
expect(stdout).toContain('Hub');
|
|
192
|
-
});
|
|
193
|
-
it('should skip Hub integration when not in config', async () => {
|
|
194
|
-
const { success, configPath } = await runCreateWithConfig(validMinimalConfig, 'test-env');
|
|
195
|
-
await removeTempConfigFile(configPath);
|
|
196
|
-
expect(success).toBe(true);
|
|
197
|
-
// Hub-specific secrets should not be created
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
describe('Config Priority', () => {
|
|
201
|
-
it('should follow priority: CLI flags > Config file > Defaults', async () => {
|
|
202
|
-
// This is tested implicitly through other tests
|
|
203
|
-
// CLI flags override config files (tested in override tests)
|
|
204
|
-
// Config files provide defaults (tested in config file tests)
|
|
205
|
-
expect(true).toBe(true);
|
|
206
|
-
});
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
//# sourceMappingURL=studio-create.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"studio-create.test.js","sourceRoot":"","sources":["../../../src/__tests__/integration/studio-create.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"studio-update.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/integration/studio-update.test.ts"],"names":[],"mappings":""}
|