gói quy tắc-đơn vị-thử nghiệm

Chức năng

Chức năng Sự miêu tả
khẳng địnhFails(pr) Khẳng định lời hứa bị từ chối với lỗi "quyền bị từ chối". Hữu ích để xác nhận một yêu cầu nhất định bị từ chối bởi Quy tắc bảo mật. Xem ví dụ dưới đây. Chức năng này nhận ra các lỗi bị từ chối cấp phép từ SDK JS cơ sở dữ liệu, Firestore và Storage.
khẳng định Thành công(pr) Khẳng định lời hứa bị từ chối với lỗi "quyền bị từ chối". Đây là một hàm không hoạt động trả lại nguyên trạng lời hứa đã được thông qua, nhưng có thể được sử dụng cho mục đích ghi lại tài liệu trong mã kiểm tra để nhấn mạnh rằng một yêu cầu nhất định sẽ thành công (ví dụ: được các quy tắc cho phép).
khởi tạoTestEnvironment(config) Khởi tạo môi trường thử nghiệm để thử nghiệm đơn vị quy tắc. Gọi hàm này trước để thiết lập thử nghiệm. Yêu cầu phải chạy trình mô phỏng. Hàm này cố gắng khám phá các trình mô phỏng đó thông qua các biến môi trường hoặc thông qua trung tâm Trình mô phỏng Firebase nếu máy chủ và cổng không được chỉ định. Chúng tôi đặc biệt khuyến nghị chỉ định các quy tắc bảo mật cho trình mô phỏng được sử dụng để thử nghiệm. Xem ví dụ tối thiểu dưới đây.
withFunctionTriggersDisabled(fn) Chạy chức năng thiết lập với trình kích hoạt Chức năng đám mây nền bị tắt. Điều này có thể được sử dụng để nhập dữ liệu vào Cơ sở dữ liệu thời gian thực hoặc trình mô phỏng Cloud Firestore mà không kích hoạt Chức năng đám mây được mô phỏng cục bộ. Phương pháp này chỉ hoạt động với Firebase CLI phiên bản 8.13.0 trở lên. Tình trạng quá tải này chỉ hoạt động nếu cổng: máy chủ trung tâm Trình mô phỏng được chỉ định bởi biến môi trường FIREBASE_EMULATOR_HUB.
withFunctionTriggersDisabled(hub, fn) Chạy chức năng thiết lập với trình kích hoạt Chức năng đám mây nền bị tắt. Điều này có thể được sử dụng để nhập dữ liệu vào Cơ sở dữ liệu thời gian thực hoặc trình mô phỏng Cloud Firestore mà không kích hoạt Chức năng đám mây được mô phỏng cục bộ. Phương pháp này chỉ hoạt động với Firebase CLI phiên bản 8.13.0 trở lên. Trung tâm Trình mô phỏng phải đang chạy, máy chủ và cổng nào được chỉ định trong tình trạng quá tải này.

Giao diện

Giao diện Sự miêu tả
Máy chủ và cổng Một đối tượng chứa tên máy chủ và số cổng của trình mô phỏng.
Nội quyTestContext Bối cảnh thử nghiệm đại diện cho khách hàng. Có thể được sử dụng để truy cập trình mô phỏng để kiểm tra đơn vị quy tắc.
Quy tắcKiểm traMôi trường Một đối tượng được sử dụng để kiểm soát môi trường kiểm tra đơn vị quy tắc. Có thể được sử dụng để tạo RulesTestContext cho các tình huống xác thực khác nhau.
Cấu hình môi trường thử nghiệm Cấu hình môi trường thử nghiệm đơn vị, bao gồm cả trình giả lập.

Nhập bí danh

Nhập bí danh Sự miêu tả
Cấu hình trình mô phỏng Cấu hình cho một trình mô phỏng nhất định.
Tùy chọn mã thông báo Nhiều tùy chọn hơn để sử dụng mã thông báo người dùng mô phỏng để thử nghiệm, bao gồm các xác nhận quyền sở hữu tùy chỉnh do nhà phát triển chỉ định hoặc ghi đè tùy chọn cho tải trọng mã thông báo Firebase Auth.

khẳng địnhFails()

Khẳng định lời hứa bị từ chối với lỗi "quyền bị từ chối".

Hữu ích để xác nhận một yêu cầu nhất định bị từ chối bởi Quy tắc bảo mật. Xem ví dụ dưới đây. Chức năng này nhận ra các lỗi bị từ chối cấp phép từ SDK JS cơ sở dữ liệu, Firestore và Storage.

Chữ ký:

export declare function assertFails(pr: Promise<any>): Promise<any>;

Thông số

Tham số Kiểu Sự miêu tả
PR Hứa<bất kỳ> lời hứa sẽ được khẳng định

Trả về:

Hứa<bất kỳ>

một Lời hứa được thực hiện nếu pr bị từ chối với "quyền bị từ chối". Nếu pr bị từ chối cùng với bất kỳ lỗi nào khác hoặc được giải quyết, thì lời hứa được trả lại sẽ bị từ chối.

Ví dụ

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

khẳng địnhThành công()

Khẳng định lời hứa sẽ thành công.

Đây là một hàm không hoạt động trả lại nguyên trạng lời hứa đã được thông qua, nhưng có thể được sử dụng cho mục đích ghi lại tài liệu trong mã kiểm tra để nhấn mạnh rằng một yêu cầu nhất định sẽ thành công (ví dụ: được các quy tắc cho phép).

Chữ ký:

export declare function assertSucceeds<T>(pr: Promise<T>): Promise<T>;

Thông số

Tham số Kiểu Sự miêu tả
PR Hứa<T>

Trả về:

Hứa<T>

Ví dụ

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

khởi tạoTestEnvironment()

Khởi tạo môi trường thử nghiệm để thử nghiệm đơn vị quy tắc. Gọi hàm này trước để thiết lập thử nghiệm.

Yêu cầu phải chạy trình mô phỏng. Hàm này cố gắng khám phá các trình mô phỏng đó thông qua các biến môi trường hoặc thông qua trung tâm Trình mô phỏng Firebase nếu máy chủ và cổng không được chỉ định. Chúng tôi đặc biệt khuyến nghị chỉ định các quy tắc bảo mật cho trình mô phỏng được sử dụng để thử nghiệm. Xem ví dụ tối thiểu dưới đây.

Chữ ký:

export declare function initializeTestEnvironment(config: TestEnvironmentConfig): Promise<RulesTestEnvironment>;

Thông số

Tham số Kiểu Sự miêu tả
cấu hình Cấu hình môi trường thử nghiệm cấu hình cho trình giả lập. Hầu hết các trường đều là tùy chọn nếu chúng có thể được phát hiện

Trả về:

Lời hứa< RulesTestEnvironment >

một lời hứa được giải quyết bằng một môi trường sẵn sàng để thử nghiệm hoặc từ chối do lỗi.

Ví dụ

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()

Chạy chức năng thiết lập với trình kích hoạt Chức năng đám mây nền bị tắt. Điều này có thể được sử dụng để nhập dữ liệu vào Cơ sở dữ liệu thời gian thực hoặc trình mô phỏng Cloud Firestore mà không kích hoạt Chức năng đám mây được mô phỏng cục bộ.

Phương pháp này chỉ hoạt động với Firebase CLI phiên bản 8.13.0 trở lên. Tình trạng quá tải này chỉ hoạt động nếu cổng: máy chủ trung tâm Trình mô phỏng được chỉ định bởi biến môi trường FIREBASE_EMULATOR_HUB.

Chữ ký:

export declare function withFunctionTriggersDisabled<TResult>(fn: () => TResult | Promise<TResult>): Promise<TResult>;

Thông số

Tham số Kiểu Sự miêu tả
fn () => TResult | Lời hứa<TResult> một chức năng có thể được đồng bộ hóa hoặc không đồng bộ (trả lại lời hứa)

Trả về:

Lời hứa<TResult>

withFunctionTriggersDisabled()

Chạy chức năng thiết lập với trình kích hoạt Chức năng đám mây nền bị tắt. Điều này có thể được sử dụng để nhập dữ liệu vào Cơ sở dữ liệu thời gian thực hoặc trình mô phỏng Cloud Firestore mà không kích hoạt Chức năng đám mây được mô phỏng cục bộ.

Phương pháp này chỉ hoạt động với Firebase CLI phiên bản 8.13.0 trở lên. Trung tâm Trình mô phỏng phải đang chạy, máy chủ và cổng nào được chỉ định trong tình trạng quá tải này.

Chữ ký:

export declare function withFunctionTriggersDisabled<TResult>(hub: {
    host: string;
    port: number;
}, fn: () => TResult | Promise<TResult>): Promise<TResult>;

Thông số

Tham số Kiểu Sự miêu tả
trung tâm { máy chủ: chuỗi; cổng: số; } máy chủ và cổng của Trung tâm mô phỏng (ví dụ: {host: 'localhost', port: 4400} )
fn () => TResult | Lời hứa<TResult> một chức năng có thể được đồng bộ hóa hoặc không đồng bộ (trả lại lời hứa)

Trả về:

Lời hứa<TResult>

Cấu hình trình mô phỏng

Cấu hình cho một trình mô phỏng nhất định.

Chữ ký:

export declare type EmulatorConfig = {
    rules?: string;
} & (HostAndPort | {});

Tùy chọn mã thông báo

Nhiều tùy chọn hơn để sử dụng mã thông báo người dùng mô phỏng để thử nghiệm, bao gồm các xác nhận quyền sở hữu tùy chỉnh do nhà phát triển chỉ định hoặc ghi đè tùy chọn cho tải trọng mã thông báo Firebase Auth.

Chữ ký:

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;
};