K-VAULT / test /server-error-envelope.test.js
spongyicybulk's picture
feat: auto-generate runtime secrets for hf
b1ed7a0 verified
Raw
History Blame Contribute Delete
2.68 kB
const assert = require('assert');
const fs = require('node:fs');
const os = require('node:os');
const path = require('node:path');
const { createApp } = require('../server/app');
function restoreEnv(snapshot) {
for (const key of Object.keys(process.env)) {
delete process.env[key];
}
Object.assign(process.env, snapshot);
}
describe('server error envelope', function () {
let envSnapshot;
let tempDir;
beforeEach(function () {
envSnapshot = { ...process.env };
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'k-vault-server-'));
process.env.NODE_ENV = 'test';
process.env.PORT = '0';
process.env.DATA_DIR = tempDir;
process.env.DB_PATH = path.join(tempDir, 'k-vault.db');
process.env.CHUNK_DIR = path.join(tempDir, 'chunks');
process.env.BASIC_USER = 'admin';
process.env.BASIC_PASS = 'admin';
process.env.SQLITE_BACKUP_ENABLED = 'false';
process.env.RUNTIME_SECRETS_AUTO_GENERATE = 'false';
delete process.env.CONFIG_ENCRYPTION_KEY;
delete process.env.SESSION_SECRET;
delete process.env.FILE_URL_SECRET;
});
afterEach(function () {
restoreEnv(envSnapshot);
fs.rmSync(tempDir, { recursive: true, force: true });
});
it('returns JSON when encrypted storage config save fails', async function () {
const app = await createApp();
const authHeader = `Basic ${Buffer.from('admin:admin').toString('base64')}`;
const originalConsoleError = console.error;
console.error = () => {};
try {
const response = await app.fetch(new Request('http://localhost/api/storage', {
method: 'POST',
headers: {
Accept: 'application/vnd.kvault.v2+json',
Authorization: authHeader,
'Content-Type': 'application/json',
'X-KVault-Client': 'app-v2',
},
body: JSON.stringify({
name: 'hf-space',
type: 'huggingface',
enabled: true,
isDefault: true,
config: {
token: 'hf_xxx',
repo: 'owner/dataset',
},
}),
}));
const payload = JSON.parse(await response.text());
assert.strictEqual(response.status, 500);
assert.match(response.headers.get('content-type') || '', /application\/json/i);
assert.strictEqual(payload.success, false);
assert.strictEqual(payload.error.code, 'SERVER_MISCONFIGURED');
assert.match(payload.error.message, /CONFIG_ENCRYPTION_KEY|SESSION_SECRET/i);
assert.match(payload.error.detail, /CONFIG_ENCRYPTION_KEY/i);
assert.ok(payload.traceId);
} finally {
console.error = originalConsoleError;
await app.container.close();
}
});
});