Интерфейс RulesTestEnvironment

Объект, используемый для управления средой модульного тестирования правил. Может использоваться для создания RulesTestContext для различных ситуаций аутентификации.

Подпись:

export interface RulesTestEnvironment 

Характеристики

Свойство Тип Описание
эмуляторы {база данных?: HostAndPort ; пожарный магазин?: HostAndPort ; хранилище?: HostAndPort ; } Копия конфигурации эмулятора, доступная только для чтения, указанная или обнаруженная при создании тестовой среды.
идентификатор проекта нить Идентификатор проекта, указанный или обнаруженный при создании тестовой среды.

Методы

Метод Описание
аутентифицированныйконтекст (user_id, tokenOptions) Создайте RulesTestContext , который будет вести себя как аутентифицированный пользователь Firebase Auth. К запросам, созданным через возвращенный контекст, будет прикреплен фиктивный токен аутентификации Firebase.
очистка() В самом конце вашего тестового кода вызовите функцию очистки. Уничтожьте все RulesTestContexts, созданные в тестовой среде, и очистите базовые ресурсы, чтобы обеспечить чистый выход. Этот метод никак не меняет состояние в эмуляторах. Чтобы сбросить данные между тестами, см. clearDatabase() , clearFirestore() и clearStorage() .
очистить базу данных() Очистите все данные в пространстве имен эмулятора базы данных реального времени.
очиститьFirestore() Очистите данные в Firestore, принадлежащие projectId в эмуляторе Firestore.
Очистить хранилище() Очистите файлы и метаданные хранилища во всех сегментах в эмуляторе хранилища.
неаутентифицированныйконтекст() Создайте RulesTestContext , который ведет себя как клиент, который НЕ вошел в систему через Firebase Auth. К запросам, созданным через возвращенный контекст, не будут прикреплены токены аутентификации Firebase.
withSecurityRulesDisabled (обратный вызов)

ПравилаTestEnvironment.emulators

Копия конфигурации эмулятора, доступная только для чтения, указанная или обнаруженная при создании тестовой среды.

Подпись:

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

RulesTestEnvironment.projectId

Идентификатор проекта, указанный или обнаруженный при создании тестовой среды.

Подпись:

readonly projectId: string;

RulesTestEnvironment.authenticatedContext()

Создайте RulesTestContext , который будет вести себя как аутентифицированный пользователь Firebase Auth.

К запросам, созданным через возвращенный контекст, будет прикреплен фиктивный токен аутентификации Firebase.

Подпись:

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

Параметры

Параметр Тип Описание
ID пользователя нить идентификатор пользователя. Указывает значение «user_id» и «sub» в токене.
опции токена Опции токена пользовательские утверждения или переопределения для полезных данных токена Firebase Auth.

Возврат:

ПравилаТестКонтекст

Пример

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

ПравилаTestEnvironment.cleanup()

В самом конце вашего тестового кода вызовите функцию очистки. Уничтожьте все RulesTestContexts, созданные в тестовой среде, и очистите базовые ресурсы, чтобы обеспечить чистый выход.

Этот метод никак не меняет состояние в эмуляторах. Чтобы сбросить данные между тестами, см. clearDatabase() , clearFirestore() и clearStorage() .

Подпись:

cleanup(): Promise<void>;

Возврат:

Обещание<void>

ПравилаTestEnvironment.clearDatabase()

Очистите все данные в пространстве имен эмулятора базы данных реального времени.

Подпись:

clearDatabase(): Promise<void>;

Возврат:

Обещание<void>

ПравилаTestEnvironment.clearFirestore()

Очистите данные в базе данных Firestore по умолчанию для projectId в эмуляторе Firestore.

Подпись:

clearFirestore(): Promise<void>;

Возврат:

Обещание<void>

ПравилаTestEnvironment.clearStorage()

Очистите файлы и метаданные хранилища в активном сегменте в эмуляторе хранилища.

Подпись:

clearStorage(): Promise<void>;

Возврат:

Обещание<void>

RulesTestEnvironment.unauthenticatedContext()

Создайте RulesTestContext , который ведет себя как клиент, который НЕ вошел в систему через Firebase Auth.

К запросам, созданным через возвращенный контекст, не будут прикреплены токены аутентификации Firebase.

Подпись:

unauthenticatedContext(): RulesTestContext;

Возврат:

ПравилаТестКонтекст

Пример

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

RulesTestEnvironment.withSecurityRulesDisabled()

Подпись:

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

Параметры

Параметр Тип Описание
перезвонить (контекст: RulesTestContext ) => Обещание<void>

Возврат:

Обещание<void>