Firestoreのセキュリティルールのユニットテストでハマったこと
Firestoreのセキュリティルールのテストを書こうとしたらいろいろハマったので殴り書き。
環境
Typescript
+Jest
+@firebase/rules-unit-testing
テストフレームワークとしてFirebaseのドキュメントで使われているmocha
の代わりにJest
を使っているが、今回の話には全く関係ない。
ハマりポイント
@firebase/rules-unit-testing
のインポートにはワイルドカードを使う
正:
import * as firebase from "@firebase/rules-unit-testing";
誤:
import firebase from "@firebase/rules-unit-testing";
誤っているほうだと、app()
やloadFirestoreRules()
などテストに必要不可欠なメソッドが呼べない。
しかも型エラーが出ないのでたちが悪い。
アサーションにはawait
が必要
正:
it("some test", async () => { /* ... */ await firebase.assertSucceeds(/* ... */); });
誤:
it("some test", () => { /* ... */ firebase.assertSucceeds(/* ... */); });
誤っているほうだと常にテストがPASSしてしまう。