mirror of
https://github.com/willchen96/mike.git
synced 2026-07-24 23:41:04 +02:00
Ports the backend route-level integration suites from the amal66 fork (index: Open-Legal-Products/mike#205), adapted from the fork's apps/api modules/services layout to this repo's monolithic backend/src/routes/*.ts layout. app/index split (the only production change; mechanical, zero behavior change): backend/src/index.ts previously built the express app and called app.listen at the bottom. Everything except the listen call moved verbatim into backend/src/app.ts, which now exports `app` (same middleware order, same routes, same rate-limiter setup, dotenv/config still imported first). index.ts is now a tiny entry that imports { app } and calls listen with the same log line. `npm run build` still emits dist/index.js and the `start` script is unchanged. New suites under backend/src/__tests__/integration/ (94 tests): - health.test.ts (5): /health, requireAuth 401 paths, 404 fallthrough - chat.routes.test.ts (6): POST /chat validation + SSE happy/error paths - projects.routes.test.ts (18): overview/create/detail/patch/delete, sharing normalisation, ownership guards - projectChat.routes.test.ts (3): project access guard + SSE paths - tabular.routes.test.ts (31): review CRUD, access guards, document-access filtering, missing_api_key guards - user.routes.test.ts (27): profile, API-key crypto boundary, MFA guards, export/deletion endpoints - documentsUpload.routes.test.ts (4): upload validation + download-zip bounds/access - access.supabase.test.ts (1) + stack.supabase.test.ts (4): gated on SUPABASE_TEST_URL / SUPABASE_TEST_SERVICE_ROLE_KEY (stack suite also needs SUPABASE_TEST_ANON_KEY); describe.skip otherwise - scripts/test-stack.sh + `npm run test:stack`: reads a running `supabase status -o json` and runs the gated suites Adds supertest + @types/supertest as devDependencies. Dropped relative to the fork (subjects that do not exist in this repo): - orgs.routes, credits.concurrency.supabase, dmsConnectors suites (fork-only features) - all credit-reservation cases (429 CREDIT_LIMIT_EXCEEDED, reserve-then-refund) in chat/projectChat: no credit system here - health /ready case: no /ready endpoint here - org-membership project access case: no org model here - upload magic-byte validation cases: this repo validates extension only (the fork adds content sniffing; replaced with a missing-file 400 case) - download-zip 50-document cap case: no cap here (replaced with a no-accessible-documents 404 case) - stack.supabase PUBLIC_TABLES updated to this repo's schema; the fork's credit-RPC coverage is n/a Verified locally: backend `npm test` -> 8 files passed, 2 skipped; 106 tests passed, 5 skipped (gated suites skip without env). `npm run build` passes. The gated suites were additionally run against a live local Supabase stack: 2 files, 5/5 tests passed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
49 lines
1.3 KiB
JSON
49 lines
1.3 KiB
JSON
{
|
|
"name": "mike-backend",
|
|
"version": "1.0.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "tsx watch src/index.ts",
|
|
"build": "tsc",
|
|
"start": "node dist/index.js",
|
|
"test": "vitest run",
|
|
"test:stack": "bash scripts/test-stack.sh"
|
|
},
|
|
"dependencies": {
|
|
"@anthropic-ai/sdk": "^0.90.0",
|
|
"@aws-sdk/client-s3": "^3.787.0",
|
|
"@aws-sdk/s3-request-presigner": "^3.787.0",
|
|
"@google/genai": "^1.50.1",
|
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
"@supabase/supabase-js": "^2.49.4",
|
|
"cors": "^2.8.5",
|
|
"docx": "^9.5.0",
|
|
"dotenv": "^17.4.1",
|
|
"express": "^4.21.2",
|
|
"express-rate-limit": "^8.5.1",
|
|
"fast-diff": "^1.3.0",
|
|
"fast-xml-parser": "^5.7.1",
|
|
"helmet": "^8.1.0",
|
|
"jszip": "^3.10.1",
|
|
"libreoffice-convert": "^1.6.0",
|
|
"mammoth": "^1.9.0",
|
|
"multer": "^1.4.5-lts.2",
|
|
"pdfjs-dist": "^4.10.38",
|
|
"resend": "^4.5.1",
|
|
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
|
|
"zod": "^3.25.76"
|
|
},
|
|
"devDependencies": {
|
|
"@types/cors": "^2.8.17",
|
|
"@types/express": "^4.17.21",
|
|
"@types/multer": "^1.4.12",
|
|
"@types/node": "^22.14.1",
|
|
"@types/supertest": "^7.2.1",
|
|
"prettier": "^3.8.1",
|
|
"supertest": "^7.2.2",
|
|
"tsx": "^4.19.3",
|
|
"typescript": "^5.8.3",
|
|
"vitest": "^4.1.9"
|
|
},
|
|
"license": "AGPL-3.0-only"
|
|
}
|