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ınfirestore.rules
veya 'storage.rules' alanında belirtilen kuralları yükleyecektir. Dosya mevcut değilse ve aşağıda açıklandığı gibiloadFirestoreRules
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 sahteauth
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ı alanrules-unit-testing
kitaplığındakiinitializeTestApp()
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.
- v9 SDK'sındaki ortak test yöntemleri ve yardımcı program işlevleri
- V9 SDK'sındaki emülatöre özel test yöntemleri
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,
RulesTestEnvironment,
} 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 birRulesTestEnvironment
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()
veyaRulesTestEnvironment.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
veRulesTestEnvironment.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());