18 lines
1.5 KiB
JavaScript
18 lines
1.5 KiB
JavaScript
import fs from 'node:fs';
|
|
const src=fs.readFileSync('supabase/functions/caterium-create-employee/index.ts','utf8');
|
|
const importMap=fs.readFileSync('supabase/functions/caterium-create-employee/deno.json','utf8');
|
|
let bad=0;const check=(v,m)=>{console.log(`${v?'OK':'FAIL'}: ${m}`);if(!v)bad++};
|
|
check(src.includes('npm:@supabase/supabase-js@2.116.0'),'Supabase JS direct import is pinned');
|
|
check(importMap.includes('npm:@supabase/supabase-js@2.116.0'),'Supabase JS import map is pinned');
|
|
check(!importMap.includes('npm:@supabase/supabase-js@2"'),'broad Supabase JS import map is removed');
|
|
check(!src.includes('"Access-Control-Allow-Origin": "*"'),'wildcard CORS is removed');
|
|
check(src.includes('https://app.caterium.ru')&&src.includes('WORKERS_DEV_ORIGIN'),'production and backup origins are allowlisted');
|
|
check(src.includes('origin_not_allowed'),'unknown browser origins fail closed');
|
|
check(src.includes('UUID_RE')&&src.includes('EMAIL_RE')&&src.includes('ALLOWED_ROLES'),'employee inputs are validated');
|
|
check(src.includes('["admin", "manager", "kitchen", "courier", "viewer"]'),'edge roles match database roles');
|
|
check(!src.includes('"operator"')&&!src.includes('"owner", "admin"'),'invented employee roles are not accepted');
|
|
check(src.includes('console.error("[caterium-create-employee]"'),'internal errors remain server-side');
|
|
check(src.includes('employee_create_failed'),'unexpected failures return a safe public code');
|
|
check(!src.includes('return reply({ error: e instanceof Error ? e.message'),'raw exception messages are not returned');
|
|
if(bad)process.exit(1);
|