chore(ci): add workspace and db guardrails
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { describe, it } from "node:test";
|
||||
import {
|
||||
inspectDatabaseUrl,
|
||||
shouldGuardPrismaCommand,
|
||||
} from "./db-target-guard.mjs";
|
||||
|
||||
describe("db target guard", () => {
|
||||
it("accepts the expected capakraken database target", () => {
|
||||
const result = inspectDatabaseUrl(
|
||||
"postgresql://capakraken:secret@localhost:5432/capakraken",
|
||||
"capakraken",
|
||||
);
|
||||
|
||||
assert.equal(result.databaseName, "capakraken");
|
||||
assert.equal(result.expectedDatabase, "capakraken");
|
||||
assert.equal(result.target, "postgresql://capakraken@localhost:5432/capakraken");
|
||||
});
|
||||
|
||||
it("rejects a mismatched database target", () => {
|
||||
assert.throws(
|
||||
() => inspectDatabaseUrl("postgresql://capakraken:secret@localhost:5432/planarchy", "capakraken"),
|
||||
/Unexpected database target 'planarchy'\. Expected 'capakraken'\./,
|
||||
);
|
||||
});
|
||||
|
||||
it("guards only prisma commands that actually target a database", () => {
|
||||
assert.equal(shouldGuardPrismaCommand(["generate"]), false);
|
||||
assert.equal(shouldGuardPrismaCommand(["validate", "--schema", "./prisma/schema.prisma"]), false);
|
||||
assert.equal(shouldGuardPrismaCommand(["db", "push", "--schema", "./prisma/schema.prisma"]), true);
|
||||
assert.equal(shouldGuardPrismaCommand(["migrate", "deploy", "--schema", "./prisma/schema.prisma"]), true);
|
||||
assert.equal(shouldGuardPrismaCommand(["studio", "--schema", "./prisma/schema.prisma"]), true);
|
||||
assert.equal(shouldGuardPrismaCommand(["db", "push", "--help"]), false);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user