Yapı birimi testleri

Firebase Local Emulator Suite, uygulamanızın özelliklerini ve davranışını tam olarak doğrulamanızı kolaylaştırır. Ayrıca, Firebase Güvenlik Kuralları yapılandırmalarınızı doğrulamak için harika bir araçtır. Birim testlerini yerel bir ortamda çalıştırmak ve otomatikleştirmek için Firebase Emülatörlerini kullanın. Bu belgede özetlenen yöntemler, uygulamanız için Kurallarınızı doğrulayan birim testleri oluşturup otomatikleştirirken size yardımcı olacaktır.

Henüz yapmadıysanız, Firebase Emülatörlerini kurun .

Öykünücüyü çalıştırmadan önce

Öykünücüyü kullanmaya başlamadan önce aşağıdakileri aklınızda bulundurun:

  • Öykünücü başlangıçta firebase.json dosyanızın firestore.rules veya 'storage.rules' alanında belirtilen kuralları yükleyecektir. Dosya yoksa ve aşağıda açıklandığı gibi loadFirestoreRules veya 'loadStorageRules' yöntemini kullanmazsanız, öykünücü tüm projeleri açık kurallara sahipmiş gibi değerlendirir.
  • Çoğu Firebase SDK'sı öykünücülerle doğrudan çalışırken, yalnızca @firebase/rules-unit-testing kitaplığı Güvenlik Kurallarında sahte auth doğrulamayı destekler ve birim testlerini çok daha kolaylaştırır. Ayrıca kitaplık, aşağıda listelendiği gibi tüm verileri temizleme gibi öykünücüye özgü birkaç özelliği destekler.
  • Öykünücüler ayrıca İstemci SDK'ları aracılığıyla sağlanan üretim Firebase Auth belirteçlerini kabul edecek ve kuralları buna göre değerlendirecek, bu da entegrasyon ve manuel testlerde uygulamanızın doğrudan öykünücülere bağlanmasına olanak tanır.

Veritabanı öykünücüleri ve üretim arasındaki farklar

  • Açıkça bir veritabanı örneği oluşturmanız gerekmez. Öykünücü, erişilen herhangi bir veritabanı örneğini otomatik olarak oluşturur.
  • Her yeni veritabanı kapalı kurallarla başlatılır, bu nedenle yönetici olmayan kullanıcılar okuyamaz veya yazamaz.
  • Taklit edilen her bir veritabanı, Spark planı limitlerini ve kotalarını uygular (en önemlisi, bu, her bir örneği 100 eşzamanlı bağlantıyla sınırlar).
  • Herhangi bir veritabanı, yönetici kimlik doğrulama belirteci olarak "owner" dizesini kabul edecektir.
  • Öykünücülerin şu anda diğer Firebase ürünleriyle çalışan etkileşimleri yoktur. Özellikle, normal Firebase Kimlik Doğrulaması akışı çalışmıyor. Bunun yerine, bir auth alanı alan rules-unit-testing kitaplığında initializeTestApp() yöntemini kullanabilirsiniz. Bu yöntem kullanılarak oluşturulan Firebase nesnesi, sağladığınız varlık olarak kimliği başarıyla doğrulanmış gibi davranır. null değerini iletirseniz, kimliği doğrulanmamış bir kullanıcı gibi davranır (örneğin, auth != null kuralları başarısız olur).

Realtime Database emülatörü ile etkileşim kurma

Bir üretim Firebase Gerçek Zamanlı Veritabanı örneğine, firebaseio.com alt etki alanından erişilebilir ve REST api'ye şu şekilde erişebilirsiniz:

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

Öykünücü yerel olarak çalışır ve localhost:9000 adresinde bulunur. Belirli bir veritabanı örneğiyle etkileşim kurmak için, veritabanı adını belirtmek üzere ns sorgu parametresini kullanmanız gerekecektir.

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

Sürüm 9 JavaScript SDK ile yerel birim testlerini çalıştırın

Firebase, hem sürüm 9 JavaScript SDK'sı hem de sürüm 8 SDK'sı ile bir Güvenlik Kuralları birim test kitaplığı dağıtır. Kitaplık API'leri önemli ölçüde farklıdır. Daha akıcı olan ve öykünücülere bağlanmak için daha az kurulum gerektiren v9 test kitaplığını öneriyoruz ve böylece üretim kaynaklarının yanlışlıkla kullanılmasını güvenli bir şekilde önlüyoruz. Geriye dönük uyumluluk için v8 test kitaplığını kullanıma sunmaya devam ediyoruz.

Yerel olarak çalışan emülatörle etkileşim kurmak için @firebase/rules-unit-testing modülünü kullanın. Zaman aşımları veya ECONNREFUSED hataları alırsanız öykünücünün gerçekten çalışıp çalışmadığını bir kez daha kontrol edin.

async/await gösterimini kullanabilmeniz için Node.js'nin yeni bir sürümünü kullanmanızı kesinlikle öneririz. Test etmek isteyebileceğiniz davranışların neredeyse tamamı eşzamansız işlevler içerir ve test modülü Promise tabanlı kodla çalışacak şekilde tasarlanmıştır.

v9 Kuralları Birim Testi kitaplığı, öykünücülerden her zaman haberdardır ve üretim kaynaklarınıza asla dokunmaz.

Kitaplığı v9 modüler içe aktarma deyimlerini kullanarak içe aktarırsınız. Örneğin:

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.

İçe aktarıldıktan sonra, birim testlerinin uygulanması şunları içerir:

  • initializeTestEnvironment çağrısıyla bir RulesTestEnvironment oluşturma ve yapılandırma.
  • Test verilerini Kuralları tetiklemeden, onları geçici olarak atlamanıza izin veren bir kolaylık yöntemi kullanarak ayarlama, RulesTestEnvironment.withSecurityRulesDisabled .
  • Test verilerini ve ortamını temizlemek için, RulesTestEnvironment.cleanup() veya RulesTestEnvironment.clearFirestore() gibi çağrılarla test paketini ve test öncesi/sonrası kancalarını ayarlama.
  • RulesTestEnvironment.authenticatedContext ve RulesTestEnvironment.unauthenticatedContext kullanarak kimlik doğrulama durumlarını taklit eden test senaryolarını uygulama.

Yaygın yöntemler ve yardımcı işlevler

Modüler API'yi kullanan öykünücüye özgü test yöntemlerine de bakın.

initializeTestEnvironment() => RulesTestEnvironment

Bu işlev, kural birimi testi için bir test ortamı başlatır. Test kurulumu için önce bu işlevi çağırın. Başarılı yürütme öykünücülerin çalışır durumda olmasını gerektirir.

İşlev, bir proje kimliği ve öykünücü yapılandırma ayarlarından oluşabilen bir TestEnvironmentConfig tanımlayan isteğe bağlı bir nesneyi kabul eder.

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

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

Bu yöntem, kimliği doğrulanmış bir Kimlik Doğrulama kullanıcısı gibi davranan bir RulesTestContext oluşturur. Döndürülen bağlam aracılığıyla oluşturulan isteklere sahte bir Kimlik Doğrulama belirteci eklenecektir. İsteğe bağlı olarak, Kimlik Doğrulama belirteci yükleri için özel talepleri veya geçersiz kılmaları tanımlayan bir nesne iletin.

initializeTestEnvironment ile yapılandırılanlar da dahil olmak üzere yapılandırılmış tüm öykünücü örneklerine erişmek için testlerinizde döndürülen test bağlamı nesnesini kullanın.

// 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

Bu yöntem, Kimlik Doğrulama aracılığıyla oturum açmamış bir istemci gibi davranan bir RulesTestContext oluşturur. Döndürülen bağlam aracılığıyla oluşturulan isteklerde Firebase Auth belirteçleri eklenmez.

initializeTestEnvironment ile yapılandırılanlar da dahil olmak üzere yapılandırılmış tüm öykünücü örneklerine erişmek için testlerinizde döndürülen test bağlamı nesnesini kullanın.

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

Güvenlik Kuralları devre dışı bırakılmış gibi davranan bir bağlamla bir test kurulumu işlevi çalıştırın.

Bu yöntem, Güvenlik Kurallarını atlayarak bağlamı alan ve bir söz veren bir geri çağırma işlevi alır. Söz verildiğinde / reddedildiğinde bağlam yok edilecektir.

RulesTestEnvironment.cleanup()

Bu yöntem, test ortamında oluşturulan tüm RulesTestContexts yok eder ve temeldeki kaynakları temizleyerek temiz bir çıkış sağlar.

Bu yöntem öykünücülerin durumunu hiçbir şekilde değiştirmez. Testler arasında verileri sıfırlamak için uygulamaya öykünücüye özel açık veri yöntemini kullanın.

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

Bu bir test durumu yardımcı programı işlevidir.

İşlev, bir öykünücü işlemini sarmalayan sağlanan Taahhüdün Güvenlik Kuralları ihlali olmaksızın çözüleceğini iddia eder.

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

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

Bu bir test durumu yardımcı programı işlevidir.

İşlev, bir emülatör işlemini sarmalayan sağlanan Taahhüdün bir Güvenlik Kuralları ihlaliyle reddedileceğini ileri sürer.

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

Öykünücüye özgü yöntemler

Ayrıca , modüler API kullanan yaygın test yöntemlerine ve yardımcı program işlevlerine bakın.

Bulut Firestore

Bulut Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

Bu yöntem, Firestore öykünücüsü için yapılandırılmış projectId ait olan Firestore veritabanındaki verileri temizler.

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

Bu yöntem, bu test bağlamı için bir Firestore örneği alır. Döndürülen Firebase JS Client SDK örneği, istemci SDK API'leri (v9 modüler veya v9 uyumlu) ile kullanılabilir.

Gerçek Zamanlı Veritabanı

Gerçek Zamanlı Veritabanı

RulesTestEnvironment.clearDatabase() => Promise<void>

Bu yöntem, Gerçek Zamanlı Veritabanı öykünücüsü için yapılandırılmış projectId kimliğine ait Gerçek Zamanlı Veritabanındaki verileri temizler.

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

Bu test bağlamı için bir Gerçek Zamanlı Veritabanı örneği edinin. Döndürülen Firebase JS İstemci SDK örneği, istemci SDK API'leri (modüler veya ad alanlı, sürüm 9 veya üstü) ile kullanılabilir. Yöntem, Realtime Database örneğinin bir URL'sini kabul eder. Belirtilmişse, URL'den çıkarılan parametrelerle ad alanının öykünülmüş bir sürümü için bir örnek döndürür.

Bulut depolama

Bulut depolama

RulesTestEnvironment.clearStorage() => Promise<void>

Bu yöntem, Cloud Storage öykünücüsü için yapılandırılmış projectId ait depolama paketlerindeki nesneleri ve meta verileri temizler.

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

Bu yöntem öykünücüye bağlanmak üzere yapılandırılmış bir Depolama örneği döndürür. Yöntem, test için Firebase Storage Bucket'e giden bir gs:// url'sini kabul eder. Belirtilirse, grup adının öykünülmüş bir sürümü için bir Depolama örneği döndürür.

v8 JavaScript SDK ile yerel birim testleri çalıştırın

Öykünücüyle arayüz oluşturmak için Firebase Test SDK tarafından kullanılan yöntemleri görmek için bir ürün seçin.

Bulut Firestore

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

Bu yöntem, seçeneklerde belirtilen proje kimliğine ve auth değişkenine karşılık gelen, başlatılmış bir Firebase uygulaması döndürür. Testlerde kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

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

initializeAdminApp({ projectId: string }) => FirebaseApp

Bu yöntem, başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, okuma ve yazma işlemleri gerçekleştirirken güvenlik kurallarını atlar. Testler için durumu ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

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

apps() => [FirebaseApp] Bu yöntem, halihazırda başlatılan tüm test ve yönetici uygulamalarını döndürür. Testler arasında veya sonrasında uygulamaları temizlemek için bunu kullanın.

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

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

Bu yöntem, kuralları yerel olarak çalışan bir veritabanına gönderir. Kuralları bir dizi olarak belirten bir nesne alır. Veritabanınızın kurallarını ayarlamak için bu yöntemi kullanın.

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

assertFails(pr: Promise) => Promise

Bu yöntem, giriş başarılı olursa reddedilen veya giriş reddedilirse başarılı olan bir söz döndürür. Bunu, bir veritabanı okuma veya yazma başarısız olursa onaylamak için kullanın.

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

assertSucceeds(pr: Promise) => Promise

Bu yöntem, giriş başarılı olursa başarılı olan ve giriş reddedilirse reddedilen bir söz döndürür. Bir veritabanının okuma veya yazma işleminin başarılı olup olmadığını belirtmek için bunu kullanın.

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

clearFirestoreData({ projectId: string }) => Promise

Bu yöntem, yerel olarak çalışan Firestore örneğindeki belirli bir projeyle ilişkili tüm verileri temizler. Testlerden sonra temizlemek için bu yöntemi kullanın.

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

Gerçek Zamanlı Veritabanı

Gerçek Zamanlı Veritabanı

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

Testlerde kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Seçeneklerde belirtilen veritabanı adına ve auth değişkeni geçersiz kılmaya karşılık gelen, başlatılmış bir firebase uygulaması döndürür.

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

Testler için durumu ayarlamak amacıyla yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Seçeneklerde belirtilen veritabanı adına karşılık gelen, başlatılmış bir yönetici firebase uygulaması döndürür. Bu uygulama, veritabanını okurken ve yazarken güvenlik kurallarını atlar.

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

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

Veritabanınızın kurallarını ayarlamak için bunu kullanın.

Kuralları yerel olarak çalışan bir veritabanına gönderir. "veritabanıAdı"nızı ve "kurallarınızı" dizeler olarak belirten bir options nesnesi alır.

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

apps() => [FirebaseApp]

Şu anda başlatılan tüm test ve yönetici uygulamalarını döndürür.

Testler arasında veya sonrasında uygulamaları temizlemek için bunu kullanın (etkin dinleyicilere sahip başlatılan uygulamaların JavaScript'in çıkışını engellediğini unutmayın):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen ve giriş reddedilirse başarılı olan bir söz verir.

Bir veritabanı okuma veya yazma işleminin başarısız olduğunu iddia etmek için bunu kullanın:

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

assertSucceeds(pr: Promise) => Promise

Giriş başarılı olursa başarılı olan ve giriş reddedilirse reddedilen bir söz verir.

Bir veritabanı okuma veya yazma işleminin başarılı olduğunu iddia etmek için bunu kullanın:

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

Bulut depolama

Bulut depolama

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

Testlerde kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Seçeneklerde belirtilen depolama grubu adına ve auth değişkeni geçersiz kılmaya karşılık gelen, başlatılmış bir firebase uygulaması döndürür.

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

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Testler için durumu ayarlamak amacıyla yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Seçeneklerde belirtilen depolama grubu adına karşılık gelen, başlatılmış bir yönetici firebase uygulaması döndürür. Bu uygulama, kovayı okurken ve yazarken güvenlik kurallarını atlar.

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

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

Depolama paketinizin kurallarını belirlemek için bunu kullanın.

Kuralları yerel olarak yönetilen bir depolama grubuna gönderir. "storageBucket" ve "kurallarınızı" dizeler olarak belirten bir options nesnesi alır.

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

apps() => [FirebaseApp]

Şu anda başlatılan tüm test ve yönetici uygulamalarını döndürür.

Testler arasında veya sonrasında uygulamaları temizlemek için bunu kullanın (etkin dinleyicilere sahip başlatılan uygulamaların JavaScript'in çıkışını engellediğini unutmayın):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen ve giriş reddedilirse başarılı olan bir söz verir.

Bir depolama kovası okuma veya yazmanın başarısız olduğunu belirtmek için bunu kullanın:

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

assertSucceeds(pr: Promise) => Promise

Giriş başarılı olursa başarılı olan ve giriş reddedilirse reddedilen bir söz verir.

Bir depolama kovasının okuma veya yazma işleminin başarılı olduğunu iddia etmek için bunu kullanın:

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

JS SDK v8 için RUT kitaplığı API'si

Öykünücüyle arayüz oluşturmak için Firebase Test SDK tarafından kullanılan yöntemleri görmek için bir ürün seçin.

Bulut Firestore

Bulut Firestore

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

Bu yöntem, seçeneklerde belirtilen proje kimliğine ve auth değişkenine karşılık gelen, başlatılmış bir Firebase uygulaması döndürür. Testlerde kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

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

initializeAdminApp({ projectId: string }) => FirebaseApp

Bu yöntem, başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, okuma ve yazma işlemleri gerçekleştirirken güvenlik kurallarını atlar. Testler için durumu ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

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

apps() => [FirebaseApp] Bu yöntem, halihazırda başlatılan tüm test ve yönetici uygulamalarını döndürür. Testler arasında veya sonrasında uygulamaları temizlemek için bunu kullanın.

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

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

Bu yöntem, kuralları yerel olarak çalışan bir veritabanına gönderir. Kuralları bir dizi olarak belirten bir nesne alır. Veritabanınızın kurallarını ayarlamak için bu yöntemi kullanın.

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

assertFails(pr: Promise) => Promise

Bu yöntem, giriş başarılı olursa reddedilen veya giriş reddedilirse başarılı olan bir söz döndürür. Bunu, bir veritabanı okuma veya yazma başarısız olursa onaylamak için kullanın.

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

assertSucceeds(pr: Promise) => Promise

Bu yöntem, giriş başarılı olursa başarılı olan ve giriş reddedilirse reddedilen bir söz döndürür. Bir veritabanının okuma veya yazma işleminin başarılı olup olmadığını belirtmek için bunu kullanın.

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

clearFirestoreData({ projectId: string }) => Promise

Bu yöntem, yerel olarak çalışan Firestore örneğindeki belirli bir projeyle ilişkili tüm verileri temizler. Testlerden sonra temizlemek için bu yöntemi kullanın.

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

Gerçek Zamanlı Veritabanı

Gerçek Zamanlı Veritabanı

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

Testlerde kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Seçeneklerde belirtilen veritabanı adına ve auth değişkeni geçersiz kılmaya karşılık gelen, başlatılmış bir firebase uygulaması döndürür.

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

Testler için durumu ayarlamak amacıyla yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Seçeneklerde belirtilen veritabanı adına karşılık gelen, başlatılmış bir yönetici firebase uygulaması döndürür. Bu uygulama, veritabanını okurken ve yazarken güvenlik kurallarını atlar.

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

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

Veritabanınızın kurallarını ayarlamak için bunu kullanın.

Kuralları yerel olarak çalışan bir veritabanına gönderir. "veritabanıAdı"nızı ve "kurallarınızı" dizeler olarak belirten bir options nesnesi alır.

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

apps() => [FirebaseApp]

Şu anda başlatılan tüm test ve yönetici uygulamalarını döndürür.

Testler arasında veya sonrasında uygulamaları temizlemek için bunu kullanın (etkin dinleyicilere sahip başlatılan uygulamaların JavaScript'in çıkışını engellediğini unutmayın):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen ve giriş reddedilirse başarılı olan bir söz verir.

Bir veritabanı okuma veya yazma işleminin başarısız olduğunu iddia etmek için bunu kullanın:

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

assertSucceeds(pr: Promise) => Promise

Giriş başarılı olursa başarılı olan ve giriş reddedilirse reddedilen bir söz verir.

Bir veritabanı okuma veya yazma işleminin başarılı olduğunu iddia etmek için bunu kullanın:

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

Bulut depolama

Bulut depolama

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

Testlerde kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Seçeneklerde belirtilen depolama grubu adına ve auth değişkeni geçersiz kılmaya karşılık gelen, başlatılmış bir firebase uygulaması döndürür.

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

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Testler için durumu ayarlamak amacıyla yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Seçeneklerde belirtilen depolama grubu adına karşılık gelen, başlatılmış bir yönetici firebase uygulaması döndürür. Bu uygulama, kovayı okurken ve yazarken güvenlik kurallarını atlar.

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

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

Depolama paketinizin kurallarını belirlemek için bunu kullanın.

Kuralları yerel olarak yönetilen bir depolama grubuna gönderir. "storageBucket" ve "kurallarınızı" dizeler olarak belirten bir options nesnesi alır.

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

apps() => [FirebaseApp]

Şu anda başlatılan tüm test ve yönetici uygulamalarını döndürür.

Testler arasında veya sonrasında uygulamaları temizlemek için bunu kullanın (etkin dinleyicilere sahip başlatılan uygulamaların JavaScript'in çıkışını engellediğini unutmayın):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen ve giriş reddedilirse başarılı olan bir söz verir.

Bir depolama kovası okuma veya yazmanın başarısız olduğunu belirtmek için bunu kullanın:

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

assertSucceeds(pr: Promise) => Promise

Giriş başarılı olursa başarılı olan ve giriş reddedilirse reddedilen bir söz verir.

Bir depolama kovasının okuma veya yazma işleminin başarılı olduğunu iddia etmek için bunu kullanın:

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