【发布时间】:2023-02-16 08:21:28
【问题描述】:
我想测试 Firestore 规则。下面是 firestore.rules。我想检查这些安全规则是否有效。然后我尝试使用 jest 和 firebase 测试。但是,在执行“npm test”时,出现错误“connect ECONNREFUSED 127.0.0.1:8080”。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /clubUsers/{uid} {
allow read: if request.auth != null
&& request.auth.uid == uid;
allow create: if request.auth != null
&& request.auth.uid == uid;
allow update: if request.auth != null
&& request.auth.uid == uid;
}
}
}
我的测试脚本在这里。
const firebase = require('@firebase/testing/');
const fs = require('fs');
const project_id = "PROJECT ID";
describe("testing firestore rules", () => {
beforeAll(
async () => {
await firebase.loadFirestoreRules({
projectId: project_id,
rules: fs.readFileSync('../../firestore.rules', 'utf8'),
});
}
);
afterEach(
async () => {
await firebase.clearFirestoreData({ projectId: project_id });
}
);
afterAll(
async () => {
await Promise.all(
firebase.apps().map((app) => app.delete())
);
}
);
function authedApp(auth) {
return firebase.initializeTestApp({
projectId: project_id,
auth: auth,
}).firestore();
}
describe("testing get and write", () => {
test("testing get", async () => {
const db = authedApp({ uid: 'UID' });
const message = db.collection("clubUsers").doc("UID");
await firebase.assertSucceeds(message.get());
})
test("testing write", async () => {
const db = authedApp({ uid: "UID" });
const message = db.collection("clubUsers").doc("UID");
await firebase.assertSucceeds(
message.set({ text: "hoge" })
);
})
})
})
我在打开 firebase 模拟器时尝试了测试。
我通过在终端上执行 sudo lsof -P -i:8080 来检查什么正在使用端口 8080。
但是,没有任何东西使用端口 8080。
【问题讨论】:
标签: javascript firebase testing jestjs firebase-security