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 de harika bir araçtır. Yerel ortamda birim testlerini ç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 .

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

Emülatörü kullanmaya başlamadan önce aşağıdakileri aklınızda bulundurun:

  • Emülatör başlangıçta firebase.json dosyanızın firestore.rules veya 'storage.rules' alanında belirtilen kuralları yükleyecektir. Dosya mevcut değilse 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.
  • Firebase SDK'larının çoğu emülatörlerle doğrudan çalışsa da, yalnızca @firebase/rules-unit-testing kitaplığı Güvenlik Kurallarında sahte auth doğrulamayı destekleyerek birim testlerini çok daha kolay hale getirir. Ayrıca kitaplık, aşağıda listelendiği gibi tüm verilerin temizlenmesi gibi emülatöre özgü birkaç özelliği de destekler.
  • Emülatörler ayrıca İstemci SDK'ları aracılığıyla sağlanan üretim Firebase Auth belirteçlerini de kabul edecek ve kuralları buna göre değerlendirecektir; bu, entegrasyon ve manuel testlerde uygulamanızın doğrudan emülatörlere bağlanmasına olanak tanır.

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

  • Açıkça bir veritabanı örneği oluşturmanız gerekmez. Emülatör, erişilen herhangi bir veritabanı örneğini otomatik olarak oluşturacaktır.
  • Her yeni veritabanı kapalı kurallarla başlatılır, dolayısıyla yönetici olmayan kullanıcılar okuma veya yazma yapamaz.
  • Öykünülmüş her veritabanı, Spark planı sınırlarını ve kotalarını uygular (en önemlisi, bu, her örneği 100 eşzamanlı bağlantıyla sınırlandırır).
  • Herhangi bir veritabanı "owner" dizesini yönetici kimlik doğrulama belirteci olarak kabul eder.
  • Emülatörlerin şu anda diğer Firebase ürünleriyle çalışma etkileşimi yoktur. Normal Firebase Kimlik Doğrulama akışının çalışmaması dikkat çekicidir. Bunun yerine, bir auth alanı alan rules-unit-testing kitaplığındaki initializeTestApp() yöntemini kullanabilirsiniz. Bu yöntem kullanılarak oluşturulan Firebase nesnesi, sağladığınız varlık olarak başarıyla doğrulanmış gibi davranır. null değerini girerseniz, kimliği doğrulanmamış bir kullanıcı gibi davranacaktır (örneğin, auth != null kuralları başarısız olacaktır).

Gerçek Zamanlı Veritabanı emülatörüyle etkileşim kurma

Ü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

Emülatör yerel olarak çalışır ve localhost:9000 adresinde mevcuttur. 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'sıyla yerel birim testleri ç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. Kütüphane 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 ve böylece üretim kaynaklarının yanlışlıkla kullanılmasını güvenli bir şekilde önleyen v9 test kitaplığını öneriyoruz. Geriye dönük uyumluluk için v8 test kitaplığını kullanıma sunmaya devam ediyoruz.

Yerel olarak çalışan öykünücüyle etkileşimde bulunmak 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 güncel 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 Rules Unit Testing kütüphanesi her zaman emülatörlerin farkındadır ve üretim kaynaklarınıza asla 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ı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, bunları geçici olarak atlamanıza olanak tanıyan kolay bir yöntem kullanarak ayarlama RulesTestEnvironment.withSecurityRulesDisabled .
  • RulesTestEnvironment.cleanup() veya RulesTestEnvironment.clearFirestore() gibi test verilerini ve ortamını temizlemek için çağrılar içeren test paketini ve test başına öncesi/sonrası kancalarını ayarlama.
  • RulesTestEnvironment.authenticatedContext ve RulesTestEnvironment.unauthenticatedContext kullanarak kimlik doğrulama durumlarını taklit eden test senaryolarını uygulama.

Ortak yöntemler ve yardımcı işlevler

Ayrıca modüler API'yi kullanan emülatöre özel 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ışmasını gerektirir.

İşlev, bir proje kimliği ve öykünücü yapılandırma ayarlarından oluşabilen 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 verileri için özel talepleri veya geçersiz kılmaları tanımlayan bir nesneyi iletin.

initializeTestEnvironment ile yapılandırılmış olanlar 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 yoluyla oturum açmamış bir istemci gibi davranan bir RulesTestContext oluşturur. Döndürülen bağlam aracılığıyla oluşturulan isteklere Firebase Auth belirteçleri eklenmez.

initializeTestEnvironment ile yapılandırılmış olanlar 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ı atlayan bağlamı alan ve bir söz döndüren bir geri çağırma işlevini alır. Söz çözümlendiğ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ışa olanak tanır.

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

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

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

İşlev, bir öykünücü işlemini kapsayan sağlanan Promise'ın hiçbir Güvenlik Kuralı ihlali olmadan çözüleceğini ileri sürer.

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

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

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

İşlev, bir emülatör işlemini tamamlayan sağlanan Promise'ın Güvenlik Kuralları ihlali nedeniyle reddedileceğini ileri sürüyor.

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

Emülatöre özgü yöntemler

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

Bulut Firestore

Bulut Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

Bu yöntem, Firestore öykünücüsü için yapılandırılan 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 İstemci SDK örneği, istemci SDK API'leriyle (v9 modüler veya v9 uyumlu) birlikte 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ılan projectId kimliğine ait olan 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'leriyle (modüler veya ad alanlı, sürüm 9 veya üstü) birlikte kullanılabilir. Yöntem, Gerçek Zamanlı Veritabanı ö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ılan 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ğini döndürür. Yöntem, test için Firebase Storage Bucket'e bir gs:// URL'si kabul eder. Belirtilmişse, paket adının öykünülmüş bir sürümü için bir Depolama örneği döndürür.

v8 JavaScript SDK'sıyla yerel birim testleri çalıştırın

Firebase Test SDK'sının emülatörle arayüz oluşturmak için kullandığı 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 kimlik doğrulama değişkenine karşılık gelen, başlatılmış bir Firebase uygulamasını 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ını döndürür. Bu uygulama, okuma ve yazma işlemlerini gerçekleştirirken güvenlik kurallarını atlar. Testlerin durumunu ayarlamak amacıyla 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ı belirten bir nesneyi string olarak 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. Bir veritabanı okuma veya yazma işleminin başarısız olup olmadığını onaylamak 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ı olacak ve giriş reddedilirse reddedilecek bir söz döndürür. Bir veritabanının okuma veya yazma işleminin başarılı olup olmadığını onaylamak 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 temizlik yapmak 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 kimlik doğrulama değişkeni geçersiz kılmaya karşılık gelen, başlatılmış bir Firebase uygulamasını döndürür.

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

Testlerin durumunu 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ını döndürür. Bu uygulama, veritabanını okurken ve veritabanına 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ı" dize olarak belirten bir seçenek nesnesini 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, giriş reddedilirse başarılı olan bir söz döndürür.

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

Bir veritabanı okuma veya yazma işleminin başarılı olduğunu belirtmek 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 kimlik doğrulama değişkenini geçersiz kılmaya karşılık gelen, başlatılmış bir Firebase uygulamasını döndürür.

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

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Testlerin durumunu 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ını döndürür. Bu uygulama, pakete okuma ve yazma sırasında güvenlik kurallarını atlar.

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

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

Depolama grubunuzun kurallarını ayarlamak için bunu kullanın.

Kuralları yerel olarak yönetilen depolama paketlerine gönderir. "storageBucket" ve "kurallarınızı" dize olarak belirten bir seçenek nesnesini 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, giriş reddedilirse başarılı olan bir söz döndürür.

Depolama paketi okuma veya yazma işleminin 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ı olacak, giriş reddedilirse reddedilecek bir söz döndürür.

Bir 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ığı API'si

Firebase Test SDK'sının emülatörle arayüz oluşturmak için kullandığı 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 kimlik doğrulama değişkenine karşılık gelen, başlatılmış bir Firebase uygulamasını 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ını döndürür. Bu uygulama, okuma ve yazma işlemlerini gerçekleştirirken güvenlik kurallarını atlar. Testlerin durumunu ayarlamak amacıyla 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ı belirten bir nesneyi string olarak 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. Bir veritabanı okuma veya yazma işleminin başarısız olup olmadığını onaylamak 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ı olacak ve giriş reddedilirse reddedilecek bir söz döndürür. Bir veritabanının okuma veya yazma işleminin başarılı olup olmadığını onaylamak 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 temizlik yapmak 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 kimlik doğrulama değişkeni geçersiz kılmaya karşılık gelen, başlatılmış bir Firebase uygulamasını döndürür.

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

initializeAdminApp({ databaseName: string }) => FirebaseApp

Testlerin durumunu 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ını döndürür. Bu uygulama, veritabanını okurken ve veritabanına 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ı" dize olarak belirten bir seçenek nesnesini 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, giriş reddedilirse başarılı olan bir söz döndürür.

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

Bir veritabanı okuma veya yazma işleminin başarılı olduğunu belirtmek 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 kimlik doğrulama değişkenini geçersiz kılmaya karşılık gelen, başlatılmış bir Firebase uygulamasını döndürür.

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

initializeAdminApp({ storageBucket: string }) => FirebaseApp

Testlerin durumunu 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ını döndürür. Bu uygulama, pakete okuma ve yazma sırasında güvenlik kurallarını atlar.

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

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

Depolama grubunuzun kurallarını ayarlamak için bunu kullanın.

Kuralları yerel olarak yönetilen depolama paketlerine gönderir. "storageBucket" ve "kurallarınızı" dize olarak belirten bir seçenek nesnesini 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, giriş reddedilirse başarılı olan bir söz döndürür.

Depolama paketi okuma veya yazma işleminin 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ı olacak, giriş reddedilirse reddedilecek bir söz döndürür.

Bir 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());