แพ็กเกจการทดสอบหน่วยกฎ

ฟังก์ชัน

ฟังก์ชัน คำอธิบาย
ข้อผิดพลาด 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;
};