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.jsondosyanızınfirestore.rulesveyastorage.rulesalanında belirtilen kuralları yükler. Dosya yoksa ve aşağıda açıklandığı gibiloadFirestoreRulesveyaloadStorageRulesyö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-testingkitaplığı, Security Rules'daauthsahteleme ö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,
authalanını alanrules-unit-testingkitaplığındakiinitializeTestApp()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.nulldeğerini geçirirseniz, kimliği doğrulanmamış bir kullanıcı gibi davranacaktır (örneğin,auth != nullkuralları 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 birRulesTestEnvironmentoluş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()veyaRulesTestEnvironment.clearFirestore()gibi test verilerini ve ortamını temizleme çağrılarıyla test takımı ve test başına öncesi/sonrası kancaları ayarlama.RulesTestEnvironment.authenticatedContextveRulesTestEnvironment.unauthenticatedContextkullanarak 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());