ฟังก์ชัน
ฟังก์ชัน | คำอธิบาย |
---|---|
ข้อผิดพลาด AssertFails(pr) | ยืนยันคำสัญญาว่าจะถูกปฏิเสธด้วย "สิทธิ์ถูกปฏิเสธ" มีประโยชน์ในการยืนยันคำขอบางรายการเพื่อให้กฎความปลอดภัยปฏิเสธ โปรดดูตัวอย่างด้านล่าง ฟังก์ชันนี้จะตรวจจับข้อผิดพลาดการปฏิเสธสิทธิ์จากฐานข้อมูล, Firestore และ SDK ของ Storage JS |
ยืนยันความสำเร็จ(pr) | ยืนยันคำสัญญาว่าจะถูกปฏิเสธด้วย "สิทธิ์ถูกปฏิเสธ" นี่เป็นฟังก์ชัน no-op ที่ส่งคืนคำมั่นสัญญาที่ส่งตามที่เป็น แต่สามารถใช้ในเอกสารประกอบในโค้ดทดสอบเพื่อเน้นว่าคำขอบางอย่างควรสำเร็จ (เช่น อนุญาตโดยกฎ) |
initializeTestEnvironment(config) | เริ่มต้นสภาพแวดล้อมการทดสอบสำหรับการทดสอบหน่วยของกฎ เรียกใช้ฟังก์ชันนี้ก่อนเพื่อทดสอบการตั้งค่าต้องมีโปรแกรมจำลองทำงานอยู่ ฟังก์ชันนี้จะพยายามค้นหาตัวจำลองเหล่านั้นผ่านตัวแปรสภาพแวดล้อมหรือผ่านฮับจำลอง Firebase หากไม่ได้ระบุโฮสต์และพอร์ต ขอแนะนำให้ระบุกฎความปลอดภัยสำหรับโปรแกรมจำลองที่ใช้สำหรับการทดสอบ ดูตัวอย่างแบบย่อด้านล่าง |
withFunctionTriggersDisabled(fn) | เรียกใช้ฟังก์ชันการตั้งค่าที่ปิดใช้ทริกเกอร์ Cloud Functions ในเบื้องหลัง โดยจะใช้เพื่อนำเข้าข้อมูลไปยังโปรแกรมจำลอง Realtime Database หรือ Cloud Firestore โดยไม่ต้องทริกเกอร์ Cloud Functions ที่จำลองในเครื่องวิธีนี้ใช้ได้เฉพาะกับ Firebase CLI เวอร์ชัน 8.13.0 ขึ้นไปเท่านั้น โอเวอร์โหลดนี้จะทำงานต่อเมื่อตัวแปรสภาพแวดล้อม FIREBASE_EMULATOR_HUB ระบุโฮสต์:พอร์ตของฮับโปรแกรมจำลอง |
withFunctionTriggersDisabled(hub, fn) | เรียกใช้ฟังก์ชันการตั้งค่าที่ปิดใช้ทริกเกอร์ Cloud Functions ในเบื้องหลัง โดยจะใช้เพื่อนำเข้าข้อมูลไปยังโปรแกรมจำลอง Realtime Database หรือ Cloud Firestore โดยไม่ต้องทริกเกอร์ Cloud Functions ที่จำลองในเครื่องวิธีนี้ใช้ได้เฉพาะกับ Firebase CLI เวอร์ชัน 8.13.0 ขึ้นไปเท่านั้น ฮับโปรแกรมจำลองต้องทำงานอยู่ ซึ่งระบุโฮสต์และพอร์ตใดไว้ในโอเวอร์โหลดนี้ |
อินเทอร์เฟซ
อินเทอร์เฟซ | คำอธิบาย |
---|---|
HostAndPort | ออบเจ็กต์ที่มีชื่อโฮสต์และหมายเลขพอร์ตของโปรแกรมจำลอง |
กฎTestContext | บริบททดสอบที่แสดงถึงลูกค้า สามารถใช้เพื่อเข้าถึงโปรแกรมจำลองสำหรับการทดสอบหน่วยของกฎ |
กฎการทดสอบสภาพแวดล้อม | ออบเจ็กต์ที่ใช้ควบคุมสภาพแวดล้อมการทดสอบหน่วยกฎ สามารถใช้สร้าง RulesTestContext สำหรับกรณีการตรวจสอบสิทธิ์ที่แตกต่างกัน |
TestEnvironmentConfig | การกำหนดค่าสภาพแวดล้อมการทดสอบ 1 หน่วย รวมถึงโปรแกรมจำลอง |
พิมพ์ชื่อแทน
พิมพ์ชื่อแทน | คำอธิบาย |
---|---|
EmulatorConfig | การกำหนดค่าสำหรับโปรแกรมจำลองที่ระบุ |
ตัวเลือกโทเค็น | ตัวเลือกเพิ่มเติมสำหรับโทเค็นจำลองผู้ใช้ที่จะใช้สำหรับการทดสอบ รวมถึงการอ้างสิทธิ์ที่กำหนดเองที่นักพัฒนาระบุ หรือการลบล้างที่ไม่บังคับสำหรับเพย์โหลดโทเค็นการตรวจสอบสิทธิ์ Firebase |
VerifyFails()
ยืนยันคำสัญญาว่าจะถูกปฏิเสธด้วย "สิทธิ์ถูกปฏิเสธ"
มีประโยชน์ในการยืนยันคำขอบางรายการที่จะให้กฎความปลอดภัยปฏิเสธ โปรดดูตัวอย่างด้านล่าง ฟังก์ชันนี้จะตรวจจับข้อผิดพลาดการปฏิเสธสิทธิ์จากฐานข้อมูล, Firestore และ SDK ของ Storage JS
ลายเซ็น:
export declare function assertFails(pr: Promise<any>): Promise<any>;
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
แข่ง | สัญญา<ไม่จำกัด> | คำสัญญาที่จะมีการยืนยัน |
การคืนสินค้า:
สัญญา<ไม่จำกัด>
คำสัญญาที่ทำสำเร็จหากคำขอถูกปฏิเสธโดยมีข้อความ "สิทธิ์ถูกปฏิเสธ" หาก pr ถูกปฏิเสธโดยมีข้อผิดพลาดอื่นหรือได้รับการแก้ไข สัญญาที่ส่งกลับมาจะปฏิเสธ
ตัวอย่าง
const unauthed = testEnv.unauthenticatedContext();
await assertFails(getDoc(unauthed.firestore(), '/private/doc'), { ... });
VerifySucceeds()
ยืนยันคำสัญญาว่าจะประสบความสำเร็จ
นี่เป็นฟังก์ชันที่ไม่มีการดำเนินการซึ่งแสดงผลคำสัญญาที่ผ่านแล้วตามที่เป็น แต่สามารถใช้สำหรับจุดประสงค์ในเอกสารในโค้ดทดสอบเพื่อเน้นว่าคำขอบางรายการควรสำเร็จ (เช่น อนุญาตโดยกฎ)
ลายเซ็น:
export declare function assertSucceeds<T>(pr: Promise<T>): Promise<T>;
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
แข่ง | สัญญา<T> |
การคืนสินค้า:
สัญญา<T>
ตัวอย่าง
const alice = testEnv.authenticatedContext('alice');
await assertSucceeds(getDoc(alice.firestore(), '/doc/readable/by/alice'), { ... });
defaultizeTestEnvironment()
เริ่มต้นสภาพแวดล้อมการทดสอบสำหรับการทดสอบหน่วยของกฎ เรียกใช้ฟังก์ชันนี้ก่อนเพื่อทดสอบการตั้งค่า
โปรแกรมจำลองต้องทำงานอยู่ ฟังก์ชันนี้จะพยายามค้นหาตัวจำลองเหล่านั้นผ่านตัวแปรสภาพแวดล้อมหรือผ่านฮับจำลอง Firebase หากไม่ได้ระบุโฮสต์และพอร์ต ขอแนะนำให้ระบุกฎความปลอดภัยสำหรับโปรแกรมจำลองที่ใช้สำหรับการทดสอบ ดูตัวอย่างแบบย่อด้านล่าง
ลายเซ็น:
export declare function initializeTestEnvironment(config: TestEnvironmentConfig): Promise<RulesTestEnvironment>;
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
การกำหนดค่า | TestEnvironmentConfig | การกำหนดค่าสำหรับโปรแกรมจำลอง ช่องส่วนใหญ่ไม่บังคับหากค้นพบได้ |
การคืนสินค้า:
สัญญา<RulesTestEnvironment>
คำมั่นสัญญาที่แก้ไขได้ด้วยสภาพแวดล้อมที่พร้อมสำหรับการทดสอบ หรือถูกปฏิเสธเมื่อเกิดข้อผิดพลาด
ตัวอย่าง
const testEnv = await initializeTestEnvironment({
firestore: {
rules: fs.readFileSync("/path/to/firestore.rules", "utf8"), // Load rules from file
// host and port can be omitted if they can be discovered from the hub.
},
// ...
});
withFunctionTriggersDisabled()
เรียกใช้ฟังก์ชันการตั้งค่าที่ปิดใช้ทริกเกอร์ Cloud Functions ในเบื้องหลัง ซึ่งสามารถใช้เพื่อนำเข้าข้อมูลไปยังโปรแกรมจำลอง Realtime Database หรือ Cloud Firestore โดยไม่ต้องทริกเกอร์ Cloud Functions ที่จำลองในเครื่อง
วิธีนี้ใช้ได้เฉพาะกับ Firebase CLI เวอร์ชัน 8.13.0 ขึ้นไป โอเวอร์โหลดนี้จะทำงานต่อเมื่อตัวแปรสภาพแวดล้อม FIREBASE_EMULATOR_HUB ระบุโฮสต์:พอร์ตของฮับโปรแกรมจำลอง
ลายเซ็น:
export declare function withFunctionTriggersDisabled<TResult>(fn: () => TResult | Promise<TResult>): Promise<TResult>;
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
Fn | () => Tผลลัพธ์ | คำมั่นสัญญา<Tผลลัพธ์> | ฟังก์ชันที่อาจซิงค์หรือไม่ซิงค์ก็ได้ (แสดงสัญญา) |
การคืนสินค้า:
คำมั่นสัญญา<Tผลลัพธ์>
withFunctionTriggersDisabled()
เรียกใช้ฟังก์ชันการตั้งค่าที่ปิดใช้ทริกเกอร์ Cloud Functions ในเบื้องหลัง ซึ่งสามารถใช้เพื่อนำเข้าข้อมูลไปยังโปรแกรมจำลอง Realtime Database หรือ Cloud Firestore โดยไม่ต้องทริกเกอร์ Cloud Functions ที่จำลองในเครื่อง
วิธีนี้ใช้ได้เฉพาะกับ Firebase CLI เวอร์ชัน 8.13.0 ขึ้นไป ฮับโปรแกรมจำลองต้องทำงานอยู่ ซึ่งระบุโฮสต์และพอร์ตใดไว้ในโอเวอร์โหลดนี้
ลายเซ็น:
export declare function withFunctionTriggersDisabled<TResult>(hub: {
host: string;
port: number;
}, fn: () => TResult | Promise<TResult>): Promise<TResult>;
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
ฮับ | { host: string; Port: number; } | โฮสต์และพอร์ตของฮับโปรแกรมจำลอง (เช่น {host: 'localhost', port: 4400} ) |
Fn | () => Tผลลัพธ์ | คำมั่นสัญญา<Tผลลัพธ์> | ฟังก์ชันที่อาจซิงค์หรือไม่ซิงค์ก็ได้ (แสดงสัญญา) |
การคืนสินค้า:
คำมั่นสัญญา<Tผลลัพธ์>
การกำหนดค่าโปรแกรมจำลอง
การกำหนดค่าสำหรับโปรแกรมจำลองที่ระบุ
ลายเซ็น:
export declare type EmulatorConfig = {
rules?: string;
} & (HostAndPort | {});
ตัวเลือกโทเค็น
ตัวเลือกเพิ่มเติมสำหรับโทเค็นจำลองผู้ใช้ที่จะใช้สำหรับการทดสอบ รวมถึงการอ้างสิทธิ์ที่กำหนดเองที่นักพัฒนาระบุ หรือการลบล้างที่ไม่บังคับสำหรับเพย์โหลดโทเค็นการตรวจสอบสิทธิ์ Firebase
ลายเซ็น:
export declare type TokenOptions = {
iat?: number;
exp?: number;
auth_time?: number;
provider_id?: 'anonymous';
email?: string;
email_verified?: boolean;
phone_number?: string;
name?: string;
picture?: string;
firebase?: {
sign_in_provider: FirebaseSignInProvider;
identities?: {
[provider in FirebaseSignInProvider]?: string[];
};
};
aud?: string;
iss?: string;
[claim: string]: unknown;
uid?: never;
sub?: never;
user_id?: never;
};