Flutter 앱 골격 · 5탭 네비게이션 · 로그인 화면 · Firestore 보안 규칙·인덱스

This commit is contained in:
Sn-Kinos
2026-08-10 01:02:03 +09:00
parent fbba4405c3
commit 233ef99837
113 changed files with 8549 additions and 2 deletions
@@ -0,0 +1,41 @@
import { doc, getDoc, setDoc } from 'firebase/firestore';
import { assertSucceeds } from '@firebase/rules-unit-testing';
import {
createTestEnvironment,
seedDocuments,
userDocument,
} from '../support/environment.mjs';
const testEnvironment = await createTestEnvironment();
try {
await testEnvironment.clearFirestore();
const uid = 'negative-control-user';
const userDb = testEnvironment.authenticatedContext(uid).firestore();
let denial;
try {
await setDoc(doc(userDb, `users/${uid}/wallet/main`), { balance: 999_999 });
} catch (error) {
denial = error;
}
if (denial?.code !== 'permission-denied') {
throw new Error(
`Negative control failed: expected permission-denied, received ${denial?.code ?? 'success'}`,
);
}
console.log('NEGATIVE CONTROL PASS: authenticated wallet write -> permission-denied');
await seedDocuments(testEnvironment, {
[`users/${uid}`]: userDocument(uid),
[`users/${uid}/wallet/main`]: { balance: 100 },
});
await assertSucceeds(getDoc(doc(userDb, `users/${uid}/wallet/main`)));
console.log('REACHABILITY CONTROL PASS: owner wallet read -> allowed');
} finally {
await testEnvironment.cleanup();
}