Catch up on everthing we announced at this year's Firebase Summit. Learn more

단위 테스트 빌드

Firebase 로컬 에뮬레이터 도구 모음을 사용하면 앱의 기능 및 동작을 확인하기가 훨씬 쉬워집니다. 또한 Firebase 보안 규칙 구성을 확인할 수 있는 유용한 도구이기도 합니다. Firebase 에뮬레이터를 사용하여 로컬 환경에서 단위 테스트를 실행하고 자동화하세요. 이 문서에서 설명하는 방법은 앱의 규칙을 검증하는 단위 테스트를 빌드하고 자동화는 데 도움이 됩니다.

아직 설치하지 않았다면 Firebase 에뮬레이터를 설치하세요.

에뮬레이터 실행 전 주의사항

에뮬레이터 사용에 앞서 다음 사항에 주의하세요.

  • 에뮬레이터는 처음에 firebase.json 파일의 firestore.rules 또는 'storage.rules' 필드에 지정된 규칙을 로드합니다. 파일이 존재하지 않고 아래 설명과는 달리 loadFirestoreRules 또는 'loadStorageRules' 메서드를 사용하지 않는 경우 에뮬레이터는 모든 프로젝트를 공개 규칙에 따라 처리합니다.
  • 대부분의 Firebase SDK가 에뮬레이터에서 직접 작동하지만 @firebase/rules-unit-testing 라이브러리만 보안 규칙의 auth 모킹(mocking)을 지원하므로 훨씬 더 쉽게 단위 테스트를 실행할 수 있습니다. 또한 이 라이브러리는 아래 나열된 것처럼 모든 데이터 지우기와 같은 몇 가지 에뮬레이터 관련 기능을 지원합니다.
  • 에뮬레이터는 클라이언트 SDK를 통해 제공되는 프로덕션 Firebase 인증 토큰을 허용하고 그에 따라 규칙을 평가하므로 통합 및 수동 테스트 시 애플리케이션을 에뮬레이터에 직접 연결할 수 있습니다.

데이터베이스 에뮬레이터와 프로덕션의 차이점

  • 데이터베이스 인스턴스를 명시적으로 만들 필요가 없습니다. 에뮬레이터가 액세스되는 데이터베이스 인스턴스를 자동으로 만듭니다.
  • 각각의 새 데이터베이스는 폐쇄된 규칙으로 시작되므로 관리자가 아닌 사용자는 읽거나 쓸 수 없습니다.
  • 각각의 에뮬레이션된 데이터베이스에는 Spark 요금제 한도 및 할당량이 적용되며, 특히 각 인스턴스의 동시 연결 개수가 100개로 제한됩니다.
  • 모든 데이터베이스가 "owner" 문자열을 관리자 인증 토큰으로 허용합니다.
  • 에뮬레이터는 현재 다른 Firebase 제품과 함께 작동하지 않습니다. 특히 일반적인 Firebase 인증 흐름이 작동하지 않습니다. 대신 auth 필드를 사용하는 rules-unit-testing 라이브러리의 initializeTestApp() 메서드를 사용할 수 있습니다. 이 메서드로 만든 Firebase 객체는 입력한 항목으로 인증된 것처럼 동작합니다. null을 전달하면 인증되지 않은 사용자처럼 동작합니다. 예를 들어 auth != null 규칙은 실패합니다.

실시간 데이터베이스 에뮬레이터와 상호작용

프로덕션 Firebase 실시간 데이터베이스 인스턴스는 firebaseio.com의 하위 도메인에서 액세스할 수 있으며 다음과 같이 REST API에 액세스할 수 있습니다.

https://<database_name>.firebaseio.com/path/to/my/data.json

에뮬레이터는 로컬에서 실행되며 localhost:9000으로 접속할 수 있습니다. 특정 데이터베이스 인스턴스와 상호작용하려면 ns 쿼리 매개변수를 사용하여 데이터베이스 이름을 지정해야 합니다.

http://localhost:9000/path/to/my/data.json?ns=<database_name>

버전 9 자바스크립트 SDK로 로컬 단위 테스트 실행

Firebase는 버전 9 자바스크립트 SDK 및 버전 8 SDK로 보안 규칙 단위 테스트 라이브러리를 배포합니다. 두 라이브러리 API는 상당히 다릅니다. v9 테스트 라이브러리를 사용하는 것이 좋습니다. v9 테스트 라이브러리는 더 간소하며 에뮬레이터에 연결하는 데 필요한 설정이 더 적으므로 프로덕션 리소스를 실수로 사용해버리는 일을 피할 수 있습니다. Google은 하위 호환성을 위해 v8 테스트 라이브러리도 계속 제공합니다.

@firebase/rules-unit-testing 모듈을 사용하여 로컬로 실행되는 에뮬레이터와 상호작용합니다. 시간 초과나 ECONNREFUSED 오류가 발생하면 에뮬레이터가 실제로 실행 중인지 다시 확인하세요.

async/await 표기법을 사용하려면 최신 버전의 Node.js를 사용하는 것이 좋습니다. 테스트할 동작의 거의 대부분이 비동기 함수와 관련이 있으며 테스트 모듈은 프로미스 기반 코드로 작동하도록 설계되어 있습니다.

v9 규칙 단위 테스트 라이브러리는 항상 에뮬레이터를 인식하며 프로덕션 리소스를 변경하지 않습니다.

v9 모듈식 가져오기 문을 사용하여 라이브러리를 가져옵니다. 예를 들면 다음과 같습니다.

import {
  assertFails,
  assertSucceeds,
  initializeTestEnvironment,
  RulesTestEnvironment,
} from "@firebase/rules-unit-testing"

// Use `const { … } = require("@firebase/rules-unit-testing")` if imports are not supported
// Or we suggest `const testing = require("@firebase/rules-unit-testing")` if necessary.

가져온 후에는 단위 테스트 구현에 다음이 포함됩니다.

  • initializeTestEnvironment 호출로 RulesTestEnvironment를 만들고 구성합니다.
  • 일시적으로 규칙을 우회할 수 있는 편리한 메서드인 RulesTestEnvironment.withSecurityRulesDisabled를 사용하여 규칙을 트리거하지 않고 테스트 데이터를 설정합니다.
  • RulesTestEnvironment.cleanup() 또는 RulesTestEnvironment.clearFirestore() 등 테스트 데이터 및 환경을 삭제하는 데 사용하는 호출로 테스트 도구 모음 및 테스트 전/후 후크를 설정합니다.
  • RulesTestEnvironment.authenticatedContextRulesTestEnvironment.unauthenticatedContext를 사용하여 인증 상태를 모방하는 테스트 사례를 구현합니다.

일반적인 메서드 및 유틸리티 함수

v9 SDK의 에뮬레이터별 테스트 메서드도 참조하세요.

initializeTestEnvironment() => RulesTestEnvironment

이 함수는 규칙 단위 테스트를 위한 테스트 환경을 초기화합니다. 테스트 설정에 이 함수를 먼저 호출하세요. 성공적으로 실행하려면 에뮬레이터를 실행해야 합니다.

이 함수는 TestEnvironmentConfig를 정의하는 선택적 객체를 허용합니다. 이 객체는 프로젝트 ID와 에뮬레이터 구성 설정을 포함할 수 있습니다.

let testEnv = await initializeTestEnvironment({
  projectId: "demo-project-1234",
  firestore: {
    rules: fs.readFileSync("firestore.rules", "utf8"),
  },
});

RulesTestEnvironment.authenticatedContext({ user_id: string, tokenOptions?: TokenOptions }) => RulesTestContext

이 메서드는 인증된 인증 사용자처럼 작동하는 RulesTestContext를 만듭니다. 반환된 컨텍스트를 통해 생성된 요청에는 모의 인증 토큰이 연결됩니다. 필요한 경우 인증 토큰 페이로드에 대한 커스텀 클레임 또는 재정의를 정의하는 객체를 전달합니다.

테스트에서 반환된 테스트 컨텍스트 객체를 사용하여 initializeTestEnvironment로 구성된 에뮬레이터 인스턴스를 비롯한 구성된 에뮬레이터 인스턴스에 액세스합니다.

// Assuming a Firestore app and the Firestore emulator for this example
import { setDoc } from "firebase/firestore";

const alice = testEnv.authenticatedContext("alice", { … });
// Use the Firestore instance associated with this context
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });

RulesTestEnvironment.unauthenticatedContext() => RulesTestContext

이 메서드는 인증을 통해 로그인하지 않은 클라이언트처럼 작동하는 RulesTestContext를 만듭니다. 반환된 컨텍스트를 통해 생성된 요청에는 Firebase 인증 토큰이 연결되지 않습니다.

테스트에서 반환된 테스트 컨텍스트 객체를 사용하여 initializeTestEnvironment로 구성된 에뮬레이터 인스턴스를 비롯한 구성된 에뮬레이터 인스턴스에 액세스합니다.

// Assuming a Cloud Storage app and the Storage emulator for this example
import { getStorage, ref, deleteObject } from "firebase/storage";

const alice = testEnv.unauthenticatedContext();

// Use the Cloud Storage instance associated with this context
const desertRef = ref(alice.storage(), 'images/desert.jpg');
await assertSucceeds(deleteObject(desertRef));

RulesTestEnvironment.withSecurityRulesDisabled()

보안 규칙이 사용 중지된 것처럼 작동하는 컨텍스트에서 테스트 설정 함수를 실행합니다.

이 메서드는 보안 규칙 우회 컨텍스트를 가져와 프로미스를 반환하는 콜백 함수를 사용합니다. 프로미스가 확인/거부되면 컨텍스트가 삭제됩니다

RulesTestEnvironment.cleanup()

이 메서드는 테스트 환경에서 만든 모든 RulesTestContexts를 삭제하고 기본 리소스를 삭제하므로 아무런 데이터를 남기지 않고 종료됩니다.

이 메서드는 어떤 방식으로든 에뮬레이터의 상태를 변경하지 않습니다. 테스트 간에 데이터를 재설정하려면 애플리케이션 에뮬레이터별 데이터 삭제 메서드를 사용하세요.

assertSucceeds(pr: Promise<any>)) => Promise<any>

이것은 테스트 사례 유틸리티 함수입니다.

이 함수는 에뮬레이터 작업을 래핑하는 제공된 프로미스가 보안 규칙 위반 없이 확인되도록 어설션을 만듭니다.

await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });

assertFails(pr: Promise<any>)) => Promise<any>

이것은 테스트 사례 유틸리티 함수입니다.

이 함수는 에뮬레이터 작업을 래핑하는 제공된 프로미스가 보안 규칙 위반 없이 거부되도록 어설션을 만듭니다.

await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });

에뮬레이터별 메서드

v9 SDK의 일반적인 테스트 메서드 및 유틸리티 함수도 참조하세요.

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

이 메서드는 Firestore 에뮬레이터용으로 구성된 projectId에 속한 Firestore 데이터베이스의 데이터를 지웁니다.

RulesTestContext.firestore(settings?: Firestore.FirestoreSettings) => Firestore;

이 메서드는 이 테스트 컨텍스트의 Firestore 인스턴스를 가져옵니다. 반환된 Firebase JS 클라이언트 SDK 인스턴스는 클라이언트 SDK API(v9 모듈식 또는 v9 compat)와 함께 사용할 수 있습니다.

실시간 데이터베이스

실시간 데이터베이스

RulesTestEnvironment.clearDatabase() => Promise<void>

이 메서드는 실시간 데이터베이스 에뮬레이터용으로 구성된 projectId에 속하는 실시간 데이터베이스에서 데이터를 지웁니다.

RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;

이 테스트 컨텍스트의 실시간 데이터베이스 인스턴스를 가져옵니다. 반환된 Firebase JS 클라이언트 SDK 인스턴스는 클라이언트 SDK API(v9 모듈식 또는 v9 compat)와 함께 사용할 수 있습니다. 이 메서드는 실시간 데이터베이스 인스턴스의 URL을 허용합니다. 지정하면 URL에서 추출된 매개변수를 사용해 에뮬레이션된 버전의 네임스페이스의 인스턴스를 반환합니다.

Cloud Storage

Cloud Storage

RulesTestEnvironment.clearStorage() => Promise<void>

이 메서드는 Cloud Storage 에뮬레이터용으로 구성된 projectId에 속한 스토리지 버킷의 객체와 메타데이터를 지웁니다.

RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;

이 메서드는 에뮬레이터에 연결하도록 구성된 Storage 인스턴스를 반환합니다. 이 메서드는 테스트를 위해 Firebase Storage 버킷에 대한 gs:// URL을 허용합니다. 지정하면 에뮬레이션된 버전의 버킷 이름에 대한 Storage 인스턴스가 반환됩니다.

v8 자바스크립트 SDK로 로컬 단위 테스트 실행

제품을 선택하여 Firebase Test SDK에서 에뮬레이터와의 상호작용에 사용하는 메서드를 확인하세요.

Cloud Firestore

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

이 메서드는 옵션에 지정된 프로젝트 ID와 인증 변수에 따라 초기화된 Firebase 앱을 반환합니다. 테스트에 사용할 특정 사용자로 인증된 앱을 만들려면 이 메서드를 사용하세요.

firebase.initializeTestApp({
  projectId: "my-test-project",
  auth: { uid: "alice", email: "alice@example.com" }
});

initializeAdminApp({ projectId: string }) => FirebaseApp

이 메서드는 초기화된 관리자 Firebase 앱을 반환합니다. 이 앱은 읽기와 쓰기를 수행할 때 보안 규칙을 우회합니다. 테스트 상태를 설정하기 위해 관리자로 인증된 앱을 만들려면 이 메서드를 사용하세요.

firebase.initializeAdminApp({ projectId: "my-test-project" });
    

apps() => [FirebaseApp] 이 메서드는 현재 초기화된 테스트와 관리자 앱을 모두 반환합니다. 테스트 중에 또는 테스트 후에 앱을 정리하려면 이 메서드를 사용하세요.

Promise.all(firebase.apps().map(app => app.delete()))

loadFirestoreRules({ projectId: string, rules: Object }) => Promise

이 메서드는 로컬에서 실행 중인 데이터베이스에 규칙을 전송합니다. 이때 규칙을 문자열로 지정하는 객체를 선택해야 합니다. 데이터베이스 규칙을 설정하려면 이 메서드를 사용하세요.

firebase.loadFirestoreRules({
  projectId: "my-test-project",
  rules: fs.readFileSync("/path/to/firestore.rules", "utf8")
});
    

assertFails(pr: Promise) => Promise

이 메서드는 입력이 성공하면 거부된 프로미스를 반환하고, 입력이 거부되면 성공한 프로미스를 반환합니다. 데이터베이스 읽기 또는 쓰기 실패를 알리는 어설션을 만들려면 다음 메서드를 사용하세요.

firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
    

assertSucceeds(pr: Promise) => Promise

이 메서드는 입력이 성공하면 성공한 프로미스를 반환하고, 입력이 거부되면 거부된 프로미스를 반환합니다. 데이터베이스 읽기 또는 쓰기 성공을 알리는 어설션을 만들려면 다음 메서드를 사용하세요.

firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
    

clearFirestoreData({ projectId: string }) => Promise

다음 메서드는 로컬에서 실행되는 Firestore 인스턴스의 특정 프로젝트와 연결된 모든 데이터를 지웁니다. 테스트 후 삭제하려면 이 메서드를 사용하세요.

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

실시간 데이터베이스

실시간 데이터베이스

initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp

테스트에 사용할 특정 사용자로 인증된 앱을 만들려면 다음 메서드를 사용하세요.

옵션에 지정된 데이터베이스 이름 및 인증 변수 재정의에 따라 초기화된 Firebase 앱이 반환됩니다.

firebase.initializeTestApp({
  databaseName: "my-database",
  auth: { uid: "alice" }
});

initializeAdminApp({ databaseName: string }) => FirebaseApp

테스트 상태를 설정하기 위해 관리자로 인증된 앱을 만들려면 다음 메서드를 사용하세요.

옵션에 지정된 데이터베이스 이름에 따라 초기화된 관리자 Firebase 앱이 반환됩니다. 이 앱은 데이터베이스에 읽기와 쓰기를 수행할 때 보안 규칙을 우회합니다.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

데이터베이스 규칙을 설정하려면 다음 메서드를 사용하세요.

로컬에서 실행 중인 데이터베이스에 규칙이 전송됩니다. 'databaseName'과 'rules'를 문자열로 지정하는 옵션 객체를 선택하세요.

firebase
      .loadDatabaseRules({
        databaseName: "my-database",
        rules: "{'rules': {'.read': false, '.write': false}}"
      });

apps() => [FirebaseApp]

현재 초기화된 테스트와 관리자 앱을 모두 반환합니다.

테스트 간에 또는 테스트 후에 앱을 정리하려면 다음 메서드를 사용합니다. 활성 리스너가 포함된 초기화된 앱이 있으면 자바스크립트가 종료되지 않습니다.

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

입력이 성공하면 거부된 프라미스가 반환되고, 입력이 거부되면 성공한 프라미스가 반환됩니다.

데이터베이스 읽기 또는 쓰기 실패를 알리는 어설션을 만들려면 다음 메서드를 사용하세요.

firebase.assertFails(app.database().ref("secret").once("value"));

assertSucceeds(pr: Promise) => Promise

입력이 성공하면 성공한 프라미스가 반환되고, 입력이 거부되면 거부된 프라미스가 반환됩니다.

데이터베이스 읽기 또는 쓰기 성공을 알리는 어설션을 만들려면 이 메서드를 사용하세요.

firebase.assertSucceeds(app.database().ref("public").once("value"));

Cloud Storage

Cloud Storage

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

테스트에 사용할 특정 사용자로 인증된 앱을 만들려면 다음 메서드를 사용하세요.

옵션에 지정된 스토리지 버킷 이름 및 인증 변수 재정의에 따라 초기화된 Firebase 앱이 반환됩니다.

firebase.initializeTestApp({
  storageBucket: "my-bucket",
  auth: { uid: "alice" }
});

initializeAdminApp({ storageBucket: string }) => FirebaseApp

테스트 상태를 설정하기 위해 관리자로 인증된 앱을 만들려면 다음 메서드를 사용하세요.

옵션에 지정된 스토리지 버킷 이름에 따라 초기화된 관리자 Firebase 앱이 반환됩니다. 이 앱은 버킷에 읽기와 쓰기를 수행할 때 보안 규칙을 우회합니다.

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

스토리지 버킷의 규칙을 설정하려면 이 메서드를 사용하세요.

로컬에서 관리되는 스토리지 버킷에 규칙을 전송합니다. 'storageBucket'과 'rules'를 문자열로 지정하는 옵션 객체를 선택하세요.

firebase
      .loadStorageRules({
        storageBucket: "my-bucket",
        rules: fs.readFileSync("/path/to/storage.rules", "utf8")
      });

apps() => [FirebaseApp]

현재 초기화된 테스트와 관리자 앱을 모두 반환합니다.

테스트 간에 또는 테스트 후에 앱을 정리하려면 다음 메서드를 사용합니다. 활성 리스너가 포함된 초기화된 앱이 있으면 자바스크립트가 종료되지 않습니다.

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

입력이 성공하면 거부된 프라미스가 반환되고, 입력이 거부되면 성공한 프라미스가 반환됩니다.

스토리지 버킷 읽기 또는 쓰기 실패를 알리는 어설션을 만들려면 다음 메서드를 사용합니다.

firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());

assertSucceeds(pr: Promise) => Promise

입력이 성공하면 성공한 프라미스가 반환되고, 입력이 거부되면 거부된 프라미스가 반환됩니다.

스토리지 버킷 읽기 또는 쓰기 성공을 알리는 어설션을 만들려면 다음 메서드를 사용합니다.

firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());

JS SDK v8용 RUT 라이브러리 API

제품을 선택하여 Firebase Test SDK에서 에뮬레이터와의 상호작용에 사용하는 메서드를 확인하세요.

Cloud Firestore

Cloud Firestore

initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp

이 메서드는 옵션에 지정된 프로젝트 ID와 인증 변수에 따라 초기화된 Firebase 앱을 반환합니다. 테스트에 사용할 특정 사용자로 인증된 앱을 만들려면 이 메서드를 사용하세요.

firebase.initializeTestApp({
  projectId: "my-test-project",
  auth: { uid: "alice", email: "alice@example.com" }
});

initializeAdminApp({ projectId: string }) => FirebaseApp

이 메서드는 초기화된 관리자 Firebase 앱을 반환합니다. 이 앱은 읽기와 쓰기를 수행할 때 보안 규칙을 우회합니다. 테스트 상태를 설정하기 위해 관리자로 인증된 앱을 만들려면 이 메서드를 사용하세요.

firebase.initializeAdminApp({ projectId: "my-test-project" });
    

apps() => [FirebaseApp] 이 메서드는 현재 초기화된 테스트와 관리자 앱을 모두 반환합니다. 테스트 중에 또는 테스트 후에 앱을 정리하려면 이 메서드를 사용하세요.

Promise.all(firebase.apps().map(app => app.delete()))

loadFirestoreRules({ projectId: string, rules: Object }) => Promise

이 메서드는 로컬에서 실행 중인 데이터베이스에 규칙을 전송합니다. 이때 규칙을 문자열로 지정하는 객체를 선택해야 합니다. 데이터베이스 규칙을 설정하려면 이 메서드를 사용하세요.

firebase.loadFirestoreRules({
  projectId: "my-test-project",
  rules: fs.readFileSync("/path/to/firestore.rules", "utf8")
});
    

assertFails(pr: Promise) => Promise

이 메서드는 입력이 성공하면 거부된 프로미스를 반환하고, 입력이 거부되면 성공한 프로미스를 반환합니다. 데이터베이스 읽기 또는 쓰기 실패를 알리는 어설션을 만들려면 다음 메서드를 사용하세요.

firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
    

assertSucceeds(pr: Promise) => Promise

이 메서드는 입력이 성공하면 성공한 프로미스를 반환하고, 입력이 거부되면 거부된 프로미스를 반환합니다. 데이터베이스 읽기 또는 쓰기 성공을 알리는 어설션을 만들려면 다음 메서드를 사용하세요.

firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
    

clearFirestoreData({ projectId: string }) => Promise

다음 메서드는 로컬에서 실행되는 Firestore 인스턴스의 특정 프로젝트와 연결된 모든 데이터를 지웁니다. 테스트 후 삭제하려면 이 메서드를 사용하세요.

firebase.clearFirestoreData({
  projectId: "my-test-project"
});
   

실시간 데이터베이스

실시간 데이터베이스

initializeTestApp({ databaseName: string, auth: Object }) => FirebaseApp

테스트에 사용할 특정 사용자로 인증된 앱을 만들려면 다음 메서드를 사용하세요.

옵션에 지정된 데이터베이스 이름 및 인증 변수 재정의에 따라 초기화된 Firebase 앱이 반환됩니다.

firebase.initializeTestApp({
  databaseName: "my-database",
  auth: { uid: "alice" }
});

initializeAdminApp({ databaseName: string }) => FirebaseApp

테스트 상태를 설정하기 위해 관리자로 인증된 앱을 만들려면 다음 메서드를 사용하세요.

옵션에 지정된 데이터베이스 이름에 따라 초기화된 관리자 Firebase 앱이 반환됩니다. 이 앱은 데이터베이스에 읽기와 쓰기를 수행할 때 보안 규칙을 우회합니다.

firebase.initializeAdminApp({ databaseName: "my-database" });

loadDatabaseRules({ databaseName: string, rules: Object }) => Promise

데이터베이스 규칙을 설정하려면 다음 메서드를 사용하세요.

로컬에서 실행 중인 데이터베이스에 규칙이 전송됩니다. 'databaseName'과 'rules'를 문자열로 지정하는 옵션 객체를 선택하세요.

firebase
      .loadDatabaseRules({
        databaseName: "my-database",
        rules: "{'rules': {'.read': false, '.write': false}}"
      });

apps() => [FirebaseApp]

현재 초기화된 테스트와 관리자 앱을 모두 반환합니다.

테스트 간에 또는 테스트 후에 앱을 정리하려면 다음 메서드를 사용합니다. 활성 리스너가 포함된 초기화된 앱이 있으면 자바스크립트가 종료되지 않습니다.

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

입력이 성공하면 거부된 프라미스가 반환되고, 입력이 거부되면 성공한 프라미스가 반환됩니다.

데이터베이스 읽기 또는 쓰기 실패를 알리는 어설션을 만들려면 다음 메서드를 사용하세요.

firebase.assertFails(app.database().ref("secret").once("value"));

assertSucceeds(pr: Promise) => Promise

입력이 성공하면 성공한 프라미스가 반환되고, 입력이 거부되면 거부된 프라미스가 반환됩니다.

데이터베이스 읽기 또는 쓰기 성공을 알리는 어설션을 만들려면 이 메서드를 사용하세요.

firebase.assertSucceeds(app.database().ref("public").once("value"));

Cloud Storage

Cloud Storage

initializeTestApp({ storageBucket: string, auth: Object }) => FirebaseApp

테스트에 사용할 특정 사용자로 인증된 앱을 만들려면 다음 메서드를 사용하세요.

옵션에 지정된 스토리지 버킷 이름 및 인증 변수 재정의에 따라 초기화된 Firebase 앱이 반환됩니다.

firebase.initializeTestApp({
  storageBucket: "my-bucket",
  auth: { uid: "alice" }
});

initializeAdminApp({ storageBucket: string }) => FirebaseApp

테스트 상태를 설정하기 위해 관리자로 인증된 앱을 만들려면 다음 메서드를 사용하세요.

옵션에 지정된 스토리지 버킷 이름에 따라 초기화된 관리자 Firebase 앱이 반환됩니다. 이 앱은 버킷에 읽기와 쓰기를 수행할 때 보안 규칙을 우회합니다.

firebase.initializeAdminApp({ storageBucket: "my-bucket" });

loadStorageRules({ storageBucket: string, rules: Object }) => Promise

스토리지 버킷의 규칙을 설정하려면 이 메서드를 사용하세요.

로컬에서 관리되는 스토리지 버킷에 규칙을 전송합니다. 'storageBucket'과 'rules'를 문자열로 지정하는 옵션 객체를 선택하세요.

firebase
      .loadStorageRules({
        storageBucket: "my-bucket",
        rules: fs.readFileSync("/path/to/storage.rules", "utf8")
      });

apps() => [FirebaseApp]

현재 초기화된 테스트와 관리자 앱을 모두 반환합니다.

테스트 간에 또는 테스트 후에 앱을 정리하려면 다음 메서드를 사용합니다. 활성 리스너가 포함된 초기화된 앱이 있으면 자바스크립트가 종료되지 않습니다.

 Promise.all(firebase.apps().map(app => app.delete()))

assertFails(pr: Promise) => Promise

입력이 성공하면 거부된 프라미스가 반환되고, 입력이 거부되면 성공한 프라미스가 반환됩니다.

스토리지 버킷 읽기 또는 쓰기 실패를 알리는 어설션을 만들려면 다음 메서드를 사용합니다.

firebase.assertFails(app.storage().ref("letters/private.doc").getMetadata());

assertSucceeds(pr: Promise) => Promise

입력이 성공하면 성공한 프라미스가 반환되고, 입력이 거부되면 거부된 프라미스가 반환됩니다.

스토리지 버킷 읽기 또는 쓰기 성공을 알리는 어설션을 만들려면 다음 메서드를 사용합니다.

firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());