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

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

ลายเซ็น:

export interface RulesTestEnvironment 

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

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

วิธีการ

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

RulesTestEnvironment.emulators

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

ลายเซ็น:

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

RulesTestEnvironment.projectId

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

ลายเซ็น:

readonly projectId: string;

RulesTestEnvironment.authenticatedContext()

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

คำขอที่สร้างขึ้นผ่านบริบทที่แสดงผลจะมีโทเค็น Firebase Auth จำลองที่แนบมา

ลายเซ็น:

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

พารามิเตอร์

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

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

RulesTestContext

ตัวอย่าง

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

RulesTestEnvironment.cleanup()

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

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

ลายเซ็น:

cleanup(): Promise<void>;

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

Promise<void>

RulesTestEnvironment.clearDatabase()

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

ลายเซ็น:

clearDatabase(): Promise<void>;

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

Promise<void>

RulesTestEnvironment.clearFirestore()

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

ลายเซ็น:

clearFirestore(): Promise<void>;

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

Promise<void>

RulesTestEnvironment.clearStorage()

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

ลายเซ็น:

clearStorage(): Promise<void>;

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

Promise<void>

RulesTestEnvironment.unauthenticatedContext()

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

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

ลายเซ็น:

unauthenticatedContext(): RulesTestContext;

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

RulesTestContext

ตัวอย่าง

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

RulesTestEnvironment.withSecurityRulesDisabled()

ลายเซ็น:

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

พารามิเตอร์

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

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

Promise<void>