Test Basic signup without promo

This commit is contained in:
pavlov346346-source 2026-09-22 18:33:57 +08:00
parent b103d4aa24
commit ca402418c4

View File

@ -3,6 +3,7 @@ import fs from 'node:fs';
const auth=fs.readFileSync('public/core/auth-security-v1774.js','utf8'); const auth=fs.readFileSync('public/core/auth-security-v1774.js','utf8');
const perf=fs.readFileSync('public/core/performance.js','utf8'); const perf=fs.readFileSync('public/core/performance.js','utf8');
const migration=fs.readFileSync('ops/sql/SUPABASE-V17.7.4-AUTH-EMAIL-VERIFICATION.sql','utf8'); const migration=fs.readFileSync('ops/sql/SUPABASE-V17.7.4-AUTH-EMAIL-VERIFICATION.sql','utf8');
const basicSignup=fs.readFileSync('ops/sql/SUPABASE-V17.9.1-PUBLIC-BASIC-SIGNUP.sql','utf8');
let bad=0; let bad=0;
const check=(ok,msg)=>{console.log(`${ok?'OK':'FAIL'}: ${msg}`);if(!ok)bad++;}; const check=(ok,msg)=>{console.log(`${ok?'OK':'FAIL'}: ${msg}`);if(!ok)bad++;};
@ -11,6 +12,12 @@ check(auth.includes('showPublicConfirmation')&&auth.includes('Подтверди
check(auth.includes('showInviteConfirmation'),'invite signup waits for email confirmation'); check(auth.includes('showInviteConfirmation'),'invite signup waits for email confirmation');
check(!auth.includes("registration_source:'caterium_public_signup'")&&!auth.includes("registration_source:'caterium_invite_signup'"),'security guard does not trust client-controlled registration_source'); check(!auth.includes("registration_source:'caterium_public_signup'")&&!auth.includes("registration_source:'caterium_invite_signup'"),'security guard does not trust client-controlled registration_source');
check(auth.includes("result.data?.session")&&auth.includes('signOutUnsafeSession'),'guard fails closed if server still auto-confirms'); check(auth.includes("result.data?.session")&&auth.includes('signOutUnsafeSession'),'guard fails closed if server still auto-confirms');
check(auth.includes('Промокод — необязательно')&&auth.includes('caterium_public_signup_policy'),'registration supports an optional promo only after the server policy confirms it');
check(auth.includes("return {valid:true,plan:'basic',withoutPromo:true}"),'no-promo signup resolves to Basic in the client guard');
check(auth.includes("pending?.email")&&!auth.includes("!pending?.promoCode"),'owner onboarding no longer requires a promo code');
check(basicSignup.includes("'basic','active'")&&basicSignup.includes("'public_signup_basic'"),'server assigns permanent active Basic access to no-promo owners');
check(basicSignup.includes("if v_has_promo then")&&basicSignup.includes("'promo_trial'"),'valid promo path still assigns the promo plan and trial period');
check(basicSignup.includes('caterium_public_signup_policy')&&basicSignup.includes("'promo_optional', true"),'server advertises optional promo capability only with the matching migration');
check(perf.includes('loadAuthSecurity')&&perf.includes('auth-security-v1774.js'),'auth security guard is loaded by performance core'); check(perf.includes('loadAuthSecurity')&&perf.includes('auth-security-v1774.js'),'auth security guard is loaded by performance core');
check(migration.includes('drop trigger if exists caterium_autoconfirm_signup_v25 on auth.users'),'autoconfirm users trigger is removed'); check(migration.includes('drop trigger if exists caterium_autoconfirm_signup_v25 on auth.users'),'autoconfirm users trigger is removed');
check(migration.includes('drop trigger if exists caterium_autoverify_identity_v25 on auth.identities'),'autoverify identity trigger is removed'); check(migration.includes('drop trigger if exists caterium_autoverify_identity_v25 on auth.identities'),'autoverify identity trigger is removed');