firebase / firebase/quickstart-testing

example code passes incorrectly

オープン
#334 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
JavaScript
スター
368
フォーク
125
PR マージ指標
30日以内にマージされた PR はありません

説明

The function, expectPermissionGetSucceeds, can pass when it shouldn't.

https://github.com/firebase/quickstart-testing/blob/6ac0acf396e87e2588223151e8f0b4cf307a5e84/unit-test-security-rules-v9/test/utils.ts#L61

If your READ permissions return a PERMISSION_DENIED, then the getDoc promise will return the error code. however since this only expects that promise.not.toBeUndefined, then the error code meets that criteria.

I fixed locally by just adding the second check to make sure that the error code != PERMISSION_DENIED

```
export async function expectPermissionGetSucceeds(promise: Promise) {
const successResult = await assertSucceeds(promise);
expect(successResult).not.toBeUndefined();
expect(successResult.code).not.toBe('permission-denied' || 'PERMISSION_DENIED');
}
```

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

影響を受けるエントリポイントは、リンク先の行にある test/utils.ts の expectPermissionGetSucceeds です。assertSucceeds と getDoc が権限拒否の結果をどのように表現しているかを確認し、そのうえで READ が拒否されるケースを再現してください。読み取りが PERMISSION_DENIED を返したときに、helper が成功するのではなく失敗すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
firebase, typescript
領域
security, testing
issue の種類
バグ
難易度
2/5
見積もり時間
1〜3時間
活発さ
停滞
明瞭さ
明確に書かれている
初心者へのやさしさ
48/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。