fix(db-tests): seed a SecretBackend for Secret model tests
Some checks failed
CI/CD / lint (pull_request) Successful in 1m17s
CI/CD / test (pull_request) Successful in 1m36s
CI/CD / typecheck (pull_request) Successful in 3m13s
CI/CD / smoke (pull_request) Failing after 2m4s
CI/CD / build (pull_request) Successful in 4m43s
CI/CD / publish (pull_request) Has been skipped
Some checks failed
CI/CD / lint (pull_request) Successful in 1m17s
CI/CD / test (pull_request) Successful in 1m36s
CI/CD / typecheck (pull_request) Successful in 3m13s
CI/CD / smoke (pull_request) Failing after 2m4s
CI/CD / build (pull_request) Successful in 4m43s
CI/CD / publish (pull_request) Has been skipped
The four Secret tests in models.test.ts created rows via raw prisma.secret.create without a backendId, so the schema default '' violated Secret_backendId_fkey (that default only exists so 'db push' can add the column to pre-existing rows; real writes always carry a valid FK). Seed a plaintext backend per test, the same shape bootstrapSecretBackends creates, and clear SecretBackend rows in clearAllTables so nothing leaks between tests. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -184,9 +184,22 @@ describe('McpServer', () => {
|
||||
// ── Secret model ──
|
||||
|
||||
describe('Secret', () => {
|
||||
// New Secret rows always carry a valid backend FK (SecretService guarantees
|
||||
// this; the schema-level `backendId @default("")` only exists so `db push`
|
||||
// can add the column to pre-existing rows). Seed the plaintext backend each
|
||||
// test the same way bootstrapSecretBackends does.
|
||||
let backendId: string;
|
||||
|
||||
beforeEach(async () => {
|
||||
const backend = await prisma.secretBackend.create({
|
||||
data: { name: 'default', type: 'plaintext', isDefault: true },
|
||||
});
|
||||
backendId = backend.id;
|
||||
});
|
||||
|
||||
it('creates a secret with defaults', async () => {
|
||||
const secret = await prisma.secret.create({
|
||||
data: { name: 'my-secret' },
|
||||
data: { name: 'my-secret', backendId },
|
||||
});
|
||||
expect(secret.name).toBe('my-secret');
|
||||
expect(secret.data).toEqual({});
|
||||
@@ -197,6 +210,7 @@ describe('Secret', () => {
|
||||
const secret = await prisma.secret.create({
|
||||
data: {
|
||||
name: 'api-keys',
|
||||
backendId,
|
||||
data: { API_KEY: 'test-key', API_SECRET: 'test-secret' },
|
||||
},
|
||||
});
|
||||
@@ -206,13 +220,15 @@ describe('Secret', () => {
|
||||
});
|
||||
|
||||
it('enforces unique name', async () => {
|
||||
await prisma.secret.create({ data: { name: 'dup-secret' } });
|
||||
await expect(prisma.secret.create({ data: { name: 'dup-secret' } })).rejects.toThrow();
|
||||
await prisma.secret.create({ data: { name: 'dup-secret', backendId } });
|
||||
await expect(
|
||||
prisma.secret.create({ data: { name: 'dup-secret', backendId } }),
|
||||
).rejects.toThrow();
|
||||
});
|
||||
|
||||
it('updates data', async () => {
|
||||
const secret = await prisma.secret.create({
|
||||
data: { name: 'updatable', data: { KEY: 'old' } },
|
||||
data: { name: 'updatable', backendId, data: { KEY: 'old' } },
|
||||
});
|
||||
const updated = await prisma.secret.update({
|
||||
where: { id: secret.id },
|
||||
|
||||
Reference in New Issue
Block a user