Birim testleri oluşturma

Firebase Local Emulator Suite, uygulamanızın özelliklerini ve davranışını tam olarak doğrulamanızı kolaylaştırır. Ayrıca Firebase Security Rules yapılandırmalarınızı doğrulamak için de mükemmel bir araçtır. Yerel bir ortamda birim testleri çalıştırmak ve otomatikleştirmek için Firebase emülatörlerini kullanın. Bu dokümanda açıklanan yöntemler, uygulamanız için Rules özelliğini doğrulayan birim testleri oluşturup otomatikleştirirken size yardımcı olacaktır.

Henüz yapmadıysanız Firebase emülatörlerini ayarlayın.

Emülatörü çalıştırmadan önce

Emülatörü kullanmaya başlamadan önce aşağıdakileri göz önünde bulundurun:

  • Emülatör başlangıçta firebase.json dosyanızdaki firestore.rules veya "storage.rules" alanında belirtilen kuralları yükler. Dosya mevcut değilse ve aşağıda açıklandığı gibi loadFirestoreRules veya "loadStorageRules" yöntemini kullanmıyorsanız emülatör tüm projeleri açık kurallara sahip olarak kabul eder.
  • Çoğu Firebase SDK'sı doğrudan emülatörlerle çalışırken yalnızca @firebase/rules-unit-testing kitaplığı, Security Rules'da auth taklit etmeyi destekler. Bu da birim testlerini çok daha kolay hale getirir. Ayrıca kitaplık, aşağıda listelenen tüm verileri temizleme gibi emülatöre özgü birkaç özelliği destekler.
  • Emülatörler, istemci SDK'ları aracılığıyla sağlanan üretim Firebase Authentication jetonlarını da kabul eder ve kuralları buna göre değerlendirir. Bu sayede, entegrasyon ve manuel testlerde uygulamanızı doğrudan emülatörlere bağlayabilirsiniz.

Veritabanı emülatörleri ile üretim arasındaki farklar

  • Veritabanı örneğini açıkça oluşturmanız gerekmez. Emülatör, erişilen tüm veritabanı örneklerini otomatik olarak oluşturur.
  • Her yeni veritabanı kapalı kurallarla başlatılır. Bu nedenle, yönetici olmayan kullanıcılar veri okuyamaz veya yazamaz.
  • Her bir taklit edilmiş veritabanında Spark planı sınırları ve kotaları uygulanır (en önemlisi, her örnek 100 eşzamanlı bağlantıyla sınırlıdır).
  • Tüm veritabanları, "owner" dizesini yönetici kimlik doğrulama jetonu olarak kabul eder.
  • Emülatörlerin şu anda diğer Firebase ürünleriyle çalışan etkileşimleri yoktur. Normal Firebase Authentication akışı çalışmaz. Bunun yerine, rules-unit-testing kitaplığındaki initializeTestApp() yöntemini kullanabilirsiniz. Bu yöntem, auth alanı alır. Bu yöntem kullanılarak oluşturulan Firebase nesnesi, sağladığınız öğe olarak başarıyla kimlik doğrulamış gibi davranır. null parametresini gönderirseniz kimliği doğrulanmamış bir kullanıcı gibi davranır (örneğin, auth != null kuralları geçersiz olur).

Realtime Database emülatörüyle etkileşimde bulunma

Üretim Firebase Realtime Database örneğine firebaseio.com alt alan adından erişilebilir ve REST API'ye şu şekilde erişebilirsiniz:

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

Emülatör yerel olarak çalışır ve localhost:9000 adresinde kullanılabilir. Belirli bir veritabanı örneğiyle etkileşime geçmek için veritabanı adını belirtmek üzere ns sorgu parametresini kullanmanız gerekir.

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

9 numaralı JavaScript SDK'sı ile yerel birim testleri çalıştırma

Firebase, hem 9 numaralı JavaScript SDK'sı hem de 8 numaralı SDK'sıyla birlikte bir Güvenlik Kuralları birim testi kitaplığı dağıtır. Kitaplık API'leri önemli ölçüde farklıdır. Daha basit ve emülatörlere bağlanmak için daha az kurulum gerektiren v9 test kitaplığını öneririz. Böylece, üretim kaynaklarının yanlışlıkla kullanılmasını güvenli bir şekilde önleyebilirsiniz. Geriye dönük uyumluluk için v8 test kitaplığını kullanıma sunmaya devam ediyoruz.

Yerel olarak çalışan emülatörle etkileşimde bulunmak için @firebase/rules-unit-testing modülünü kullanın. Zaman aşımı veya ECONNREFUSED hataları alırsanız emülatörünün gerçekten çalıştığından emin olun.

async/await gösterimini kullanabilmek için Node.js'nin güncel bir sürümünü kullanmanızı önemle tavsiye ederiz. Test etmek isteyebileceğiniz davranışların neredeyse tamamı, asenkron işlevler içerir ve test modülü, Promise tabanlı kodla çalışacak şekilde tasarlanmıştır.

v9 Kurallar Birim Testi kitaplığı, her zaman emülatörlerden haberdardır ve üretim kaynaklarınıza hiçbir zaman dokunmaz.

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

import {
  assertFails,
  assertSucceeds,
  initializeTestEnvironment
} 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ılan birim testlerini uygulamak için:

  • initializeTestEnvironment'a çağrı göndererek RulesTestEnvironment oluşturma ve yapılandırma.
  • Rules'ü tetiklemeden test verilerini ayarlamak için geçici olarak atlamanıza olanak tanıyan bir kolay yöntem kullanın,RulesTestEnvironment.withSecurityRulesDisabled.
  • Test verileriyle ortamı temizlemek için RulesTestEnvironment.cleanup() veya RulesTestEnvironment.clearFirestore() gibi çağrılar içeren test grubu ve test başına önce/sonra kancaları ayarlama.
  • RulesTestEnvironment.authenticatedContext ve RulesTestEnvironment.unauthenticatedContext kullanarak kimlik doğrulama durumlarını taklit eden test durumları uygulama

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

Modüler API'yi kullanan emülatöre özgü test yöntemlerine de göz atın.

initializeTestEnvironment() => RulesTestEnvironment

Bu işlev, kural birim testi için bir test ortamı oluşturur. Test kurulumu için önce bu işlevi çağırın. Başarılı bir yürütme için emülatörlerin çalışıyor olması gerekir.

İşlev, bir TestEnvironmentConfig tanımlayan isteğe bağlı bir nesneyi kabul eder. Bu nesne, proje kimliği ve emülatör yapılandırma ayarlarından oluşabilir.

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 Authentication kullanıcı gibi davranan bir RulesTestContext oluşturur. Döndürülen bağlam aracılığıyla oluşturulan isteklere sahte bir Authentication jetonu eklenir. İsteğe bağlı olarak, Authentication jetonu için özel iddiaları veya geçersiz kılma işlemlerini tanımlayan bir nesne iletin.

initializeTestEnvironment ile yapılandırılanlar da dahil olmak üzere yapılandırılmış tüm emülatör ö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, Authentication üzerinden 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 jetonları eklenmez.

initializeTestEnvironment ile yapılandırılanlar da dahil olmak üzere yapılandırılmış tüm emülatör ö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 test kurulumu işlevi çalıştırın.

Bu yöntem, Güvenlik Kurallarını Atlama bağlamını alan ve bir promise döndüren bir geri çağırma işlevi alır. Sözleşme çözüldükten veya reddedildikten sonra bağlam yok edilir.

RulesTestEnvironment.cleanup()

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

Bu yöntem, emülatörlerin durumunu hiçbir şekilde değiştirmez. Testler arasında verileri sıfırlamak için uygulama emülatörüne özel veri temizleme yöntemini kullanın.

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

Bu, test amaçlı bir yardımcı program işlevidir.

İşlev, bir emülatör işlemini sarmalayan sağlanan Promise'in Güvenlik Kuralları ihlali olmadan çözüleceğini belirtir.

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

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

Bu, test amaçlı bir yardımcı program işlevidir.

İşlev, bir emülatör işlemini sarmalayan sağlanan Promise'in güvenlik kuralları ihlali nedeniyle reddedileceğini belirtir.

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

Emülatöre özel yöntemler

Modüler API'yi kullanan yaygın test yöntemleri ve yardımcı işlevler hakkında da bilgi edinin.

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

Bu yöntem, Firestore emülatörü için yapılandırılmış projectId'ye ait 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 istemci SDK'sı örneği, istemci SDK API'leriyle (modüler v9 veya uyumlu v9) kullanılabilir.

Realtime Database

Realtime Database

RulesTestEnvironment.clearDatabase() => Promise<void>

Bu yöntem, Realtime Database emülatörü için yapılandırılmış projectId'a ait Realtime Database'deki verileri temizler.

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

Bu test bağlamı için bir Realtime Database örneği alın. Döndürülen Firebase JS istemci SDK'sı örneği, istemci SDK API'leriyle (modüler veya ad alanına sahip, 9 veya daha yeni sürüm) kullanılabilir. Yöntem, Realtime Database örneğinin URL'sini kabul eder. Belirtiliyse URL'den ayıklanan parametrelerle ad alanının taklit edilmiş bir sürümü için bir örnek döndürür.

Cloud Storage

Cloud Storage

RulesTestEnvironment.clearStorage() => Promise<void>

Bu yöntem, Cloud Storage emülatörü için yapılandırılmış projectId'e ait depolama paketlerindeki nesneleri ve meta verileri temizler.

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

Bu yöntem, emülatöre bağlanacak şekilde yapılandırılmış bir Depolama örneği döndürür. Yöntem, test için Firebase Storage paketinin gs:// URL'sini kabul eder. Belirtiliyse paket adının taklit edilmiş bir sürümü için bir Storage örneği döndürür.

v8 JavaScript SDK'sı ile yerel birim testleri çalıştırma

Firebase Test SDK'sının emülatörle arayüz oluşturmak için kullandığı yöntemleri görmek üzere bir ürün seçin.

Cloud Firestore

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

Bu yöntem, seçeneklerde belirtilen proje kimliğine ve kimlik doğrulama değişkenine karşılık gelen, başlatılmış bir Firebase uygulaması döndürür. Testlerde kullanılacak 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. Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak üzere bunu kullanın.

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

apps() => [FirebaseApp] Bu yöntem, şu anda başlatılmış olan 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ı dize olarak belirten bir nesne alır. Veritabanını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 promise döndürür. Bir veritabanı okuma veya yazma işleminin başarısız olup olmadığını doğrulamak için bunu 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 promise döndürür. Bir veritabanı okuma veya yazma işleminin başarılı olup olmadığını doğrulamak 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ğinde belirli bir projeyle ilişkili tüm verileri temizler. Testlerden sonra temizlik yapmak için bu yöntemi kullanın.

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

Realtime Database

Realtime Database

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

Testlerde kullanılacak 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 kimlik doğrulama değişkeni geçersiz kılma işlemine 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 üzere 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ında okuma ve yazma işlemi yaparken güvenlik kurallarını atlıyor.

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

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

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

Kuralları yerel olarak çalışan bir veritabanına gönderir. "databaseName" ve "rules" değerlerini dize olarak belirten bir seçenekler nesnesi alır.

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

apps() => [FirebaseApp]

Şu anda başlatılmış 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 dinleyicilerle başlatılan uygulamaların JavaScript'in çıkmasını engellediğini unutmayın):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen, giriş reddedilirse başarılı olan bir promise döndürür.

Bir veritabanı okuma veya yazma işleminin başarısız olduğunu doğrulamak 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ı, giriş reddedilirse reddedilen bir promise döndürür.

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

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

Cloud Storage

Cloud Storage

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

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

Seçeneklerde belirtilen depolama paketi adına ve kimlik doğrulama değişkeni geçersiz kılma işlemine 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 üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

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

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

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

Depolama alanı paketinizin kurallarını ayarlamak için bunu kullanın.

Yerel olarak yönetilen depolama alanı gruplarına kurallar gönderir. "storageBucket" ve "rules" değerlerini dize olarak belirten bir seçenek nesnesi alır.

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

apps() => [FirebaseApp]

Şu anda başlatılmış 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 dinleyicilerle başlatılan uygulamaların JavaScript'in çıkması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 promise döndürür.

Bir depolama alanı paketinin okuma veya yazma işleminin başarısız olduğunu doğrulamak 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ı, giriş reddedilirse reddedilen bir promise döndürür.

Bir depolama alanı paketinin okuma veya yazma işleminin başarılı olduğunu doğrulamak için bunu kullanın:

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

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

Firebase Test SDK'sının emülatörle arayüz oluşturmak için kullandığı yöntemleri görmek üzere bir ürün seçin.

Cloud Firestore

Cloud Firestore

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

Bu yöntem, seçeneklerde belirtilen proje kimliğine ve kimlik doğrulama değişkenine karşılık gelen, başlatılmış bir Firebase uygulaması döndürür. Testlerde kullanılacak 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. Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak üzere bunu kullanın.

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

apps() => [FirebaseApp] Bu yöntem, şu anda başlatılmış olan 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ı dize olarak belirten bir nesne alır. Veritabanını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 promise döndürür. Bir veritabanı okuma veya yazma işleminin başarısız olup olmadığını doğrulamak için bunu 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 promise döndürür. Bir veritabanı okuma veya yazma işleminin başarılı olup olmadığını doğrulamak 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ğinde belirli bir projeyle ilişkili tüm verileri temizler. Testlerden sonra temizlik yapmak için bu yöntemi kullanın.

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

Realtime Database

Realtime Database

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

Testlerde kullanılacak 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 kimlik doğrulama değişkeni geçersiz kılma işlemine 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 üzere 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ında okuma ve yazma işlemi yaparken güvenlik kurallarını atlıyor.

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

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

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

Kuralları yerel olarak çalışan bir veritabanına gönderir. "databaseName" ve "rules" değerlerini dize olarak belirten bir seçenekler nesnesi alır.

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

apps() => [FirebaseApp]

Şu anda başlatılmış 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 dinleyicilerle başlatılan uygulamaların JavaScript'in çıkmasını engellediğini unutmayın):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen, giriş reddedilirse başarılı olan bir promise döndürür.

Bir veritabanı okuma veya yazma işleminin başarısız olduğunu doğrulamak 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ı, giriş reddedilirse reddedilen bir promise döndürür.

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

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

Cloud Storage

Cloud Storage

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

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

Seçeneklerde belirtilen depolama paketi adına ve kimlik doğrulama değişkeni geçersiz kılma işlemine 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 üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

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

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

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

Depolama alanı paketinizin kurallarını ayarlamak için bunu kullanın.

Yerel olarak yönetilen depolama alanı gruplarına kurallar gönderir. "storageBucket" ve "rules" değerlerini dize olarak belirten bir seçenek nesnesi alır.

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

apps() => [FirebaseApp]

Şu anda başlatılmış 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 dinleyicilerle başlatılan uygulamaların JavaScript'in çıkması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 promise döndürür.

Bir depolama alanı paketinin okuma veya yazma işleminin başarısız olduğunu doğrulamak 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ı, giriş reddedilirse reddedilen bir promise döndürür.

Bir depolama alanı paketinin okuma veya yazma işleminin başarılı olduğunu doğrulamak için bunu kullanın:

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