test(backend): +31 integration tests for permissions/overview/search/sessions/features

Coverage:
- Permissions: role/user toggle + audit + token_version bump, /me, 403 non-admin (10 tests)
- Admin overview: shape, all fields, types, auth guard, empty DB zeros (4 tests)
- Cmd+K search: shape, min-query empty, SQL injection sanity, user lookup (5 tests)
- Session delete: CASCADE, audit entry, 404 missing, 403 non-admin (4 tests)
- Feature gates: disabled flag returns 404, enabled returns 401/200, admin API toggle (5 tests)
- setup.js: add /api/permissions, /api/pet, /api/biochem routes for test coverage

tests 66 (was 35) · pass 63 (was 32) · fail 3 (baseline auth.test.js, unchanged)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-05-22 21:58:37 +03:00
parent 696049271f
commit 1fdbb9a445
6 changed files with 553 additions and 0 deletions
+8
View File
@@ -42,6 +42,14 @@ app.use('/api/admin', require('../src/routes/admin'));
app.use('/api/subjects', require('../src/routes/subjects'));
app.use('/api/questions', require('../src/routes/questions'));
// Additional routes for integration tests
app.use('/api/permissions', require('../src/routes/permissions'));
// Feature-gated routes (requireFeature checks app_settings in DB)
const { requireFeature } = require('../src/middleware/features');
app.use('/api/pet', requireFeature('pet'), require('../src/routes/pet'));
app.use('/api/biochem', requireFeature('biochem'), require('../src/routes/biochem'));
// Error handler
app.use((err, _req, res, _next) => {
res.status(err.status || 500).json({ error: err.message || 'Server error' });