ฟังก์ชั่น
การทำงาน | คำอธิบาย |
---|---|
assertFails (PR) | ยืนยันคำมั่นสัญญาที่จะถูกปฏิเสธโดยมีข้อผิดพลาด "สิทธิ์ถูกปฏิเสธ" มีประโยชน์ในการยืนยันคำขอบางอย่างที่ถูกปฏิเสธตามกฎความปลอดภัย ดูตัวอย่างด้านล่าง ฟังก์ชันนี้รับรู้ข้อผิดพลาดที่ถูกปฏิเสธสิทธิ์จาก Database, Firestore และ Storage JS SDK |
ยืนยันความสำเร็จ(pr) | ยืนยันคำมั่นสัญญาที่จะถูกปฏิเสธโดยมีข้อผิดพลาด "สิทธิ์ถูกปฏิเสธ" นี่เป็นฟังก์ชัน no-op ที่ส่งคืนสัญญาที่ส่งผ่านตามที่เป็นอยู่ แต่สามารถใช้เพื่อวัตถุประสงค์ด้านเอกสารในโค้ดทดสอบเพื่อเน้นว่าคำขอบางอย่างควรประสบความสำเร็จ (เช่น ได้รับอนุญาตตามกฎ) |
เริ่มต้น TestEnvironment (config) | เริ่มต้นสภาพแวดล้อมการทดสอบสำหรับการทดสอบหน่วยกฎ เรียกใช้ฟังก์ชันนี้ก่อนเพื่อทดสอบการตั้งค่า ต้องใช้โปรแกรมจำลองในการทำงาน ฟังก์ชันนี้จะพยายามค้นหาโปรแกรมจำลองเหล่านั้นผ่านตัวแปรสภาพแวดล้อมหรือผ่านฮับ Firebase Emulator หากไม่ได้ระบุโฮสต์และพอร์ต ขอแนะนำอย่างยิ่งให้ระบุกฎความปลอดภัยสำหรับโปรแกรมจำลองที่ใช้สำหรับการทดสอบ ดูตัวอย่างขั้นต่ำด้านล่าง |
withFunctionTriggersDisabled (fn) | เรียกใช้ฟังก์ชันการตั้งค่าโดยปิดใช้ทริกเกอร์ Cloud Functions ในเบื้องหลัง ซึ่งสามารถใช้เพื่อนำเข้าข้อมูลไปยังฐานข้อมูลเรียลไทม์หรือโปรแกรมจำลอง Cloud Firestore โดยไม่ต้องทริกเกอร์ฟังก์ชันคลาวด์ที่จำลองในเครื่อง วิธีการนี้ใช้ได้กับ Firebase CLI เวอร์ชัน 8.13.0 ขึ้นไปเท่านั้น การโอเวอร์โหลดนี้จะใช้งานได้ก็ต่อเมื่อมีการระบุโฮสต์ฮับ Emulator: พอร์ตโดยตัวแปรสภาพแวดล้อม FIREBASE_EMULATOR_HUB |
withFunctionTriggersDisabled (ฮับ fn) | เรียกใช้ฟังก์ชันการตั้งค่าโดยปิดใช้ทริกเกอร์ Cloud Functions ในเบื้องหลัง ซึ่งสามารถใช้เพื่อนำเข้าข้อมูลไปยังฐานข้อมูลเรียลไทม์หรือโปรแกรมจำลอง Cloud Firestore โดยไม่ต้องทริกเกอร์ฟังก์ชันคลาวด์ที่จำลองในเครื่อง วิธีการนี้ใช้ได้กับ Firebase CLI เวอร์ชัน 8.13.0 ขึ้นไปเท่านั้น ฮับ Emulator จะต้องทำงานอยู่ โดยมีการระบุโฮสต์และพอร์ตใดไว้ในโอเวอร์โหลดนี้ |
อินเทอร์เฟซ
อินเตอร์เฟซ | คำอธิบาย |
---|---|
โฮสต์และพอร์ต | อ็อบเจ็กต์ที่มีชื่อโฮสต์และหมายเลขพอร์ตของโปรแกรมจำลอง |
กฎบริบทการทดสอบ | บริบทการทดสอบที่แสดงถึงไคลเอนต์ สามารถใช้เพื่อเข้าถึงโปรแกรมจำลองสำหรับการทดสอบหน่วยกฎ |
กฎการทดสอบสภาพแวดล้อม | ออบเจ็กต์ที่ใช้ในการควบคุมสภาพแวดล้อมการทดสอบหน่วยกฎ สามารถใช้เพื่อสร้าง RulesTestContext สำหรับสถานการณ์การตรวจสอบสิทธิ์ที่แตกต่างกัน |
ทดสอบสภาพแวดล้อมการกำหนดค่า | การกำหนดค่าสภาพแวดล้อมการทดสอบหน่วย รวมถึงโปรแกรมจำลอง |
พิมพ์นามแฝง
พิมพ์นามแฝง | คำอธิบาย |
---|---|
EmulatorConfig | การกำหนดค่าสำหรับโปรแกรมจำลองที่กำหนด |
TokenOptions | ตัวเลือกเพิ่มเติมสำหรับโทเค็นผู้ใช้จำลองที่จะใช้สำหรับการทดสอบ รวมถึงการอ้างสิทธิ์แบบกำหนดเองที่นักพัฒนาระบุ หรือการแทนที่ตัวเลือกสำหรับเพย์โหลดโทเค็น Firebase Auth |
assertFails ()
ยืนยันคำมั่นสัญญาที่จะถูกปฏิเสธโดยมีข้อผิดพลาด "สิทธิ์ถูกปฏิเสธ"
มีประโยชน์ในการยืนยันคำขอบางอย่างที่ถูกปฏิเสธตามกฎความปลอดภัย ดูตัวอย่างด้านล่าง ฟังก์ชันนี้รับรู้ข้อผิดพลาดที่ถูกปฏิเสธสิทธิ์จาก Database, Firestore และ Storage JS SDK
ลายเซ็น:
export declare function assertFails(pr: Promise<any>): Promise<any>;
พารามิเตอร์
พารามิเตอร์ | พิมพ์ | คำอธิบาย |
---|---|---|
ราคา | สัญญา<ใดๆ> | คำสัญญาที่จะยืนยัน |
ผลตอบแทน:
สัญญา<ใดๆ>
คำสัญญาที่จะเกิดขึ้นหาก pr ถูกปฏิเสธด้วย "การอนุญาตถูกปฏิเสธ" หาก pr ถูกปฏิเสธโดยมีข้อผิดพลาดอื่นหรือได้รับการแก้ไขแล้ว สัญญาที่ส่งคืนจะปฏิเสธ
ตัวอย่าง
const unauthed = testEnv.unauthenticatedContext();
await assertFails(getDoc(unauthed.firestore(), '/private/doc'), { ... });
ยืนยันความสำเร็จ()
ยืนยันสัญญาว่าจะประสบความสำเร็จ
นี่เป็นฟังก์ชัน no-op ที่ส่งคืนสัญญาที่ส่งผ่านตามที่เป็นอยู่ แต่สามารถใช้เพื่อวัตถุประสงค์ด้านเอกสารในโค้ดทดสอบเพื่อเน้นว่าคำขอบางอย่างควรประสบความสำเร็จ (เช่น ได้รับอนุญาตตามกฎ)
ลายเซ็น:
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'), { ... });
เริ่มต้น TestEnvironment()
เริ่มต้นสภาพแวดล้อมการทดสอบสำหรับการทดสอบหน่วยกฎ เรียกใช้ฟังก์ชันนี้ก่อนเพื่อทดสอบการตั้งค่า
ต้องใช้โปรแกรมจำลองในการทำงาน ฟังก์ชันนี้จะพยายามค้นหาโปรแกรมจำลองเหล่านั้นผ่านตัวแปรสภาพแวดล้อมหรือผ่านฮับ Firebase Emulator หากไม่ได้ระบุโฮสต์และพอร์ต ขอแนะนำอย่างยิ่งให้ระบุกฎความปลอดภัยสำหรับโปรแกรมจำลองที่ใช้สำหรับการทดสอบ ดูตัวอย่างขั้นต่ำด้านล่าง
ลายเซ็น:
export declare function initializeTestEnvironment(config: TestEnvironmentConfig): Promise<RulesTestEnvironment>;
พารามิเตอร์
พารามิเตอร์ | พิมพ์ | คำอธิบาย |
---|---|---|
กำหนดค่า | ทดสอบสภาพแวดล้อมการกำหนดค่า | การกำหนดค่าสำหรับโปรแกรมจำลอง ฟิลด์ส่วนใหญ่เป็นทางเลือกหากสามารถค้นพบได้ |
ผลตอบแทน:
สัญญา < 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 ในเบื้องหลัง ซึ่งสามารถใช้เพื่อนำเข้าข้อมูลไปยังฐานข้อมูลเรียลไทม์หรือโปรแกรมจำลอง Cloud Firestore โดยไม่ต้องทริกเกอร์ฟังก์ชันคลาวด์ที่จำลองในเครื่อง
วิธีการนี้ใช้ได้กับ Firebase CLI เวอร์ชัน 8.13.0 ขึ้นไปเท่านั้น การโอเวอร์โหลดนี้จะใช้งานได้ก็ต่อเมื่อมีการระบุโฮสต์ฮับ Emulator: พอร์ตโดยตัวแปรสภาพแวดล้อม FIREBASE_EMULATOR_HUB
ลายเซ็น:
export declare function withFunctionTriggersDisabled<TResult>(fn: () => TResult | Promise<TResult>): Promise<TResult>;
พารามิเตอร์
พารามิเตอร์ | พิมพ์ | คำอธิบาย |
---|---|---|
เอฟเอ็น | () => ผลลัพธ์ | สัญญา<TResult> | ฟังก์ชั่นที่อาจซิงค์หรืออะซิงก์ (ส่งคืนสัญญา) |
ผลตอบแทน:
สัญญา<TResult>
withFunctionTriggersDisabled ()
เรียกใช้ฟังก์ชันการตั้งค่าโดยปิดใช้ทริกเกอร์ Cloud Functions ในเบื้องหลัง ซึ่งสามารถใช้เพื่อนำเข้าข้อมูลไปยังฐานข้อมูลเรียลไทม์หรือโปรแกรมจำลอง Cloud Firestore โดยไม่ต้องทริกเกอร์ฟังก์ชันคลาวด์ที่จำลองในเครื่อง
วิธีการนี้ใช้ได้กับ Firebase CLI เวอร์ชัน 8.13.0 ขึ้นไปเท่านั้น ฮับ Emulator จะต้องทำงานอยู่ โดยมีการระบุโฮสต์และพอร์ตใดไว้ในโอเวอร์โหลดนี้
ลายเซ็น:
export declare function withFunctionTriggersDisabled<TResult>(hub: {
host: string;
port: number;
}, fn: () => TResult | Promise<TResult>): Promise<TResult>;
พารามิเตอร์
พารามิเตอร์ | พิมพ์ | คำอธิบาย |
---|---|---|
ฮับ | { โฮสต์: สตริง; หมายเลขพอร์ต; } | โฮสต์และพอร์ตของ Emulator Hub (เช่น: {host: 'localhost', port: 4400} ) |
เอฟเอ็น | () => ผลลัพธ์ | สัญญา<TResult> | ฟังก์ชั่นที่อาจซิงค์หรืออะซิงก์ (ส่งคืนสัญญา) |
ผลตอบแทน:
สัญญา<TResult>
EmulatorConfig
การกำหนดค่าสำหรับโปรแกรมจำลองที่กำหนด
ลายเซ็น:
export declare type EmulatorConfig = {
rules?: string;
} & (HostAndPort | {});
TokenOptions
ตัวเลือกเพิ่มเติมสำหรับโทเค็นผู้ใช้จำลองที่จะใช้สำหรับการทดสอบ รวมถึงการอ้างสิทธิ์แบบกำหนดเองที่นักพัฒนาระบุ หรือการแทนที่ตัวเลือกสำหรับเพย์โหลดโทเค็น Firebase Auth
ลายเซ็น:
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;
};