Files
insforge--insforge/backend/tests/unit/database-schema-routes.test.ts
wehub-resource-sync 3a28426bf4
Lint and Format Check / lint-and-format (push) Failing after 0s
Check Migrations / Check for duplicate migration numbers (push) Failing after 1s
CI Pre-merge Check / CI Pre-merge Check (push) Failing after 2m17s
chore: import upstream snapshot with attribution
2026-07-13 12:23:40 +08:00

53 lines
2.2 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { readFileSync } from 'fs';
import { resolve } from 'path';
describe('database schema route wiring', () => {
const indexRoutesSource = readFileSync(
resolve(__dirname, '../../src/api/routes/database/index.routes.ts'),
'utf-8'
);
const tableRoutesSource = readFileSync(
resolve(__dirname, '../../src/api/routes/database/tables.routes.ts'),
'utf-8'
);
const adminRoutesSource = readFileSync(
resolve(__dirname, '../../src/api/routes/database/admin.routes.ts'),
'utf-8'
);
it('adds a dedicated schema listing endpoint', () => {
expect(indexRoutesSource).toMatch(/router\.get\(\s*'\/schemas'/);
expect(indexRoutesSource).toContain('databaseService.getSchemas()');
});
it('mounts a separate admin database router for dashboard-only record access', () => {
expect(indexRoutesSource).toContain("router.use('/admin', databaseAdminRouter);");
expect(adminRoutesSource).toMatch(/router\.get\(\s*'\/tables\/:tableName\/records'/);
expect(adminRoutesSource).toContain(
'paginatedResponse(res, response.records, response.total, offset);'
);
expect(adminRoutesSource).not.toContain('PostgrestProxyService');
});
it('normalizes schema query params across dashboard database routes', () => {
expect(indexRoutesSource).toContain('normalizeDatabaseSchemaName(req.query.schema)');
expect(tableRoutesSource).toContain('normalizeDatabaseSchemaName(req.query.schema)');
});
it('passes schema names through table management handlers', () => {
expect(tableRoutesSource).toContain('tableService.listTables(schemaName)');
expect(tableRoutesSource).toContain(
'const { tableName, columns, foreignKeys, rlsEnabled } = validation.data'
);
expect(tableRoutesSource).toMatch(
/tableService\.createTable\(\s*schemaName,\s*tableName,\s*columns,\s*foreignKeys,\s*rlsEnabled\s*\)/s
);
expect(tableRoutesSource).toContain('tableService.getTableSchema(schemaName, tableName)');
expect(tableRoutesSource).toContain(
'tableService.updateTableSchema(schemaName, tableName, operations)'
);
expect(tableRoutesSource).toContain('tableService.deleteTable(schemaName, tableName)');
});
});