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 kullanılabilir. 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.
  • Her öykünülen 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ırlar).
  • Tüm veritabanları, "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 geçirirseniz, kimliği doğrulanmamış bir kullanıcı gibi davranacaktır (örneğin, auth != null kuralları başarısız olacaktır).

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

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 adresinden edinilebilir. 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ıyla birlikte bir Güvenlik Kuralları birim test kütüphanesi dağıtır. Kitaplık API'leri önemli ölçüde farklıdır. Daha basit 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 kütüphanesini 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 gerçekten çalışıp çalışmadığı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.

Kütüphaneyi v9 modüler import ifadelerini kullanarak içe aktarabilirsiniz. Ö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.

Birim testlerini içe aktardıktan sonra uygulamak şunları içerir:

  • initializeTestEnvironment çağrısıyla bir RulesTestEnvironment oluşturma ve yapılandırma.
  • Rules'ı tetiklemeden test verileri ayarlama, Rules'ı geçici olarak atlamanıza olanak tanıyan bir kolaylık yöntemi kullanma RulesTestEnvironment.withSecurityRulesDisabled.
  • RulesTestEnvironment.cleanup() veya RulesTestEnvironment.clearFirestore() gibi test verilerini ve ortamını temizleme çağrılarıyla test takımı ve test başına öncesi/sonrası kancaları ayarlama.
  • RulesTestEnvironment.authenticatedContext ve RulesTestEnvironment.unauthenticatedContext kullanarak kimlik doğrulama durumlarını taklit eden test durumlarını uygulama.

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

Ayrıca modüler API'yi kullanan emülatöre özgü test yöntemlerine bakın.

initializeTestEnvironment() => RulesTestEnvironment

Bu fonksiyon, kural birimi testleri için bir test ortamı başlatır. Test kurulumu için önce bu fonksiyonu çağırın. Başarılı bir yürütme için emülatörlerin çalışıyor olması gerekir.

İşlev, bir proje kimliği ve emülatör 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 Authentication kullanıcısı gibi davranan bir RulesTestContext oluşturur. Döndürülen bağlam aracılığıyla oluşturulan isteklere sahte bir Authentication belirteci eklenecektir. İsteğe bağlı olarak, Authentication belirteç yükleri için özel talepleri veya geçersiz kılmaları tanımlayan bir nesne geçirin.

Testlerinizde döndürülen test bağlamı nesnesini kullanarak, initializeTestEnvironment ile yapılandırılanlar da dahil olmak üzere yapılandırılmış tüm emülatör örneklerine erişin.

// 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().doc('/users/alice'), { ... });

RulesTestEnvironment.unauthenticatedContext() => RulesTestContext

Bu yöntem, Authentication aracılığıyla oturum açmamış bir istemci gibi davranan bir RulesTestContext oluşturur. Döndürülen bağlam aracılığıyla oluşturulan isteklere Firebase Yetkilendirme belirteçleri eklenmeyecektir.

Testlerinizde döndürülen test bağlamı nesnesini kullanarak, initializeTestEnvironment ile yapılandırılanlar da dahil olmak üzere yapılandırılmış tüm emülatör örneklerine erişin.

// 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ışıymış gibi davranan bir bağlamla bir test kurulum işlevini çalıştırın.

Bu yöntem, Güvenlik Kurallarını atlama bağlamını alan ve bir söz döndüren bir geri çağırma işlevi alır. Söz çözüldüğünde / reddedildiğinde bağlam yok olacaktır.

RulesTestEnvironment.cleanup()

Bu yöntem test ortamında oluşturulan tüm RulesTestContexts öğelerini yok eder ve alttaki 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 vakası yardımcı fonksiyonudur.

Fonksiyon, verilen Promise sarmalayıcı emülatör işleminin herhangi bir Güvenlik Kuralı ihlali olmadan çözüleceğini iddia eder.

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

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

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

Fonksiyon, bir emülatör işlemini sarmalayan verilen Promise'in Güvenlik Kuralları ihlali nedeniyle reddedileceğini iddia eder.

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

Emülatöre özgü yöntemler

Ayrıca modüler API'yi kullanan ortak test yöntemleri ve yardımcı işlevlere bakın.

Cloud Firestore

Cloud Firestore

RulesTestEnvironment.clearFirestore() => Promise<void>

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

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

Bu yöntem, bu test bağlamı için bir Firestore örneği alır. Döndürülen Firebase JS Client SDK örneği, istemci SDK API'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ılan projectId'e 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 Client SDK örneği, istemci SDK API'leriyle (modüler veya ad alanlı, sürüm 9 veya üzeri) kullanılabilir. Yöntem, Gerçek Zamanlı Veritabanı ö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 öykünücüsü için yapılandırılan projectId'a ait depolama kovalarındaki nesneleri ve meta verileri temizler.

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

Bu yöntem, emülatöre bağlanmak üzere yapılandırılmış bir Storage örneği döndürür. Yöntem, test için Firebase Depolama Kovasına bir gs:// URL'si kabul eder. Belirtilirse, kova adının öykünülmüş bir sürümü için bir Depolama örneği döndürür.

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

Emülatörle arayüz oluşturmak için Firebase Test SDK'sının kullandığı yöntemleri görmek için 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ılmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.

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

initializeAdminApp({ projectId: string }) => FirebaseApp

Bu yöntem, başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, okuma ve yazma işlemleri gerçekleştirirken güvenlik kurallarını atlar. Testler için durumu ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için 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 sonrasında 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ı bir string 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şleminin başarısız olup olmadığını onaylamak için bu işlevi 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, 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 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ına okuma ve yazma yaparken güvenlik kurallarını atlatıyor.

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

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

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

Kuralları yerel olarak çalışan bir veritabanına gönderir. "VeritabanıAdınız" ve "kurallarınız"ı dizeler olarak belirten bir seçenek 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 söz 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ı olan, giriş reddedilirse reddedilen bir söz 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ılmak üzere 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ı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 kovası 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.

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 söz döndürür.

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

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

initializeAdminApp({ projectId: string }) => FirebaseApp

Bu yöntem, başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, okuma ve yazma işlemleri gerçekleştirirken güvenlik kurallarını atlar. Testler için durumu ayarlamak üzere yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için 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 sonrasında 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ı bir string 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şleminin başarısız olup olmadığını onaylamak için bu işlevi 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, 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 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ına okuma ve yazma yaparken güvenlik kurallarını atlatıyor.

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

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

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

Kuralları yerel olarak çalışan bir veritabanına gönderir. "VeritabanıAdınız" ve "kurallarınız"ı dizeler olarak belirten bir seçenek 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 söz 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ı olan, giriş reddedilirse reddedilen bir söz 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ılmak üzere 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ı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 kovası 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.

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 söz döndürür.

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