Flutter 앱 골격 · 5탭 네비게이션 · 로그인 화면 · Firestore 보안 규칙·인덱스
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user