Birim testleri oluşturma

Firebase Local Emulator Suite, uygulamanızın Özellikler ve davranışlar. Aynı zamanda Firebase Security Rules yapılandırmalarınızı doğrulamak için harika bir araçtır. Firebase Emulators'ı kullanma yerel ortamda birim testlerini çalıştırmak ve otomatikleştirmek için kullanılır. Bu makalede açıklanan yöntemler Bu belge, uygulamanız için birim testleri oluşturup otomatikleştirirken size yardımcı olacaktır Rules doğrulayın.

Henüz yapmadıysanız Firebase Emülatörleri'ni 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 firestore.rules içinde belirtilen kuralları yükler veya "storage.rules" alanına (firebase.json dosyanızın) yapıştırın. Dosya loadFirestoreRules veya "loadStorageRules" parametresini kullanmıyorsanız yöntem aşağıda açıklandığı gibi, emülatör tüm projeleri açık kurallara sahip olarak değerlendirir.
  • Bu sırada Firebase SDK'larının çoğu emülatörlerle doğrudan çalıştığından, yalnızca @firebase/rules-unit-testing kitaplığı tarafından Güvenlik Kuralları'nda sahte auth olarak ayarlar ve birim testlerini çok daha kolay hale getirir. Ayrıca, kitaplık, tüm verileri temizleme, emülatöre özgü bazı özellikleri, aşağıda gösterildiği gibidir.
  • Emülatörler, sağlanan üretim Firebase Auth jetonlarını da kabul eder aracılığıyla bağlantı kurabilir ve kuralları uygun şekilde değerlendirebilirsiniz. Bu da uygulamanızı doğrudan entegrasyon ve manuel testlerde emülatörlere

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

  • Açıkça veritabanı örneği oluşturmanız gerekmez. Emülatör Böylece erişilen herhangi bir veritabanı örneği otomatik olarak oluşturulur.
  • Her yeni veritabanı kapalı kurallarla başlatılır. Bu nedenle, yönetici olmayan kullanıcılar okuma veya yazma becerisine sahip olmalıdır.
  • Emüle edilen her veritabanı Spark planını uygular sınırları ve kotaları (en önemlisi, bu ayar her örneği 100 eşzamanlı bağlantı).
  • Tüm veritabanları "owner" dizesini yönetici kimlik doğrulama jetonu olarak kabul eder.
  • Emülatörlerin şu anda diğer Firebase ile çalışan etkileşimleri yok ürünler. Bu durum özellikle normal Firebase Authentication akışı çalışmaz. Bunun yerine, rules-unit-testing içindeki initializeTestApp() yöntemini kullanabilirsiniz (auth alanını içerir). Bu komut kullanılarak oluşturulan Firebase nesnesi yöntemi başarılı bir şekilde kimliği doğrulanmış gibi davranır. gerçekleşebilir. null içinde geçerseniz şu şekilde davranır: kimliği doğrulanmamış kullanıcı (örneğin, auth != null kural başarısız olur).

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

Üretim Firebase Realtime Database örneğine şu alanın alt alan adından erişilebilir: firebaseio.com. 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. Etkileşimde bulunmak için belirli bir veritabanı örneğiyle kullanmak için ns sorgu parametresini kullanabilirsiniz.

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

JavaScript SDK sürüm 9 ile yerel birim testlerini çalıştırma

Firebase, Güvenlik Kuralları birimi test kitaplığını hem kendi sürümüyle dağıtır 9 JavaScript SDK'sı ve sürüm 8 SDK'sı. Kitaplık API'leri önemli ölçüde yardımcı olur. Daha basit ve daha basit olan v9 test kitaplığını öneririz. emülatörlere bağlanmak için daha az kurulum gerektirir ve bu sayede kazara olabilecek üretim kaynaklarının kullanılmasıdır. Geriye dönük uyumluluk için mevcut v8 test kitaplığı.

Emülatörle etkileşimde bulunmak için @firebase/rules-unit-testing modülünü kullanın yerel olarak çalışan bir web sitesidir. Zaman aşımları veya ECONNREFUSED hata alırsanız tekrar kontrol edin emin olun.

Node.js'yi kullanabilmek için yeni bir sürüm async/await gösterimi. Test etmek isteyebileceğiniz davranışların neredeyse tümü eş zamansız fonksiyonlar içerir. Test modülü de Vaat tabanlı kod.

v9 Kural Birimi Testi kitaplığı emülatörlerden her zaman haberdar olur ve ve prodüksiyon kaynaklarınız ile bağlantılı olması gerekir.

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 aktarma işleminden sonra, birim testlerinin uygulanması şunları içerir:

  • Şuna çağrı içeren bir RulesTestEnvironment oluşturma ve yapılandırma: initializeTestEnvironment.
  • Kolaylık kullanarak test verilerini Rules tetiklemeden ayarlama bunları geçici olarak atlamanızı sağlayan bir yöntem kullanıyorsanız RulesTestEnvironment.withSecurityRulesDisabled.
  • test verilerini ve ortamını temizleyin (ör. RulesTestEnvironment.cleanup()) veya RulesTestEnvironment.clearFirestore().
  • Kimlik doğrulama durumlarını taklit eden test durumları uygulama RulesTestEnvironment.authenticatedContext ve RulesTestEnvironment.unauthenticatedContext.
ziyaret edin.

Sık kullanılan yöntemler ve fayda işlevleri

Şunlara da bakabilirsiniz: modüler API'yi kullanarak emülatöre özel test yöntemlerini test edin.

initializeTestEnvironment() => RulesTestEnvironment

Bu işlev, kural birimi testi için bir test ortamı başlatır. Bunu ara işlevini kullanın. Başarılı yürütme için emülatörlerin çalışıyor.

İşlev, TestEnvironmentConfig tanımlayan isteğe bağlı bir nesneyi kabul eder Bu kod, 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 RulesTestContext Authentication kullanıcı. Döndürülen bağlam aracılığıyla oluşturulan istekler örnek olarak sunulur Authentication jetonu eklendi. İsteğe bağlı olarak, özel hak talepleri tanımlayan bir nesne iletin veya Authentication jeton yükünü geçersiz kılar.

Herhangi bir emülatöre erişmek için testlerinizde döndürülen test bağlamı nesnesini kullanın initializeTestEnvironment ile yapılandırılanlar dahil olmak üzere örnek yapılandırıldı.

// 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, RulesTestContext gibi çalışan bir istemciyi oluşturur. Authentication aracılığıyla giriş yapılmadı. Döndürülen bağlam üzerinden oluşturulan istekler Firebase Auth jetonları ekli olmalıdır.

Herhangi bir emülatöre erişmek için testlerinizde döndürülen test bağlamı nesnesini kullanın initializeTestEnvironment ile yapılandırılanlar dahil olmak üzere örnek yapılandırıldı.

// 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ı gibi davranan bağlama sahip bir test kurulum işlevi çalıştırın devre dışı bırakıldı.

Bu yöntem, Security-Kuralları atlamayı alan ve bir vaat veriyor. Söz verildikten sonra bağlam kaldırılır çözümlenir / reddeder.

RulesTestEnvironment.cleanup()

Bu yöntem test ortamında oluşturulan tüm RulesTestContexts öğelerini kaldırır ve temel kaynakları temizleyerek temiz bir çıkış yapılmasını sağlar.

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

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

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

İşlev, sağlanan Promise'in bir emülatör işlemini sarmaladığını doğrular hiçbir Güvenlik Kuralı ihlali yapılmadan çözülecektir.

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

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

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

İşlev, sağlanan Promise'in bir emülatör işlemini sarmaladığını doğrular kullanıcı Güvenlik Kuralları'nın ihlali durumunda reddedilecektir.

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

Emülatöre özel yöntemler

Şunlara da bakabilirsiniz: modüler API'yi kullanan yaygın test yöntemlerini ve yardımcı işlevleri inceleyin.

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

Bu yöntem Firestore veritabanındaki Firestore emülatörü için projectId yapılandırıldı.

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 İstemci SDK'sı örneği, istemci SDK API'leriyle kullanılabilir (v9 modüler) veya v9 uyumluluğu).

Realtime Database

Realtime Database

RulesTestEnvironment.clearDatabase() => Promise<void>

Bu yöntem Realtime Database içinde Realtime Database emülatörü için projectId yapılandırıldı.

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 İstemci SDK'sı örneği, istemci SDK API'leriyle (modüler veya ad alanına sahip, sürüm 9 veya sonraki sürümler). Yöntem, Gerçek Zamanlı Analiz URL'sini kabul eder Veritabanı örneği. Belirtilirse şunun emüle edilmiş sürümü için bir örnek döndürür: URL'den ayıklanan parametrelerin bulunduğu ad alanı.

Cloud Storage

Cloud Storage

RulesTestEnvironment.clearStorage() => Promise<void>

Bu yöntem, Cloud Storage emülatörü için projectId yapılandırıldı.

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

Bu yöntem, emülatöre bağlanacak şekilde yapılandırılmış bir Storage örneği döndürür. Yöntem, test için Firebase Storage Paketi'ne bir gs:// URL'si kabul eder. Eğer belirtildiğinde, paket adının emüle edilmiş bir sürümü için Storage örneği döndürür.

v8 JavaScript SDK ile yerel birim testlerini çalıştırma

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

Cloud Firestore

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

Bu yöntem, projeye karşılık gelen başlatılmış bir Firebase uygulaması döndürür Seçeneklerde belirtilen kimlik ve kimlik doğrulama değişkeni. Uygulama oluşturmak için bunu kullanın testlerde kullanılacak belirli bir kullanıcı olarak doğrulandı.

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 atlayacak güvenlik kurallarına uygun olduğundan emin olun. Uygulama oluşturmak için bunu kullanın testlerin durumunu ayarlamak için yönetici olarak doğrulandı.

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

apps() => [FirebaseApp] Bu yöntem, o sırada 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 bu aracı 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. Bir nesne alır değerini döndürü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 veya başarılı olur. Bir veritabanının okuma ya da yazma başarısız olur.

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

assertSucceeds(pr: Promise) => Promise

Bu yöntem, giriş başarılı olursa ve giriş başarılı olursa başarılı bir reddedilir. Bir veritabanının okuma ya da yardımcı olur.

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

clearFirestoreData({ projectId: string }) => Promise

Bu yöntem, tablodaki belirli bir projeyle ilişkili yerel olarak çalışan Firestore örneğidir. 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 kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Veritabanı adı ve kimlik doğrulamaya karşılık gelen başlatılmış bir Firebase uygulamasını döndürür değişkeni geçersiz kılma seçeneği seçeneklerde belirtildi.

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Veritabanı adına karşılık gelen başlatılmış bir yönetici Firebase uygulamasını döndürür seçeneklerde belirtilmiştir. Bu uygulama, okuma ve yazma sırasında güvenlik kurallarını atlar ekler.

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. Şuna benzer bir seçenek nesnesini alır: "databaseName" parametrenizi belirtir ve "kurallarınız" ile dize olarak kullanılır.

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

apps() => [FirebaseApp]

O 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 bu ayarı kullanın (başlatılan uygulamaların JavaScript çıkışını engeller):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen bir taahhüdü ve giriş reddedildi.

Veritabanı okuma veya yazma işleminin başarısız olduğunu doğrulamak için bu komutu kullanın:

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

assertSucceeds(pr: Promise) => Promise

Giriş başarılı olursa başarılı olan, giriş reddedilirse reddedilecek bir taahhüt döndürür.

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 kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Depolama paketi adına karşılık gelen başlatılmış bir Firebase uygulamasını döndürür ve seçeneklerde belirtilen kimlik doğrulama değişkenini geçersiz kıl.

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

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Depolama paketine karşılık gelen başlatılmış bir yönetici Firebase uygulamasını döndürür seçeneklerde belirtilen ad. Bu uygulama, okuma ve yükleme sırasında güvenlik kurallarını atlar sakıncası yoktur.

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 depolama paketlerine gönderir. Şuna benzer bir seçenek nesnesini alır: "storageBucket" öğenizi belirtir ve "kurallarınız" ile dize olarak kullanılır.

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

apps() => [FirebaseApp]

O 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 bu ayarı kullanın (başlatılan uygulamaların JavaScript çıkışını engeller):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen bir taahhüdü ve giriş reddedildi.

Depolama paketi okuma veya yazmanın başarısız olduğunu onaylamak 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ş reddedildi.

Depolama paketinin okuma veya yazma işleminin başarılı olduğunu onaylamak için bunu kullanın:

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

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

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

Cloud Firestore

Cloud Firestore

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

Bu yöntem, projeye karşılık gelen başlatılmış bir Firebase uygulaması döndürür Seçeneklerde belirtilen kimlik ve kimlik doğrulama değişkeni. Uygulama oluşturmak için bunu kullanın testlerde kullanılacak belirli bir kullanıcı olarak doğrulandı.

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 atlayacak güvenlik kurallarına uygun olduğundan emin olun. Uygulama oluşturmak için bunu kullanın testlerin durumunu ayarlamak için yönetici olarak doğrulandı.

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

apps() => [FirebaseApp] Bu yöntem, o sırada 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 bu aracı 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. Bir nesne alır değerini döndürü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 veya başarılı olur. Bir veritabanının okuma ya da yazma başarısız olur.

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

assertSucceeds(pr: Promise) => Promise

Bu yöntem, giriş başarılı olursa ve giriş başarılı olursa başarılı bir reddedilir. Bir veritabanının okuma ya da yardımcı olur.

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

clearFirestoreData({ projectId: string }) => Promise

Bu yöntem, tablodaki belirli bir projeyle ilişkili yerel olarak çalışan Firestore örneğidir. 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 kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Veritabanı adı ve kimlik doğrulamaya karşılık gelen başlatılmış bir Firebase uygulamasını döndürür değişkeni geçersiz kılma seçeneği seçeneklerde belirtildi.

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Veritabanı adına karşılık gelen başlatılmış bir yönetici Firebase uygulamasını döndürür seçeneklerde belirtilmiştir. Bu uygulama, okuma ve yazma sırasında güvenlik kurallarını atlar ekler.

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. Şuna benzer bir seçenek nesnesini alır: "databaseName" parametrenizi belirtir ve "kurallarınız" ile dize olarak kullanılır.

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

apps() => [FirebaseApp]

O 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 bu ayarı kullanın (başlatılan uygulamaların JavaScript çıkışını engeller):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen bir taahhüdü ve giriş reddedildi.

Veritabanı okuma veya yazma işleminin başarısız olduğunu doğrulamak için bu komutu kullanın:

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

assertSucceeds(pr: Promise) => Promise

Giriş başarılı olursa başarılı olan, giriş reddedilirse reddedilecek bir taahhüt döndürür.

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 kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Depolama paketi adına karşılık gelen başlatılmış bir Firebase uygulamasını döndürür ve seçeneklerde belirtilen kimlik doğrulama değişkenini geçersiz kıl.

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

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

Depolama paketine karşılık gelen başlatılmış bir yönetici Firebase uygulamasını döndürür seçeneklerde belirtilen ad. Bu uygulama, okuma ve yükleme sırasında güvenlik kurallarını atlar sakıncası yoktur.

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 depolama paketlerine gönderir. Şuna benzer bir seçenek nesnesini alır: "storageBucket" öğenizi belirtir ve "kurallarınız" ile dize olarak kullanılır.

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

apps() => [FirebaseApp]

O 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 bu ayarı kullanın (başlatılan uygulamaların JavaScript çıkışını engeller):

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

assertFails(pr: Promise) => Promise

Giriş başarılı olursa reddedilen bir taahhüdü ve giriş reddedildi.

Depolama paketi okuma veya yazmanın başarısız olduğunu onaylamak 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ş reddedildi.

Depolama paketinin okuma veya yazma işleminin başarılı olduğunu onaylamak için bunu kullanın:

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