อินเทอร์เฟซ RulesTestEnvironment

ออบเจ็กต์ที่ใช้ควบคุมสภาพแวดล้อมการทดสอบหน่วยกฎ สามารถใช้สร้าง RulesTestContext สำหรับกรณีการตรวจสอบสิทธิ์ที่แตกต่างกัน

ลายเซ็น:

export interface RulesTestEnvironment 

พร็อพเพอร์ตี้

พร็อพเพอร์ตี้ ประเภท คำอธิบาย
โปรแกรมจำลอง { Database?: HostAndPort Firestore?: HostAndPort พื้นที่เก็บข้อมูล: HostAndPort } สำเนาแบบอ่านอย่างเดียวของการกำหนดค่าโปรแกรมจำลองที่ระบุหรือค้นพบขณะสร้างสภาพแวดล้อมการทดสอบ
รหัสโปรเจ็กต์ สตริง รหัสโปรเจ็กต์ที่ระบุหรือค้นพบขณะสร้างสภาพแวดล้อมการทดสอบ

เมธอด

วิธีการ คำอธิบาย
AuthdContext(user_id, tokenOptions) สร้าง RulesTestContext ที่ทำงานเหมือนผู้ใช้ Firebase Auth ที่ผ่านการตรวจสอบสิทธิ์แล้วคำขอที่สร้างผ่านบริบทที่แสดงผลจะมีโทเค็นการตรวจสอบสิทธิ์ Firebase จำลองแนบอยู่
cleanup() ที่ส่วนท้ายสุดของโค้ดทดสอบของคุณ ให้เรียกใช้ฟังก์ชันทำความสะอาด ทำลาย RulesTestContexts ทั้งหมดที่สร้างขึ้นในสภาพแวดล้อมการทดสอบและล้างทรัพยากรที่สำคัญ ทำให้มีการออกที่ถูกต้องวิธีนี้ไม่เปลี่ยนสถานะในโปรแกรมจำลองไม่ว่าในทางใดก็ตาม หากต้องการรีเซ็ตข้อมูลระหว่างการทดสอบ โปรดดู clearDatabase(), clearFirestore() และ clearStorage()
clearDatabase() ล้างข้อมูลทั้งหมดในเนมสเปซของโปรแกรมจำลอง Realtime Database
clearFirestore() ล้างข้อมูลใน Firestore ที่เป็นของ projectId ในโปรแกรมจำลอง Firestore
clearStorage() ล้างไฟล์พื้นที่เก็บข้อมูลและข้อมูลเมตาในที่เก็บข้อมูลทั้งหมดในโปรแกรมจำลองพื้นที่เก็บข้อมูล
unAuthdContext() สร้าง RulesTestContext ที่ทำงานเหมือนไคลเอ็นต์ที่ไม่ได้เข้าสู่ระบบผ่าน Firebase Authคำขอที่สร้างผ่านบริบทที่แสดงผลจะไม่มีการแนบโทเค็นการตรวจสอบสิทธิ์ Firebase
withSecurityRulesDisabled(Callback)

กฎการทดสอบสภาพแวดล้อม.emulators

สำเนาแบบอ่านอย่างเดียวของการกำหนดค่าโปรแกรมจำลองที่ระบุหรือค้นพบขณะสร้างสภาพแวดล้อมการทดสอบ

ลายเซ็น:

readonly emulators: {
        database?: HostAndPort;
        firestore?: HostAndPort;
        storage?: HostAndPort;
    };

RulesTestEnvironment.projectId

รหัสโปรเจ็กต์ที่ระบุหรือค้นพบขณะสร้างสภาพแวดล้อมการทดสอบ

ลายเซ็น:

readonly projectId: string;

RulesTestEnvironment.authenticatedContext()

สร้าง RulesTestContext ซึ่งทำงานเหมือนผู้ใช้การตรวจสอบสิทธิ์ Firebase ที่ผ่านการตรวจสอบสิทธิ์แล้ว

คำขอที่สร้างผ่านบริบทที่แสดงผลจะมีโทเค็นการตรวจสอบสิทธิ์ Firebase จำลองแนบอยู่

ลายเซ็น:

authenticatedContext(user_id: string, tokenOptions?: TokenOptions): RulesTestContext;

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
user_id สตริง User ID ของผู้ใช้ ระบุค่าของ "user_id" และ "sub" บนโทเค็น
ตัวเลือกโทเค็น ตัวเลือกโทเค็น การอ้างสิทธิ์ที่กำหนดเองหรือการลบล้างสำหรับเพย์โหลดโทเค็นการตรวจสอบสิทธิ์ Firebase

การคืนสินค้า:

กฎTestContext

ตัวอย่าง

const alice = testEnv.authenticatedContext('alice');
await assertSucceeds(getDoc(alice.firestore(), '/doc/readable/by/alice'), { ... });

RulesTestEnvironment.cleanup()

ที่ส่วนท้ายสุดของโค้ดทดสอบของคุณ ให้เรียกใช้ฟังก์ชันทำความสะอาด ทำลาย RulesTestContexts ทั้งหมดที่สร้างขึ้นในสภาพแวดล้อมการทดสอบและล้างทรัพยากรที่สำคัญ ทำให้มีการออกที่ถูกต้อง

วิธีการนี้จะไม่เปลี่ยนแปลงสถานะในโปรแกรมจำลองไม่ว่าในลักษณะใดก็ตาม หากต้องการรีเซ็ตข้อมูลระหว่างการทดสอบ โปรดดูclearDatabase(), clearFirestore() และclearStorage()

ลายเซ็น:

cleanup(): Promise<void>;

การคืนสินค้า:

คำสัญญา<โมฆะ>

RulesTestEnvironment.clearDatabase()

ล้างข้อมูลทั้งหมดในเนมสเปซของโปรแกรมจำลอง Realtime Database

ลายเซ็น:

clearDatabase(): Promise<void>;

การคืนสินค้า:

คำสัญญา<โมฆะ>

RulesTestEnvironment.clearFirestore()

ล้างข้อมูลในฐานข้อมูล Firestore เริ่มต้นสำหรับ projectId ในโปรแกรมจำลอง Firestore

ลายเซ็น:

clearFirestore(): Promise<void>;

การคืนสินค้า:

คำสัญญา<โมฆะ>

RulesTestEnvironment.clearStorage()

ล้างไฟล์พื้นที่เก็บข้อมูลและข้อมูลเมตาในที่เก็บข้อมูลที่ใช้งานอยู่ในโปรแกรมจำลองพื้นที่เก็บข้อมูล

ลายเซ็น:

clearStorage(): Promise<void>;

การคืนสินค้า:

คำสัญญา<โมฆะ>

RulesTestEnvironment.unauthenticatedContext()

สร้าง RulesTestContext ที่ทํางานเหมือนไคลเอ็นต์ที่ไม่ได้เข้าสู่ระบบผ่าน Firebase Auth

คำขอที่สร้างผ่านบริบทที่แสดงผลจะไม่มีโทเค็นการตรวจสอบสิทธิ์ Firebase แนบอยู่

ลายเซ็น:

unauthenticatedContext(): RulesTestContext;

การคืนสินค้า:

กฎTestContext

ตัวอย่าง

const unauthed = testEnv.unauthenticatedContext();
await assertFails(getDoc(unauthed.firestore(), '/private/doc'), { ... });

RulesTestEnvironment.withSecurityRulesDisabled()

ลายเซ็น:

withSecurityRulesDisabled(callback: (context: RulesTestContext) => Promise<void>): Promise<void>;

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
Callback (บริบท: RulesTestContext) => คำสัญญา<โมฆะ>

การคืนสินค้า:

คำสัญญา<โมฆะ>