Birim testleri oluşturma

Firebase Local Emulator Suite, uygulamanızın özelliklerini ve davranışını tam olarak doğrulamanızı kolaylaştırır. Bu araç, Firebase Security Rules yapılandırmalarınızı doğrulamak için de mükemmel bir çözümdür. Yerel ortamda birim testlerini çalıştırmak ve otomatikleştirmek için Firebase Emülatörleri'ni kullanın. Bu belgede açıklanan yöntemler, uygulamanız için birim testleri oluşturup otomatikleştirirken ve Rules doğrularken size yardımcı olmalıdı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ızın firestore.rules veya storage.rules alanında belirtilen kuralları yükler. Dosya yoksa ve aşağıda açıklandığı gibi loadFirestoreRules veya loadStorageRules yöntemini kullanmıyorsanız emülatör, tüm projeleri açık kurallara sahipmiş gibi değerlendirir.
  • Çoğu Firebase SDK'sı doğrudan emülatörlerle çalışsa da yalnızca @firebase/rules-unit-testing kitaplığı, Security Rules'da auth sahteleme özelliğini destekler. Bu da birim testlerini çok daha kolay hale getirir. Ayrıca, kitaplık aşağıdaki listede belirtildiği gibi tüm verileri temizleme gibi emülatöre özgü birkaç özelliği de destekler.
  • Emülatörler, İstemci SDK'ları aracılığıyla sağlanan üretim Firebase Auth jetonlarını da kabul eder ve kuralları buna göre değerlendirir. Bu sayede, uygulamanızı entegrasyon ve manuel testlerde 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 okuma veya yazma işlemi yapamaz.
  • Emüle edilen her veritabanı, Spark planı sınırlarını ve kotalarını uygular (en önemlisi, bu durum her örneği 100 eşzamanlı bağlantıyla sınırlar).
  • Herhangi bir veritabanı, "owner" dizesini yönetici kimlik doğrulama jetonu olarak kabul eder.
  • Emülatörler şu anda diğer Firebase ürünleriyle çalışır durumda değildir. Normal Firebase Authentication akışının çalışmadığını belirtmek isteriz. Bunun yerine, auth alanını alan rules-unit-testing kitaplığındaki initializeTestApp() yöntemini kullanabilirsiniz. Bu yöntem kullanılarak oluşturulan Firebase nesnesi, sağladığınız herhangi bir 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ılır (örneğin, auth != null kuralları başarısız olur).

Realtime Database emülatörüyle etkileşim

Bir ü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şim kurmak 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. sürüm JavaScript SDK'sı ile yerel birim testleri çalıştırma

Firebase, hem 9. sürüm JavaScript SDK'sı hem de 8. sürüm SDK'sı ile birlikte bir Güvenlik Kuralları birim testi kitaplığı dağıtır. Kitaplık API'leri önemli ölçüde farklıdır. Daha akıcı olan ve emülatörlere bağlanmak için daha az kurulum gerektiren v9 test kitaplığını kullanmanızı öneririz. Bu sayede, ü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şımları veya ECONNREFUSED hataları alırsanız emülatörün gerçekten çalıştığını iki kez kontrol edin.

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

v9 Kuralları Birim Testi kitaplığı, emülatörlerin her zaman 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ı şu adımları içerir:

  • RulesTestEnvironment numarası aranarak initializeTestEnvironment ile görüşme oluşturma ve yapılandırma.
  • Rules tetiklenmeden test verilerini ayarlama, RulesTestEnvironment.withSecurityRulesDisabled kullanarak bunları geçici olarak atlamanıza olanak tanıyan bir kolaylık yöntemi kullanma.
  • Test verilerini ve ortamını temizlemek için RulesTestEnvironment.cleanup() veya RulesTestEnvironment.clearFirestore() gibi çağrılarla test paketi ve test öncesi/sonrası kancaları ayarlama.
  • RulesTestEnvironment.authenticatedContext ve RulesTestEnvironment.unauthenticatedContext kullanarak kimlik doğrulama durumlarını taklit eden test durumları uygulama.

Sık kullanılan yöntemler ve yardımcı işlevler

Ayrıca, modüler API'yi kullanarak emülatöre özgü test yöntemleri başlıklı makaleyi de inceleyin.

initializeTestEnvironment() => RulesTestEnvironment

Bu işlev, kurallar birim testi için bir test ortamı başlatır. 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.

Bu işlev, TestEnvironmentConfig tanımlayan isteğe bağlı bir nesne 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ısı gibi davranan bir RulesTestContext oluşturur. Döndürülen bağlam aracılığıyla oluşturulan isteklere sahte Authentication jetonu eklenir. İsteğe bağlı olarak, Authentication jetonu 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 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çılmamış 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, Security-Rules-bypassing bağlamını alan ve bir promise döndüren bir geri çağırma işlevi alır. Bağlam, söz çözüldüğünde / reddedildiğinde 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ışa olanak tanır.

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

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

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

Bu işlev, bir emülatör işlemini sarmalayan sağlanan Promise'in, güvenlik kuralları ihlali olmadan çözümleneceğini iddia eder.

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

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

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

Bu işlev, bir emülatör işlemini sarmalayan sağlanan Promise'in bir güvenlik kuralları ihlaliyle reddedileceğini iddia eder.

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

Emülatöre özel yöntemler

Ayrıca modüler API'yi kullanan yaygın test yöntemleri ve yardımcı işlevler bölümüne de bakın.

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

Bu yöntem, Firestore emülatörü için projectId yapılandırılmış Firestore veritabanındaki verileri temizler.

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

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

Realtime Database

Realtime Database

RulesTestEnvironment.clearDatabase() => Promise<void>

Bu yöntem, Realtime Database öykünücüsü için yapılandırılmış projectId öğesine ait Realtime Database içindeki 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'sı API'leriyle (modüler veya ad alanlı, 9. sürüm ya da daha yeni) kullanılabilir. Yöntem, Realtime Database örneğinin URL'sini kabul eder. Belirtilirse URL'den çıkarılan parametrelerle ad alanının taklit edilmiş bir sürümünün örneğini 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 hizmetine 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 Storage örneği döndürür. Yöntem, test için Firebase Storage paketinin gs:// URL'sini kabul eder. Belirtilirse paket adının emüle edilmiş sürümü için bir Storage örneği döndürür.

v8 JavaScript SDK 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 bu özelliği 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 bu yöntemi kullanın.

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

apps() => [FirebaseApp] Bu yöntem, şu anda başlatılmış tüm test ve yönetici uygulamalarını döndürür. Testler arasında veya testlerden sonra uygulamaları temizlemek için bu özelliği 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ı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, giriş reddedilirse başarılı olan bir söz döndürür. Veritabanı okuma veya yazma işlemi başarısız olursa bunu 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. Veritabanı okuma veya yazma işleminin başarılı olup olmadığını onaylamak için kullanılır.

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"
});
   

Realtime Database

Realtime Database

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

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

Seçeneklerde belirtilen veritabanı adı ve auth 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 durum ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bu yöntemi 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ına 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ızın kurallarını ayarlamak için bu seçeneği 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.

Bunu, testler arasında veya testlerden sonra uygulamaları temizlemek için kullanın (etkin dinleyicilere sahip başlatılmış 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 söz döndürür.

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

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

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

Cloud Storage

Cloud Storage

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

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

Seçeneklerde belirtilen depolama paketi adına ve kimlik doğrulama 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 durum ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bu yöntemi kullanın.

Seçeneklerde belirtilen depolama paketi adına karşılık gelen başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, pakete okuma ve yazma işlemi yaparken güvenlik kurallarını atlıyor.

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

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

Depolama paketinize ait kuralları ayarlamak için bu seçeneği kullanın.

Kuralları yerel olarak yönetilen depolama alanı gruplarına gönderir. "storageBucket" ve "rules" değerlerinizi dize olarak belirten bir seçenekler 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.

Bunu, testler arasında veya testlerden sonra uygulamaları temizlemek için kullanın (etkin dinleyicilere sahip başlatılmış 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 söz döndürür.

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

Depolama paketi 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 ü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 bu özelliği 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 bu yöntemi kullanın.

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

apps() => [FirebaseApp] Bu yöntem, şu anda başlatılmış tüm test ve yönetici uygulamalarını döndürür. Testler arasında veya testlerden sonra uygulamaları temizlemek için bu özelliği 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ı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, giriş reddedilirse başarılı olan bir söz döndürür. Veritabanı okuma veya yazma işlemi başarısız olursa bunu 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. Veritabanı okuma veya yazma işleminin başarılı olup olmadığını onaylamak için kullanılır.

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"
});
   

Realtime Database

Realtime Database

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

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

Seçeneklerde belirtilen veritabanı adı ve auth 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 durum ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bu yöntemi 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ına 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ızın kurallarını ayarlamak için bu seçeneği 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.

Bunu, testler arasında veya testlerden sonra uygulamaları temizlemek için kullanın (etkin dinleyicilere sahip başlatılmış 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 söz döndürür.

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

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

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

Cloud Storage

Cloud Storage

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

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

Seçeneklerde belirtilen depolama paketi adına ve kimlik doğrulama 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 durum ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bu yöntemi kullanın.

Seçeneklerde belirtilen depolama paketi adına karşılık gelen başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, pakete okuma ve yazma işlemi yaparken güvenlik kurallarını atlıyor.

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

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

Depolama paketinize ait kuralları ayarlamak için bu seçeneği kullanın.

Kuralları yerel olarak yönetilen depolama alanı gruplarına gönderir. "storageBucket" ve "rules" değerlerinizi dize olarak belirten bir seçenekler 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.

Bunu, testler arasında veya testlerden sonra uygulamaları temizlemek için kullanın (etkin dinleyicilere sahip başlatılmış 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 söz döndürür.

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

Depolama paketi 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());