import assert from "node:assert/strict"; import { readFile, readdir } from "node:fs/promises"; import { PGlite } from "../.data/sql-verification/node_modules/@electric-sql/pglite/dist/index.js"; const db = new PGlite(); try { await db.exec(`create role anon; create role authenticated; create role service_role bypassrls; create schema auth; create table auth.users(id uuid primary key); create function auth.uid() returns uuid language sql as $$ select null::uuid $$; create schema storage; create table storage.buckets(id text primary key,name text,public boolean,file_size_limit bigint);`); for (const file of (await readdir("supabase/migrations")) .filter((f) => f.endsWith(".sql")) .sort()) await db.exec(await readFile(`supabase/migrations/${file}`, "utf8")); await db.exec(`insert into auth.users values ('00000000-0000-4000-8000-000000000001'),('00000000-0000-4000-8000-000000000002'); insert into public.profiles(id,role) values ('00000000-0000-4000-8000-000000000001','admin'),('00000000-0000-4000-8000-000000000002','contributor');`); const flag = async () => (await db.query("select beta_badge_enabled from public.site_settings")) .rows[0].beta_badge_enabled; assert.equal(await flag(), true); for (const role of ["anon", "authenticated"]) { await db.exec(`set role ${role}`); await assert.rejects( db.query("update public.site_settings set beta_badge_enabled = false"), /permission denied/, ); await assert.rejects( db.query( "select public.set_beta_badge('00000000-0000-4000-8000-000000000001', false)", ), /permission denied/, ); await db.exec("reset role"); } await db.exec("set role service_role"); await assert.rejects( db.query( "select public.set_beta_badge('00000000-0000-4000-8000-000000000002', false)", ), /Admin permission required/, ); await assert.rejects( db.query("select public.set_beta_badge(null, false)"), /Admin permission required/, ); assert.equal(await flag(), true); await db.query( "select public.set_beta_badge('00000000-0000-4000-8000-000000000001', false)", ); assert.equal(await flag(), false); assert.equal( (await db.query("select updated_by from public.site_settings")).rows[0] .updated_by, "00000000-0000-4000-8000-000000000001", ); await db.query( "select public.set_beta_badge('00000000-0000-4000-8000-000000000001', true)", ); assert.equal(await flag(), true); await assert.rejects( db.query( "select public.set_beta_badge('00000000-0000-4000-8000-000000000001', null)", ), /visibility is required/, ); console.log( "Site settings SQL passed: guests and players denied; admins can hide and restore; updates persist and record the admin.", ); } finally { await db.close(); }