alpic 0.0.0-dev.f450267 → 0.0.0-dev.f451ac7
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/README.md +40 -0
- package/bin/run.js +5 -0
- package/dist/__tests__/audit.e2e.test.d.ts +1 -0
- package/dist/__tests__/audit.e2e.test.js +562 -0
- package/dist/__tests__/audit.e2e.test.js.map +1 -0
- package/dist/__tests__/auth.e2e.test.js +38 -18
- package/dist/__tests__/auth.e2e.test.js.map +1 -1
- package/dist/__tests__/deploy-flags.e2e.test.d.ts +1 -0
- package/dist/__tests__/deploy-flags.e2e.test.js +228 -0
- package/dist/__tests__/deploy-flags.e2e.test.js.map +1 -0
- package/dist/__tests__/deploy.e2e.test.js +34 -66
- package/dist/__tests__/deploy.e2e.test.js.map +1 -1
- package/dist/__tests__/deployment-inspect.e2e.test.d.ts +1 -0
- package/dist/__tests__/deployment-inspect.e2e.test.js +119 -0
- package/dist/__tests__/deployment-inspect.e2e.test.js.map +1 -0
- package/dist/__tests__/deployment-list.e2e.test.d.ts +1 -0
- package/dist/__tests__/deployment-list.e2e.test.js +121 -0
- package/dist/__tests__/deployment-list.e2e.test.js.map +1 -0
- package/dist/__tests__/deployment-logs.e2e.test.d.ts +1 -0
- package/dist/__tests__/deployment-logs.e2e.test.js +260 -0
- package/dist/__tests__/deployment-logs.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js +264 -0
- package/dist/__tests__/environment-variable/environment-variable-add.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js +144 -0
- package/dist/__tests__/environment-variable/environment-variable-list.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js +155 -0
- package/dist/__tests__/environment-variable/environment-variable-remove.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js +347 -0
- package/dist/__tests__/environment-variable/environment-variable-update.e2e.test.js.map +1 -0
- package/dist/__tests__/environment-variable/environment-variable-validation.test.d.ts +1 -0
- package/dist/__tests__/environment-variable/environment-variable-validation.test.js +20 -0
- package/dist/__tests__/environment-variable/environment-variable-validation.test.js.map +1 -0
- package/dist/__tests__/fixtures/demo-project/index.js +1 -1
- package/dist/__tests__/fixtures/demo-project/index.js.map +1 -1
- package/dist/__tests__/git-flags.e2e.test.d.ts +1 -0
- package/dist/__tests__/git-flags.e2e.test.js +129 -0
- package/dist/__tests__/git-flags.e2e.test.js.map +1 -0
- package/dist/__tests__/git.e2e.test.js +25 -17
- package/dist/__tests__/git.e2e.test.js.map +1 -1
- package/dist/__tests__/link.e2e.test.d.ts +1 -0
- package/dist/__tests__/link.e2e.test.js +284 -0
- package/dist/__tests__/link.e2e.test.js.map +1 -0
- package/dist/__tests__/logs.e2e.test.d.ts +1 -0
- package/dist/__tests__/logs.e2e.test.js +231 -0
- package/dist/__tests__/logs.e2e.test.js.map +1 -0
- package/dist/__tests__/mock-server.d.ts +23 -0
- package/dist/__tests__/mock-server.js +330 -21
- package/dist/__tests__/mock-server.js.map +1 -1
- package/dist/__tests__/publish.e2e.test.d.ts +1 -0
- package/dist/__tests__/publish.e2e.test.js +510 -0
- package/dist/__tests__/publish.e2e.test.js.map +1 -0
- package/dist/__tests__/tunnel.e2e.test.d.ts +1 -0
- package/dist/__tests__/tunnel.e2e.test.js +66 -0
- package/dist/__tests__/tunnel.e2e.test.js.map +1 -0
- package/dist/__tests__/utils.d.ts +17 -5
- package/dist/__tests__/utils.js +118 -24
- package/dist/__tests__/utils.js.map +1 -1
- package/dist/api.d.ts +1 -1
- package/dist/api.js +10 -3
- package/dist/api.js.map +1 -1
- package/dist/commands/audit.d.ts +14 -0
- package/dist/commands/audit.js +49 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/deploy.d.ts +8 -2
- package/dist/commands/deploy.js +64 -25
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/deployment/inspect.d.ts +11 -0
- package/dist/commands/deployment/inspect.js +91 -0
- package/dist/commands/deployment/inspect.js.map +1 -0
- package/dist/commands/deployment/list.d.ts +11 -0
- package/dist/commands/deployment/list.js +97 -0
- package/dist/commands/deployment/list.js.map +1 -0
- package/dist/commands/deployment/logs.d.ts +12 -0
- package/dist/commands/deployment/logs.js +50 -0
- package/dist/commands/deployment/logs.js.map +1 -0
- package/dist/commands/environment-variable/add.d.ts +14 -0
- package/dist/commands/environment-variable/add.js +47 -0
- package/dist/commands/environment-variable/add.js.map +1 -0
- package/dist/commands/environment-variable/list.d.ts +9 -0
- package/dist/commands/environment-variable/list.js +45 -0
- package/dist/commands/environment-variable/list.js.map +1 -0
- package/dist/commands/environment-variable/remove.d.ts +11 -0
- package/dist/commands/environment-variable/remove.js +33 -0
- package/dist/commands/environment-variable/remove.js.map +1 -0
- package/dist/commands/environment-variable/update.d.ts +13 -0
- package/dist/commands/environment-variable/update.js +41 -0
- package/dist/commands/environment-variable/update.js.map +1 -0
- package/dist/commands/git/connect.d.ts +3 -2
- package/dist/commands/git/connect.js +29 -28
- package/dist/commands/git/connect.js.map +1 -1
- package/dist/commands/git/disconnect.d.ts +2 -2
- package/dist/commands/git/disconnect.js +20 -26
- package/dist/commands/git/disconnect.js.map +1 -1
- package/dist/commands/git.js +2 -2
- package/dist/commands/git.js.map +1 -1
- package/dist/commands/link.d.ts +17 -0
- package/dist/commands/link.js +101 -0
- package/dist/commands/link.js.map +1 -0
- package/dist/commands/login.js +4 -21
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logs.d.ts +16 -0
- package/dist/commands/logs.js +96 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/publish.d.ts +15 -0
- package/dist/commands/publish.js +51 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/tunnel.d.ts +10 -0
- package/dist/commands/tunnel.js +132 -0
- package/dist/commands/tunnel.js.map +1 -0
- package/dist/commands/whoami.js +2 -14
- package/dist/commands/whoami.js.map +1 -1
- package/dist/env.js +1 -1
- package/dist/lib/alpic-command.d.ts +2 -0
- package/dist/lib/alpic-command.js +13 -5
- package/dist/lib/alpic-command.js.map +1 -1
- package/dist/lib/archive.d.ts +3 -3
- package/dist/lib/archive.js +21 -19
- package/dist/lib/archive.js.map +1 -1
- package/dist/lib/audit.d.ts +16 -0
- package/dist/lib/audit.js +245 -0
- package/dist/lib/audit.js.map +1 -0
- package/dist/lib/auth/auth.d.ts +3 -0
- package/dist/lib/auth/auth.js +23 -0
- package/dist/lib/auth/auth.js.map +1 -1
- package/dist/lib/auth/oauth/client.d.ts +0 -1
- package/dist/lib/auth/oauth/client.js +2 -4
- package/dist/lib/auth/oauth/client.js.map +1 -1
- package/dist/lib/auth/oauth/server/assets/alpic-mountain.png +0 -0
- package/dist/lib/auth/oauth/server/assets/authorize.html +195 -0
- package/dist/lib/auth/oauth/server/assets/callback.html +88 -0
- package/dist/lib/auth/oauth/server/index.d.ts +9 -0
- package/dist/lib/auth/oauth/server/index.js +128 -0
- package/dist/lib/auth/oauth/server/index.js.map +1 -0
- package/dist/lib/auth/whoami.d.ts +1 -28
- package/dist/lib/auth/whoami.js +27 -17
- package/dist/lib/auth/whoami.js.map +1 -1
- package/dist/lib/base-workflow.d.ts +10 -0
- package/dist/lib/base-workflow.js +22 -0
- package/dist/lib/base-workflow.js.map +1 -0
- package/dist/lib/config.d.ts +3 -2
- package/dist/lib/config.js +8 -7
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/deployment.d.ts +69 -1
- package/dist/lib/deployment.js +113 -5
- package/dist/lib/deployment.js.map +1 -1
- package/dist/lib/environment-variable.d.ts +37 -0
- package/dist/lib/environment-variable.js +299 -0
- package/dist/lib/environment-variable.js.map +1 -0
- package/dist/lib/git.d.ts +12 -4
- package/dist/lib/git.js +52 -26
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/global-store.d.ts +1 -1
- package/dist/lib/global-store.js +4 -3
- package/dist/lib/global-store.js.map +1 -1
- package/dist/lib/link.d.ts +83 -0
- package/dist/lib/link.js +387 -0
- package/dist/lib/link.js.map +1 -0
- package/dist/lib/logs.d.ts +20 -0
- package/dist/lib/logs.js +87 -0
- package/dist/lib/logs.js.map +1 -0
- package/dist/lib/publish.d.ts +22 -0
- package/dist/lib/publish.js +185 -0
- package/dist/lib/publish.js.map +1 -0
- package/dist/lib/resolve.d.ts +6 -0
- package/dist/lib/resolve.js +26 -0
- package/dist/lib/resolve.js.map +1 -0
- package/dist/lib/table.d.ts +8 -0
- package/dist/lib/table.js +27 -0
- package/dist/lib/table.js.map +1 -0
- package/dist/lib/telemetry.js +1 -1
- package/dist/lib/telemetry.js.map +1 -1
- package/dist/lib/utils.d.ts +5 -0
- package/dist/lib/utils.js +53 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/utils.test.d.ts +1 -0
- package/dist/lib/utils.test.js +27 -0
- package/dist/lib/utils.test.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/package.json +28 -21
- package/dist/lib/auth/oauth/server.d.ts +0 -6
- package/dist/lib/auth/oauth/server.js +0 -88
- package/dist/lib/auth/oauth/server.js.map +0 -1
- package/dist/lib/project.d.ts +0 -67
- package/dist/lib/project.js +0 -285
- package/dist/lib/project.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { rmSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
4
|
-
import { MockApiServer } from "./mock-server";
|
|
5
|
-
import { buildMockProject, cliSession, createConfigFile, createOAuthEnv, expectSuccessfulApiCall, runGit, setupTestDirectory, } from "./utils";
|
|
3
|
+
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
|
4
|
+
import { MockApiServer } from "./mock-server.js";
|
|
5
|
+
import { buildMockProject, cliSession, createConfigFile, createOAuthEnv, expectSuccessfulApiCall, runGit, setupTestDirectory, } from "./utils.js";
|
|
6
6
|
describe("alpic git connect/disconnect (E2E)", () => {
|
|
7
7
|
let mockServer;
|
|
8
8
|
let serverUrl;
|
|
@@ -24,15 +24,20 @@ describe("alpic git connect/disconnect (E2E)", () => {
|
|
|
24
24
|
}));
|
|
25
25
|
createConfigFile(cwd, projectId, teamId, "demo", environmentId, "production");
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
beforeAll(async () => {
|
|
28
28
|
mockServer = new MockApiServer();
|
|
29
29
|
serverUrl = await mockServer.start();
|
|
30
|
-
|
|
30
|
+
});
|
|
31
|
+
afterAll(async () => {
|
|
32
|
+
await mockServer.stop();
|
|
33
|
+
});
|
|
34
|
+
beforeEach(async () => {
|
|
35
|
+
mockServer.reset();
|
|
36
|
+
const setup = await setupTestDirectory({ initGit: true });
|
|
31
37
|
cwd = setup.cwd;
|
|
32
38
|
binPath = setup.binPath;
|
|
33
39
|
});
|
|
34
|
-
afterEach(
|
|
35
|
-
await mockServer.stop();
|
|
40
|
+
afterEach(() => {
|
|
36
41
|
if (cwd) {
|
|
37
42
|
rmSync(cwd, { recursive: true, force: true });
|
|
38
43
|
}
|
|
@@ -49,8 +54,7 @@ describe("alpic git connect/disconnect (E2E)", () => {
|
|
|
49
54
|
await cli.expect("Choose the remote source to connect");
|
|
50
55
|
await cli.send("\u001B[B"); // Move down one option (select acme/backend)
|
|
51
56
|
await cli.send("");
|
|
52
|
-
await cli.expect("Connected");
|
|
53
|
-
await cli.expect("every push");
|
|
57
|
+
await cli.expect("✅ Connected");
|
|
54
58
|
});
|
|
55
59
|
expect(exitCode).toBe(0);
|
|
56
60
|
expect(output).toMatch(/Connected .*acme\/backend.* to project .*demo.*\./);
|
|
@@ -64,7 +68,7 @@ describe("alpic git connect/disconnect (E2E)", () => {
|
|
|
64
68
|
});
|
|
65
69
|
it("requires linked Alpic project config", async () => {
|
|
66
70
|
rmSync(join(cwd, ".alpic"), { recursive: true, force: true });
|
|
67
|
-
const { output } = await cliSession(process.execPath, [binPath, "git", "connect"], {
|
|
71
|
+
const { exitCode, output } = await cliSession(process.execPath, [binPath, "git", "connect"], {
|
|
68
72
|
cwd,
|
|
69
73
|
env: {
|
|
70
74
|
ALPIC_API_BASE_URL: serverUrl,
|
|
@@ -73,12 +77,13 @@ describe("alpic git connect/disconnect (E2E)", () => {
|
|
|
73
77
|
}, async (cli) => {
|
|
74
78
|
await cli.expect("This directory is not linked to an Alpic project. Link it first using `alpic deploy`.");
|
|
75
79
|
});
|
|
80
|
+
expect(exitCode).toBe(1);
|
|
76
81
|
expect(output).toContain("This directory is not linked to an Alpic project. Link it first using `alpic deploy`.");
|
|
77
82
|
});
|
|
78
83
|
it("shows git setup instructions when directory is not a git repository", async () => {
|
|
79
84
|
setupProject();
|
|
80
85
|
rmSync(join(cwd, ".git"), { recursive: true, force: true });
|
|
81
|
-
const { output } = await cliSession(process.execPath, [binPath, "git", "connect"], {
|
|
86
|
+
const { exitCode, output } = await cliSession(process.execPath, [binPath, "git", "connect"], {
|
|
82
87
|
cwd,
|
|
83
88
|
env: {
|
|
84
89
|
ALPIC_API_BASE_URL: serverUrl,
|
|
@@ -89,6 +94,7 @@ describe("alpic git connect/disconnect (E2E)", () => {
|
|
|
89
94
|
await cli.expect("To set up a git repository");
|
|
90
95
|
await cli.expect("git init");
|
|
91
96
|
});
|
|
97
|
+
expect(exitCode).toBe(0);
|
|
92
98
|
expect(output).toContain("This directory is not a git repository.");
|
|
93
99
|
expect(output).toContain("To set up a git repository");
|
|
94
100
|
expect(output).toContain("git init");
|
|
@@ -97,7 +103,7 @@ describe("alpic git connect/disconnect (E2E)", () => {
|
|
|
97
103
|
setupProject();
|
|
98
104
|
runGit(["remote", "remove", "origin"], cwd);
|
|
99
105
|
runGit(["remote", "remove", "upstream"], cwd);
|
|
100
|
-
const { output } = await cliSession(process.execPath, [binPath, "git", "connect"], {
|
|
106
|
+
const { exitCode, output } = await cliSession(process.execPath, [binPath, "git", "connect"], {
|
|
101
107
|
cwd,
|
|
102
108
|
env: {
|
|
103
109
|
ALPIC_API_BASE_URL: serverUrl,
|
|
@@ -108,13 +114,14 @@ describe("alpic git connect/disconnect (E2E)", () => {
|
|
|
108
114
|
await cli.expect("To set up a git repository");
|
|
109
115
|
await cli.expect("git init");
|
|
110
116
|
});
|
|
117
|
+
expect(exitCode).toBe(0);
|
|
111
118
|
expect(output).toContain("This git repository has no remotes configured.");
|
|
112
119
|
expect(output).toContain("To set up a git repository");
|
|
113
120
|
expect(output).toContain("git init");
|
|
114
121
|
});
|
|
115
122
|
it("when project is already connected, prompts to link another and exits if user declines", async () => {
|
|
116
123
|
setupProject({ sourceRepository: "acme/backend" });
|
|
117
|
-
const { output } = await cliSession(process.execPath, [binPath, "git", "connect"], {
|
|
124
|
+
const { exitCode, output } = await cliSession(process.execPath, [binPath, "git", "connect"], {
|
|
118
125
|
cwd,
|
|
119
126
|
env: {
|
|
120
127
|
ALPIC_API_BASE_URL: serverUrl,
|
|
@@ -126,13 +133,14 @@ describe("alpic git connect/disconnect (E2E)", () => {
|
|
|
126
133
|
await cli.send(""); // accept default (No)
|
|
127
134
|
await cli.expect("Git connect cancelled");
|
|
128
135
|
});
|
|
136
|
+
expect(exitCode).toBe(1);
|
|
129
137
|
expect(output).toMatch(/Project .*demo.* is already connected to .*acme\/backend.*\./);
|
|
130
138
|
expect(output).toContain("Git connect cancelled");
|
|
131
139
|
expect(mockServer.getCalls("PATCH", "/v1/projects/")).toHaveLength(0);
|
|
132
140
|
});
|
|
133
141
|
it("disconnect fails with clear message when project is not connected", async () => {
|
|
134
142
|
setupProject(); // sourceRepository is null by default
|
|
135
|
-
const { output } = await cliSession(process.execPath, [binPath, "git", "disconnect"], {
|
|
143
|
+
const { exitCode, output } = await cliSession(process.execPath, [binPath, "git", "disconnect"], {
|
|
136
144
|
cwd,
|
|
137
145
|
env: {
|
|
138
146
|
ALPIC_API_BASE_URL: serverUrl,
|
|
@@ -141,6 +149,7 @@ describe("alpic git connect/disconnect (E2E)", () => {
|
|
|
141
149
|
}, async (cli) => {
|
|
142
150
|
await cli.expect(/Project .*demo.* is not connected to any repository\./);
|
|
143
151
|
});
|
|
152
|
+
expect(exitCode).toBe(1);
|
|
144
153
|
expect(output).toMatch(/Project .*demo.* is not connected to any repository\./);
|
|
145
154
|
expect(mockServer.getCalls("PATCH", "/v1/projects/")).toHaveLength(0);
|
|
146
155
|
});
|
|
@@ -179,8 +188,7 @@ describe("alpic git connect/disconnect (E2E)", () => {
|
|
|
179
188
|
await cli.expect("Choose the remote source to connect");
|
|
180
189
|
await cli.send("\u001B[B"); // Move down one option (select acme/backend)
|
|
181
190
|
await cli.send("");
|
|
182
|
-
await cli.expect("Connected");
|
|
183
|
-
await cli.expect("every push");
|
|
191
|
+
await cli.expect("✅ Connected");
|
|
184
192
|
});
|
|
185
193
|
expect(exitCode).toBe(0);
|
|
186
194
|
expect(output).toMatch(/Connected .*acme\/backend.* to project .*demo.*\./);
|
|
@@ -214,5 +222,5 @@ describe("alpic git connect/disconnect (E2E)", () => {
|
|
|
214
222
|
});
|
|
215
223
|
});
|
|
216
224
|
});
|
|
217
|
-
}
|
|
225
|
+
});
|
|
218
226
|
//# sourceMappingURL=git.e2e.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.e2e.test.js","sourceRoot":"","sources":["../../src/__tests__/git.e2e.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"git.e2e.test.js","sourceRoot":"","sources":["../../src/__tests__/git.e2e.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { rmSync } from "node:fs";
|
|
2
|
+
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
|
3
|
+
import { MockApiServer } from "./mock-server.js";
|
|
4
|
+
import { buildMockProject, cliSession, expectSuccessfulApiCall, setupTestDirectory, verifyConfigFile, } from "./utils.js";
|
|
5
|
+
describe("alpic link (E2E)", () => {
|
|
6
|
+
let mockServer;
|
|
7
|
+
let serverUrl;
|
|
8
|
+
let cwd;
|
|
9
|
+
let binPath;
|
|
10
|
+
let extraCwd;
|
|
11
|
+
beforeAll(async () => {
|
|
12
|
+
mockServer = new MockApiServer();
|
|
13
|
+
serverUrl = await mockServer.start();
|
|
14
|
+
});
|
|
15
|
+
afterAll(async () => {
|
|
16
|
+
await mockServer.stop();
|
|
17
|
+
});
|
|
18
|
+
beforeEach(async () => {
|
|
19
|
+
mockServer.reset();
|
|
20
|
+
const setup = await setupTestDirectory();
|
|
21
|
+
cwd = setup.cwd;
|
|
22
|
+
binPath = setup.binPath;
|
|
23
|
+
});
|
|
24
|
+
afterEach(() => {
|
|
25
|
+
if (extraCwd) {
|
|
26
|
+
rmSync(extraCwd, { recursive: true, force: true });
|
|
27
|
+
extraCwd = undefined;
|
|
28
|
+
}
|
|
29
|
+
if (cwd) {
|
|
30
|
+
rmSync(cwd, { recursive: true, force: true });
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
it("creates a new project via prompts", async () => {
|
|
34
|
+
const { exitCode } = await cliSession(process.execPath, [binPath, "link"], {
|
|
35
|
+
cwd,
|
|
36
|
+
env: {
|
|
37
|
+
ALPIC_API_BASE_URL: serverUrl,
|
|
38
|
+
ALPIC_API_KEY: "test-api-key",
|
|
39
|
+
},
|
|
40
|
+
}, async (cli) => {
|
|
41
|
+
await cli.expect("Use the current directory?");
|
|
42
|
+
await cli.send("");
|
|
43
|
+
await cli.expect("Choose a team");
|
|
44
|
+
await cli.send("");
|
|
45
|
+
await cli.expect("Link to existing project?");
|
|
46
|
+
await cli.send("n");
|
|
47
|
+
await cli.expect("Project name");
|
|
48
|
+
await cli.send("my-new-project");
|
|
49
|
+
await cli.expect("Runtime");
|
|
50
|
+
await cli.send("");
|
|
51
|
+
await cli.expect("Root directory");
|
|
52
|
+
await cli.send("");
|
|
53
|
+
await cli.expect("Project created.");
|
|
54
|
+
await cli.expect("Linked to project");
|
|
55
|
+
});
|
|
56
|
+
expect(exitCode).toBe(0);
|
|
57
|
+
const createProjectCall = mockServer.getLastCall("POST", "/v1/projects");
|
|
58
|
+
expectSuccessfulApiCall(createProjectCall, (call) => {
|
|
59
|
+
expect(call.input).toMatchObject({
|
|
60
|
+
name: "my-new-project",
|
|
61
|
+
runtime: "node24",
|
|
62
|
+
teamId: "mock-team-id",
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
await verifyConfigFile(cwd, {
|
|
66
|
+
projectName: "my-new-project",
|
|
67
|
+
teamName: "Mock Team",
|
|
68
|
+
environmentName: "production",
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
it("links to an existing project via prompts", async () => {
|
|
72
|
+
const existingProjectId = "existing-project-id";
|
|
73
|
+
const existingTeamId = "mock-team-id";
|
|
74
|
+
const existingEnvId = "existing-env-id";
|
|
75
|
+
const existingEnvName = "production";
|
|
76
|
+
mockServer.addProject(buildMockProject({
|
|
77
|
+
projectId: existingProjectId,
|
|
78
|
+
teamId: existingTeamId,
|
|
79
|
+
projectName: "existing-project",
|
|
80
|
+
environmentId: existingEnvId,
|
|
81
|
+
environmentName: existingEnvName,
|
|
82
|
+
}));
|
|
83
|
+
const { exitCode } = await cliSession(process.execPath, [binPath, "link"], {
|
|
84
|
+
cwd,
|
|
85
|
+
env: {
|
|
86
|
+
ALPIC_API_BASE_URL: serverUrl,
|
|
87
|
+
ALPIC_API_KEY: "test-api-key",
|
|
88
|
+
},
|
|
89
|
+
}, async (cli) => {
|
|
90
|
+
await cli.expect("Use the current directory?");
|
|
91
|
+
await cli.send("");
|
|
92
|
+
await cli.expect("Choose a team");
|
|
93
|
+
await cli.send("");
|
|
94
|
+
await cli.expect("Link to existing project?");
|
|
95
|
+
await cli.send("y");
|
|
96
|
+
await cli.expect("Choose a project");
|
|
97
|
+
await cli.send("");
|
|
98
|
+
await cli.expect("Choose an environment to deploy to");
|
|
99
|
+
await cli.send("");
|
|
100
|
+
await cli.expect("Linked to project");
|
|
101
|
+
});
|
|
102
|
+
expect(exitCode).toBe(0);
|
|
103
|
+
await verifyConfigFile(cwd, {
|
|
104
|
+
projectName: "existing-project",
|
|
105
|
+
projectId: existingProjectId,
|
|
106
|
+
teamId: existingTeamId,
|
|
107
|
+
teamName: "Mock Team",
|
|
108
|
+
environmentId: existingEnvId,
|
|
109
|
+
environmentName: existingEnvName,
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
it("shows team select when multiple teams exist", async () => {
|
|
113
|
+
mockServer.setTeams([
|
|
114
|
+
{ id: "team-alpha", name: "Team Alpha" },
|
|
115
|
+
{ id: "team-beta", name: "Team Beta" },
|
|
116
|
+
]);
|
|
117
|
+
const { exitCode } = await cliSession(process.execPath, [binPath, "link"], {
|
|
118
|
+
cwd,
|
|
119
|
+
env: {
|
|
120
|
+
ALPIC_API_BASE_URL: serverUrl,
|
|
121
|
+
ALPIC_API_KEY: "test-api-key",
|
|
122
|
+
},
|
|
123
|
+
}, async (cli) => {
|
|
124
|
+
await cli.expect("Use the current directory?");
|
|
125
|
+
await cli.send("");
|
|
126
|
+
await cli.expect("Choose a team");
|
|
127
|
+
await cli.send("");
|
|
128
|
+
await cli.expect("Link to existing project?");
|
|
129
|
+
await cli.send("n");
|
|
130
|
+
await cli.expect("Project name");
|
|
131
|
+
await cli.send("demo");
|
|
132
|
+
await cli.expect("Runtime");
|
|
133
|
+
await cli.send("");
|
|
134
|
+
await cli.expect("Root directory");
|
|
135
|
+
await cli.send("");
|
|
136
|
+
await cli.expect("Project created.");
|
|
137
|
+
await cli.expect("Linked to project");
|
|
138
|
+
});
|
|
139
|
+
expect(exitCode).toBe(0);
|
|
140
|
+
const createProjectCall = mockServer.getLastCall("POST", "/v1/projects");
|
|
141
|
+
expectSuccessfulApiCall(createProjectCall, (call) => {
|
|
142
|
+
expect(call.input).toMatchObject({
|
|
143
|
+
teamId: "team-alpha",
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
await verifyConfigFile(cwd, {
|
|
147
|
+
projectName: "demo",
|
|
148
|
+
teamName: "Team Alpha",
|
|
149
|
+
environmentName: "production",
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
it("errors when no teams exist", async () => {
|
|
153
|
+
mockServer.setTeams([]);
|
|
154
|
+
const { output } = await cliSession(process.execPath, [binPath, "link"], {
|
|
155
|
+
cwd,
|
|
156
|
+
env: {
|
|
157
|
+
ALPIC_API_BASE_URL: serverUrl,
|
|
158
|
+
ALPIC_API_KEY: "test-api-key",
|
|
159
|
+
},
|
|
160
|
+
}, async (cli) => {
|
|
161
|
+
await cli.expect("Use the current directory?");
|
|
162
|
+
await cli.send("");
|
|
163
|
+
await cli.expect("No teams found");
|
|
164
|
+
});
|
|
165
|
+
expect(output).toContain("No teams found");
|
|
166
|
+
});
|
|
167
|
+
it("creates a project with --non-interactive flags", async () => {
|
|
168
|
+
const { exitCode } = await cliSession(process.execPath, [binPath, "link", "--non-interactive", "--project-name", "demo", "--runtime", "node24"], {
|
|
169
|
+
cwd,
|
|
170
|
+
env: {
|
|
171
|
+
ALPIC_API_BASE_URL: serverUrl,
|
|
172
|
+
ALPIC_API_KEY: "test-api-key",
|
|
173
|
+
},
|
|
174
|
+
}, async (cli) => {
|
|
175
|
+
await cli.expect("Project created.");
|
|
176
|
+
await cli.expect("Linked to project");
|
|
177
|
+
});
|
|
178
|
+
expect(exitCode).toBe(0);
|
|
179
|
+
const createProjectCall = mockServer.getLastCall("POST", "/v1/projects");
|
|
180
|
+
expectSuccessfulApiCall(createProjectCall, (call) => {
|
|
181
|
+
expect(call.input).toMatchObject({
|
|
182
|
+
name: "demo",
|
|
183
|
+
runtime: "node24",
|
|
184
|
+
teamId: "mock-team-id",
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
await verifyConfigFile(cwd, {
|
|
188
|
+
projectName: "demo",
|
|
189
|
+
teamName: "Mock Team",
|
|
190
|
+
environmentName: "production",
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
it("exits cleanly when Ctrl+C is pressed", async () => {
|
|
194
|
+
const { exitCode, output } = await cliSession(process.execPath, [binPath, "link"], {
|
|
195
|
+
cwd,
|
|
196
|
+
env: {
|
|
197
|
+
ALPIC_API_BASE_URL: serverUrl,
|
|
198
|
+
ALPIC_API_KEY: "test-api-key",
|
|
199
|
+
},
|
|
200
|
+
}, async (cli) => {
|
|
201
|
+
await cli.expect("Use the current directory?");
|
|
202
|
+
cli.write("\x03");
|
|
203
|
+
});
|
|
204
|
+
expect(exitCode).toBeLessThanOrEqual(1);
|
|
205
|
+
expect(output).not.toContain("Error:");
|
|
206
|
+
});
|
|
207
|
+
it("offers GitHub connect after project creation in git repo", async () => {
|
|
208
|
+
const setup = await setupTestDirectory({ initGit: true });
|
|
209
|
+
extraCwd = setup.cwd;
|
|
210
|
+
const { exitCode, output } = await cliSession(process.execPath, [binPath, "link"], {
|
|
211
|
+
cwd: extraCwd,
|
|
212
|
+
env: {
|
|
213
|
+
ALPIC_API_BASE_URL: serverUrl,
|
|
214
|
+
ALPIC_API_KEY: "test-api-key",
|
|
215
|
+
},
|
|
216
|
+
}, async (cli) => {
|
|
217
|
+
await cli.expect("Use the current directory?");
|
|
218
|
+
await cli.send("");
|
|
219
|
+
await cli.expect("Choose a team");
|
|
220
|
+
await cli.send("");
|
|
221
|
+
await cli.expect("Link to existing project?");
|
|
222
|
+
await cli.send("n");
|
|
223
|
+
await cli.expect("Project name");
|
|
224
|
+
await cli.send("demo");
|
|
225
|
+
await cli.expect("Runtime");
|
|
226
|
+
await cli.send("");
|
|
227
|
+
await cli.expect("Root directory");
|
|
228
|
+
await cli.send("");
|
|
229
|
+
await cli.expect("Project created.");
|
|
230
|
+
await cli.expect("Connect this project to a GitHub repository?");
|
|
231
|
+
await cli.send("y");
|
|
232
|
+
await cli.expect("Choose the remote source to connect");
|
|
233
|
+
await cli.send("");
|
|
234
|
+
await cli.expect("Connected to");
|
|
235
|
+
await cli.expect("Linked to project");
|
|
236
|
+
});
|
|
237
|
+
expect(exitCode).toBe(0);
|
|
238
|
+
expect(output).toContain("Alpic GitHub App");
|
|
239
|
+
const updateCall = mockServer.getLastCall("PATCH", /\/v1\/projects\//);
|
|
240
|
+
expectSuccessfulApiCall(updateCall, (call) => {
|
|
241
|
+
expect(call.input).toHaveProperty("sourceRepository");
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
it("skips GitHub connect when linked project already has a source repository", async () => {
|
|
245
|
+
const existingProjectId = "existing-project-id";
|
|
246
|
+
const existingTeamId = "mock-team-id";
|
|
247
|
+
const existingEnvId = "existing-env-id";
|
|
248
|
+
const existingEnvName = "production";
|
|
249
|
+
mockServer.addProject(buildMockProject({
|
|
250
|
+
projectId: existingProjectId,
|
|
251
|
+
teamId: existingTeamId,
|
|
252
|
+
projectName: "existing-project",
|
|
253
|
+
environmentId: existingEnvId,
|
|
254
|
+
environmentName: existingEnvName,
|
|
255
|
+
sourceRepository: "acme/frontend",
|
|
256
|
+
}));
|
|
257
|
+
const setup = await setupTestDirectory({ initGit: true });
|
|
258
|
+
extraCwd = setup.cwd;
|
|
259
|
+
const { exitCode, output } = await cliSession(process.execPath, [binPath, "link"], {
|
|
260
|
+
cwd: extraCwd,
|
|
261
|
+
env: {
|
|
262
|
+
ALPIC_API_BASE_URL: serverUrl,
|
|
263
|
+
ALPIC_API_KEY: "test-api-key",
|
|
264
|
+
},
|
|
265
|
+
}, async (cli) => {
|
|
266
|
+
await cli.expect("Use the current directory?");
|
|
267
|
+
await cli.send("");
|
|
268
|
+
await cli.expect("Choose a team");
|
|
269
|
+
await cli.send("");
|
|
270
|
+
await cli.expect("Link to existing project?");
|
|
271
|
+
await cli.send("y");
|
|
272
|
+
await cli.expect("Choose a project");
|
|
273
|
+
await cli.send("");
|
|
274
|
+
await cli.expect("Choose an environment to deploy to");
|
|
275
|
+
await cli.send("");
|
|
276
|
+
await cli.expect('already connected to "acme/frontend"');
|
|
277
|
+
await cli.expect("Linked to project");
|
|
278
|
+
});
|
|
279
|
+
expect(exitCode).toBe(0);
|
|
280
|
+
expect(output).not.toContain("Connect this project to a GitHub repository?");
|
|
281
|
+
expect(mockServer.getCalls("PATCH", `/v1/projects/${existingProjectId}`)).toHaveLength(0);
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
//# sourceMappingURL=link.e2e.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.e2e.test.js","sourceRoot":"","sources":["../../src/__tests__/link.e2e.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|