feat: add helpers and improve workspace auth flows
This commit is contained in:
@@ -61,12 +61,14 @@ test("scaffoldApp pins the current framework and exposes llms.txt publicly", ()
|
||||
const version = currentCliVersion();
|
||||
|
||||
expect(pkg.wrnexus.version).toBe(version);
|
||||
expect(pkg.dependencies["@wrnexus/helpers"]).toBe(version);
|
||||
for (const dependency of Object.values(pkg.dependencies) as string[]) {
|
||||
expect(dependency).toBe(version);
|
||||
}
|
||||
expect(pkg.devDependencies["@wrnexus/cli"]).toBe(version);
|
||||
expect(existsSync(join(root, "public", "llms.txt"))).toBe(true);
|
||||
expect(existsSync(join(root, "llms.txt"))).toBe(false);
|
||||
expect(readFileSync(join(root, ".prettierignore"), "utf8")).toContain("CLAUDE.md");
|
||||
expect(readFileSync(join(root, "app", "pages", "index.wrn"), "utf8")).toContain(
|
||||
'href="/api/hello"',
|
||||
);
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import { expect, test } from "bun:test";
|
||||
import { existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import { currentCliVersion } from "../src/update-notifier.ts";
|
||||
import { workspaceFiles } from "../src/workspace.ts";
|
||||
import { addWorkspaceApp, insertWorkspaceApp, workspaceFiles } from "../src/workspace.ts";
|
||||
|
||||
test("workspace templates pin the running framework release", () => {
|
||||
const files = workspaceFiles("acme");
|
||||
@@ -13,3 +16,48 @@ test("workspace templates pin the running framework release", () => {
|
||||
expect(files["README.md"]).toContain("http://127.0.0.1:3000");
|
||||
expect(files["README.md"]).toContain("internal gateway targets");
|
||||
});
|
||||
|
||||
test("insertWorkspaceApp handles nested arrays and comments", () => {
|
||||
const source = `const config = {
|
||||
apps: [
|
||||
{ name: "web", dir: "apps/web", domains: ["localhost"] },
|
||||
{ name: "admin", dir: "apps/admin", domains: ["admin.localhost"], auth: { allowIps: ["::1"] } }, // ]
|
||||
],
|
||||
};
|
||||
export default config;
|
||||
`;
|
||||
const result = insertWorkspaceApp(source, {
|
||||
name: "reports",
|
||||
dir: "apps/reports",
|
||||
domains: ["reports.localhost"],
|
||||
});
|
||||
|
||||
expect(result).toContain(
|
||||
'{ name: "reports", dir: "apps/reports", domains: ["reports.localhost"] },',
|
||||
);
|
||||
expect(result.indexOf('name: "reports"')).toBeLessThan(result.indexOf("\n ],"));
|
||||
});
|
||||
|
||||
test("workspace add scaffolds and registers an app", async () => {
|
||||
const root = mkdtempSync(join(tmpdir(), "wrnexus-workspace-add-"));
|
||||
writeFileSync(
|
||||
join(root, "wrnexus.workspace.ts"),
|
||||
'export default { apps: [{ name: "web", dir: "apps/web", domains: ["localhost"] }] };\n',
|
||||
);
|
||||
|
||||
try {
|
||||
await addWorkspaceApp(root, "reports", ["--domain=reports.localhost"]);
|
||||
const manifest = JSON.parse(
|
||||
readFileSync(join(root, "apps", "reports", "package.json"), "utf8"),
|
||||
);
|
||||
const config = readFileSync(join(root, "wrnexus.workspace.ts"), "utf8");
|
||||
|
||||
expect(manifest.name).toBe("reports");
|
||||
expect(manifest.wrnexus.version).toBe(currentCliVersion());
|
||||
expect(config).toContain('name: "reports"');
|
||||
expect(config).toContain('domains: ["reports.localhost"]');
|
||||
expect(existsSync(join(root, "apps", "reports", "public", "llms.txt"))).toBe(true);
|
||||
} finally {
|
||||
rmSync(root, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user