пакет правил-юнит-тестирования

Функции

Функция Описание
AssertFails (ПР) Утвердите обещание, которое будет отклонено с ошибкой «отказано в доступе». Полезно для подтверждения определенного запроса, который будет отклонен правилами безопасности. См. пример ниже. Эта функция распознает ошибки, связанные с отказом в разрешении, из SDK Database, Firestore и Storage JS.
AssertSucceeds(pr) Утвердите обещание, которое будет отклонено с ошибкой «отказано в доступе». Это недействующая функция, возвращающая переданное обещание как есть, но ее можно использовать в целях документирования в тестовом коде, чтобы подчеркнуть, что определенный запрос должен быть успешным (например, разрешен правилами).
инициализироватьTestEnvironment (конфигурация) Инициализирует тестовую среду для модульного тестирования правил. Сначала вызовите эту функцию для настройки теста. Требует запуска эмуляторов. Эта функция пытается обнаружить эти эмуляторы через переменные среды или через концентратор эмулятора Firebase, если хосты и порты не указаны. Настоятельно рекомендуется указать правила безопасности для эмуляторов, используемых для тестирования. См. минимальный пример ниже.
withFunctionTriggersDisabled (fn) Запустите функцию настройки с отключенными фоновыми триггерами облачных функций. Это можно использовать для импорта данных в базу данных реального времени или эмулятор Cloud Firestore без запуска локально эмулируемых облачных функций. Этот метод работает только с Firebase CLI версии 8.13.0 или выше. Эта перегрузка работает только в том случае, если хост:порт концентратора эмулятора указан в переменной среды FIREBASE_EMULATOR_HUB.
withFunctionTriggersDisabled (концентратор, fn) Запустите функцию настройки с отключенными фоновыми триггерами облачных функций. Это можно использовать для импорта данных в базу данных реального времени или эмулятор Cloud Firestore без запуска локально эмулируемых облачных функций. Этот метод работает только с Firebase CLI версии 8.13.0 или выше. Должен быть запущен концентратор эмулятора, хост и порт которого указаны в этой перегрузке.

Интерфейсы

Интерфейс Описание
ХостАнПорт Объект, содержащий имя хоста и номер порта эмулятора.
ПравилаТестКонтекст Тестовый контекст, представляющий клиента. Может использоваться для доступа к эмуляторам для модульного тестирования правил.
ПравилаТестовая Среда Объект, используемый для управления средой модульного тестирования правил. Может использоваться для создания RulesTestContext для различных ситуаций аутентификации.
TestEnvironmentConfig Настройка среды модульного тестирования, включая эмуляторы.

Введите псевдонимы

Введите псевдоним Описание
Конфигурация Эмулятора Конфигурация для данного эмулятора.
Опции токена Дополнительные параметры для использования токена ложного пользователя для тестирования, включая пользовательские утверждения, указанные разработчиком, или дополнительные переопределения для полезных данных токена аутентификации Firebase.

утверждатьфаилс()

Утвердите обещание, которое будет отклонено с ошибкой «отказано в доступе».

Полезно для подтверждения определенного запроса, который будет отклонен правилами безопасности. См. пример ниже. Эта функция распознает ошибки, связанные с отказом в разрешении, из SDK Database, Firestore и Storage JS.

Подпись:

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

Параметры

Параметр Тип Описание
пиар Обещание <любое> обещание, которое будет утверждено

Возврат:

Обещание <любое>

Обещание, которое выполняется, если pr отклонено с надписью «отказано в разрешении». Если pr отклонен с какой-либо другой ошибкой или разрешен, возвращенное обещание отклоняется.

Пример

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

утверждатьУспех()

Утверждайте обещание добиться успеха.

Это недействующая функция, возвращающая переданное обещание как есть, но ее можно использовать в целях документирования в тестовом коде, чтобы подчеркнуть, что определенный запрос должен быть успешным (например, разрешен правилами).

Подпись:

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, если хосты и порты не указаны. Настоятельно рекомендуется указать правила безопасности для эмуляторов, используемых для тестирования. См. минимальный пример ниже.

Подпись:

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.
  },
  // ...
});

с функциейFunctionTriggersDisabled()

Запустите функцию настройки с отключенными фоновыми триггерами облачных функций. Это можно использовать для импорта данных в базу данных реального времени или эмулятор Cloud Firestore без запуска локально эмулируемых облачных функций.

Этот метод работает только с Firebase CLI версии 8.13.0 или выше. Эта перегрузка работает только в том случае, если хост:порт концентратора эмулятора указан в переменной среды FIREBASE_EMULATOR_HUB.

Подпись:

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

Параметры

Параметр Тип Описание
фн () => TResult | Обещание<TResult> функция, которая может быть синхронной или асинхронной (возвращает обещание)

Возврат:

Обещание<TResult>

с функциейFunctionTriggersDisabled()

Запустите функцию настройки с отключенными фоновыми триггерами облачных функций. Это можно использовать для импорта данных в базу данных реального времени или эмулятор Cloud Firestore без запуска локально эмулируемых облачных функций.

Этот метод работает только с Firebase CLI версии 8.13.0 или выше. Должен быть запущен концентратор эмулятора, хост и порт которого указаны в этой перегрузке.

Подпись:

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

Параметры

Параметр Тип Описание
центр {хост: строка; номер порта; } хост и порт эмулятора-концентратора (например: {host: 'localhost', port: 4400} )
фн () => TResult | Обещание<TResult> функция, которая может быть синхронной или асинхронной (возвращает обещание)

Возврат:

Обещание<TResult>

Конфигурация Эмулятора

Конфигурация для данного эмулятора.

Подпись:

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