diff --git a/tests/password-security-v1774.mjs b/tests/password-security-v1774.mjs index 2846b42..9337bea 100644 --- a/tests/password-security-v1774.mjs +++ b/tests/password-security-v1774.mjs @@ -12,7 +12,9 @@ check(!/user_metadata:\s*\{[^}]*must_change_password:\s*true/s.test(employee),'n check(account.includes('user?.app_metadata?.must_change_password===true'),'client gate reads only app metadata marker'); check(!account.includes('user_metadata?.must_change_password'),'client gate does not trust user metadata marker'); check(account.includes("c.functions.invoke('caterium-change-password'")||account.includes("c.functions.invoke(\"caterium-change-password\""),'client changes passwords through server edge'); +check(account.includes('result?.error?.context')&&account.includes('context.clone().json()'),'client surfaces safe structured Edge errors'); check(change.includes('caller.auth.getUser()')&&change.includes('signInWithPassword'),'password edge verifies JWT user and current password'); +check(change.includes('verifier.auth.signOut({ scope: "local" })'),'temporary password-verification session is closed'); check(change.includes('auth.admin.updateUserById')&&change.includes('must_change_password: false'),'password edge atomically updates password and clears server marker'); check(change.includes('current_password_invalid')&&change.includes('password_change_failed'),'password edge returns stable safe errors'); check(change.includes('npm:@supabase/supabase-js@2.116.0')&&changeMap.includes('npm:@supabase/supabase-js@2.116.0'),'password edge dependencies are pinned');