Firebase 安全规则——测试服务器时间戳

时间:2021-02-08 05:34:01

标签: firebase google-cloud-firestore firebase-security firebase-tools

使用 @firebase/rules-unit-testing 测试 firebase 安全规则,如何测试文档的 createdAt 字段是否为当前时间?这是用于 Cloud Firestore。

背景

借助 Firebase 安全规则,您可以确保将字段保存为服务器时间戳。

match /collection/{docId} {
    allow create: if request.time == request.resource.data.createdAt
}

此安全规则有效。如果你要在浏览器中写入文档,你会这样做:

firebase.firestore().collection('collection').add({
    createdAt: firebase.firestore.FieldValue.serverTimestamp()
})

但是,@firebase/rules-unit-testing 中不存在服务器时间戳方法。

代码

这是测试设置的样板,使用 Jest:

import { initializeTestApp } from '@firebase/rules-unit-testing'

const app = initializeTestApp({ projectId: 'id' })

test('some test', async () => {
    firebase.assertSuccees(
        app.firestore().collection('collection').add({
            createdAt: firebase.firestore.FieldValue.serverTimestamp()
        })
    )
})

问题在于未定义 firebase.firestore.FieldValue(与浏览器示例不同)。

此外,app.firestore.FieldValue 也未定义。

那么如何获取服务器时间戳来测试此安全规则?

元数据

  • firebase 工具:9.3.0
  • @firebase/rules-unit-testing:1.1.9
  • 开玩笑:26.6.3
  • 使用模拟器

0 个答案:

没有答案