Firebase Local Emulator Suite, uygulamanızın Özellikler ve davranışlar. Aynı zamanda Firebase Security Rules yapılandırmalarınızı doğrulamak için harika bir araçtır. Firebase Emulators'ı kullanma yerel ortamda birim testlerini çalıştırmak ve otomatikleştirmek için kullanılır. Bu makalede açıklanan yöntemler Bu belge, uygulamanız için birim testleri oluşturup otomatikleştirirken size yardımcı olacaktır Rules doğrulayın.
Henüz yapmadıysanız Firebase Emülatörleri'ni 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
firestore.rules
içinde belirtilen kuralları yükler veya "storage.rules" alanına (firebase.json
dosyanızın) yapıştırın. DosyaloadFirestoreRules
veya "loadStorageRules" parametresini kullanmıyorsanız yöntem aşağıda açıklandığı gibi, emülatör tüm projeleri açık kurallara sahip olarak değerlendirir. - Bu sırada
Firebase SDK'larının çoğu
emülatörlerle doğrudan çalıştığından, yalnızca
@firebase/rules-unit-testing
kitaplığı tarafından Güvenlik Kuralları'nda sahteauth
olarak ayarlar ve birim testlerini çok daha kolay hale getirir. Ayrıca, kitaplık, tüm verileri temizleme, emülatöre özgü bazı özellikleri, aşağıda gösterildiği gibidir. - Emülatörler, sağlanan üretim Firebase Auth jetonlarını da kabul eder aracılığıyla bağlantı kurabilir ve kuralları uygun şekilde değerlendirebilirsiniz. Bu da uygulamanızı doğrudan entegrasyon ve manuel testlerde emülatörlere
Veritabanı emülatörleri ve üretim arasındaki farklar
- Açıkça veritabanı örneği oluşturmanız gerekmez. Emülatör Böylece erişilen herhangi bir veritabanı örneği otomatik olarak oluşturulur.
- Her yeni veritabanı kapalı kurallarla başlatılır. Bu nedenle, yönetici olmayan kullanıcılar okuma veya yazma becerisine sahip olmalıdır.
- Emüle edilen her veritabanı Spark planını uygular sınırları ve kotaları (en önemlisi, bu ayar her örneği 100 eşzamanlı bağlantı).
- Tüm veritabanları
"owner"
dizesini yönetici kimlik doğrulama jetonu olarak kabul eder. - Emülatörlerin şu anda diğer Firebase ile çalışan etkileşimleri yok
ürünler. Bu durum özellikle normal Firebase Authentication akışı çalışmaz.
Bunun yerine,
rules-unit-testing
içindekiinitializeTestApp()
yöntemini kullanabilirsiniz (auth
alanını içerir). Bu komut kullanılarak oluşturulan Firebase nesnesi yöntemi başarılı bir şekilde kimliği doğrulanmış gibi davranır. gerçekleşebilir.null
içinde geçerseniz şu şekilde davranır: kimliği doğrulanmamış kullanıcı (örneğin,auth != null
kural başarısız olur).
Realtime Database emülatörüyle etkileşimde bulunma
Üretim Firebase Realtime Database örneğine şu alanın alt alan adından erişilebilir:
firebaseio.com
. 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. Etkileşimde bulunmak için
belirli bir veritabanı örneğiyle kullanmak için ns
sorgu parametresini
kullanabilirsiniz.
http://localhost:9000/path/to/my/data.json?ns=<database_name>
JavaScript SDK sürüm 9 ile yerel birim testlerini çalıştırma
Firebase, Güvenlik Kuralları birimi test kitaplığını hem kendi sürümüyle dağıtır 9 JavaScript SDK'sı ve sürüm 8 SDK'sı. Kitaplık API'leri önemli ölçüde yardımcı olur. Daha basit ve daha basit olan v9 test kitaplığını öneririz. emülatörlere bağlanmak için daha az kurulum gerektirir ve bu sayede kazara olabilecek üretim kaynaklarının kullanılmasıdır. Geriye dönük uyumluluk için mevcut v8 test kitaplığı.
- v9 SDK'sında yaygın test yöntemleri ve yardımcı program işlevleri
- v9 SDK'sında emülatöre özel test yöntemleri
Emülatörle etkileşimde bulunmak için @firebase/rules-unit-testing
modülünü kullanın
yerel olarak çalışan
bir web sitesidir. Zaman aşımları veya ECONNREFUSED
hata alırsanız tekrar kontrol edin
emin olun.
Node.js'yi kullanabilmek için yeni bir sürüm
async/await
gösterimi. Test etmek isteyebileceğiniz davranışların neredeyse tümü
eş zamansız fonksiyonlar içerir. Test modülü de
Vaat tabanlı kod.
v9 Kural Birimi Testi kitaplığı emülatörlerden her zaman haberdar olur ve ve prodüksiyon kaynaklarınız ile bağlantılı olması gerekir.
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 aktarma işleminden sonra, birim testlerinin uygulanması şunları içerir:
- Şuna çağrı içeren bir
RulesTestEnvironment
oluşturma ve yapılandırma:initializeTestEnvironment
. - Kolaylık kullanarak test verilerini Rules tetiklemeden ayarlama
bunları geçici olarak atlamanızı sağlayan bir yöntem kullanıyorsanız
RulesTestEnvironment.withSecurityRulesDisabled
. -
test verilerini ve ortamını temizleyin (ör.
RulesTestEnvironment.cleanup()
) veyaRulesTestEnvironment.clearFirestore()
. - Kimlik doğrulama durumlarını taklit eden test durumları uygulama
RulesTestEnvironment.authenticatedContext
veRulesTestEnvironment.unauthenticatedContext
.
Sık kullanılan yöntemler ve fayda işlevleri
Şunlara da bakabilirsiniz: modüler API'yi kullanarak emülatöre özel test yöntemlerini test edin.
initializeTestEnvironment() => RulesTestEnvironment
Bu işlev, kural birimi testi için bir test ortamı başlatır. Bunu ara işlevini kullanın. Başarılı yürütme için emülatörlerin çalışıyor.
İşlev, TestEnvironmentConfig
tanımlayan isteğe bağlı bir nesneyi kabul eder
Bu kod, 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 RulesTestContext
Authentication kullanıcı. Döndürülen bağlam aracılığıyla oluşturulan istekler örnek olarak sunulur
Authentication jetonu eklendi. İsteğe bağlı olarak, özel hak talepleri tanımlayan bir nesne iletin veya
Authentication jeton yükünü geçersiz kılar.
Herhangi bir emülatöre erişmek için testlerinizde döndürülen test bağlamı nesnesini kullanın
initializeTestEnvironment
ile yapılandırılanlar dahil olmak üzere örnek yapılandırıldı.
// 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, RulesTestContext
gibi çalışan bir istemciyi oluşturur.
Authentication aracılığıyla giriş yapılmadı. Döndürülen bağlam üzerinden oluşturulan istekler
Firebase Auth jetonları ekli olmalıdır.
Herhangi bir emülatöre erişmek için testlerinizde döndürülen test bağlamı nesnesini kullanın
initializeTestEnvironment
ile yapılandırılanlar dahil olmak üzere örnek yapılandırıldı.
// 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ı gibi davranan bağlama sahip bir test kurulum işlevi çalıştırın devre dışı bırakıldı.
Bu yöntem, Security-Kuralları atlamayı alan ve bir vaat veriyor. Söz verildikten sonra bağlam kaldırılır çözümlenir / reddeder.
RulesTestEnvironment.cleanup()
Bu yöntem test ortamında oluşturulan tüm RulesTestContexts
öğelerini kaldırır ve
temel kaynakları temizleyerek temiz bir çıkış yapılmasını sağlar.
Bu yöntem, emülatörlerin durumunu hiçbir şekilde değiştirmez. Verileri sıfırlamak için testler arasında uygulama emülatörüne özgü temiz veri yöntemini kullanın.
assertSucceeds(pr: Promise<any>)) => Promise<any>
Bu, bir test durumu yardımcı işlevidir.
İşlev, sağlanan Promise'in bir emülatör işlemini sarmaladığını doğrular hiçbir Güvenlik Kuralı ihlali yapılmadan çözülecektir.
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });
assertFails(pr: Promise<any>)) => Promise<any>
Bu, bir test durumu yardımcı işlevidir.
İşlev, sağlanan Promise'in bir emülatör işlemini sarmaladığını doğrular kullanıcı Güvenlik Kuralları'nın ihlali durumunda reddedilecektir.
await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });
Emülatöre özel yöntemler
Şunlara da bakabilirsiniz: modüler API'yi kullanan yaygın test yöntemlerini ve yardımcı işlevleri inceleyin.
Cloud Firestore
Cloud Firestore
RulesTestEnvironment.clearFirestore() => Promise<void>
Bu yöntem Firestore veritabanındaki
Firestore emülatörü için projectId
yapılandırıldı.
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'sı örneği, istemci SDK API'leriyle kullanılabilir (v9 modüler) veya v9 uyumluluğu).
Realtime Database
Realtime Database
RulesTestEnvironment.clearDatabase() => Promise<void>
Bu yöntem Realtime Database içinde
Realtime Database emülatörü için projectId
yapılandırıldı.
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 İstemci SDK'sı örneği, istemci SDK API'leriyle (modüler veya ad alanına sahip, sürüm 9 veya sonraki sürümler). Yöntem, Gerçek Zamanlı Analiz URL'sini kabul eder Veritabanı örneği. Belirtilirse şunun emüle edilmiş sürümü için bir örnek döndürür: URL'den ayıklanan parametrelerin bulunduğu ad alanı.
Cloud Storage
Cloud Storage
RulesTestEnvironment.clearStorage() => Promise<void>
Bu yöntem,
Cloud Storage emülatörü için projectId
yapılandırıldı.
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 Paketi'ne bir gs://
URL'si kabul eder. Eğer
belirtildiğinde, paket adının emüle edilmiş bir sürümü için Storage örneği döndürür.
v8 JavaScript SDK ile yerel birim testlerini çalıştırma
Firebase Test SDK'sının arayüz oluşturmak için kullandığı yöntemleri görmek için bir ürün seçin bunu emülatörde yapabilirsiniz.
Cloud Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
Bu yöntem, projeye karşılık gelen başlatılmış bir Firebase uygulaması döndürür Seçeneklerde belirtilen kimlik ve kimlik doğrulama değişkeni. Uygulama oluşturmak için bunu kullanın testlerde kullanılacak belirli bir kullanıcı olarak doğrulandı.
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 atlayacak güvenlik kurallarına uygun olduğundan emin olun. Uygulama oluşturmak için bunu kullanın testlerin durumunu ayarlamak için yönetici olarak doğrulandı.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
Bu yöntem, o sırada başlatılmış olan tüm test ve yönetici uygulamalarını döndürür.
Testler arasında veya sonrasında uygulamaları temizlemek için bu aracı 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. Bir nesne alır değerini döndürü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 veya başarılı olur. Bir veritabanının okuma ya da yazma başarısız olur.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
Bu yöntem, giriş başarılı olursa ve giriş başarılı olursa başarılı bir reddedilir. Bir veritabanının okuma ya da yardımcı olur.
firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
clearFirestoreData({ projectId: string }) => Promise
Bu yöntem, tablodaki belirli bir projeyle ilişkili yerel olarak çalışan Firestore örneğidir. 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
Testlerde kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.
Veritabanı adı ve kimlik doğrulamaya karşılık gelen başlatılmış bir Firebase uygulamasını döndürür değişkeni geçersiz kılma seçeneği seçeneklerde belirtildi.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.
Veritabanı adına karşılık gelen başlatılmış bir yönetici Firebase uygulamasını döndürür seçeneklerde belirtilmiştir. Bu uygulama, okuma ve yazma sırasında güvenlik kurallarını atlar ekler.
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. Şuna benzer bir seçenek nesnesini alır: "databaseName" parametrenizi belirtir ve "kurallarınız" ile dize olarak kullanılır.
firebase
.loadDatabaseRules({
databaseName: "my-database",
rules: "{'rules': {'.read': false, '.write': false}}"
});
apps() => [FirebaseApp]
O anda başlatılmış olan tüm test ve yönetici uygulamalarını döndürür.
Testler arasında veya sonrasında uygulamaları temizlemek için bu ayarı kullanın (başlatılan uygulamaların JavaScript çıkışını engeller):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Giriş başarılı olursa reddedilen bir taahhüdü ve giriş reddedildi.
Veritabanı okuma veya yazma işleminin başarısız olduğunu doğrulamak için bu komutu 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 reddedilecek bir taahhüt döndürür.
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 kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.
Depolama paketi adına karşılık gelen başlatılmış bir Firebase uygulamasını döndürür ve seçeneklerde belirtilen kimlik doğrulama değişkenini geçersiz kıl.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.
Depolama paketine karşılık gelen başlatılmış bir yönetici Firebase uygulamasını döndürür seçeneklerde belirtilen ad. Bu uygulama, okuma ve yükleme sırasında güvenlik kurallarını atlar sakıncası yoktur.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
Depolama paketinizin kurallarını belirlemek için bunu kullanın.
Kuralları, yerel olarak yönetilen depolama paketlerine gönderir. Şuna benzer bir seçenek nesnesini alır: "storageBucket" öğenizi belirtir ve "kurallarınız" ile dize olarak kullanılır.
firebase
.loadStorageRules({
storageBucket: "my-bucket",
rules: fs.readFileSync("/path/to/storage.rules", "utf8")
});
apps() => [FirebaseApp]
O anda başlatılmış olan tüm test ve yönetici uygulamalarını döndürür.
Testler arasında veya sonrasında uygulamaları temizlemek için bu ayarı kullanın (başlatılan uygulamaların JavaScript çıkışını engeller):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Giriş başarılı olursa reddedilen bir taahhüdü ve giriş reddedildi.
Depolama paketi okuma veya yazmanın 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 ve giriş reddedildi.
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ık API'si
Firebase Test SDK'sının arayüz oluşturmak için kullandığı yöntemleri görmek için bir ürün seçin bunu emülatörde yapabilirsiniz.
Cloud Firestore
Cloud Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
Bu yöntem, projeye karşılık gelen başlatılmış bir Firebase uygulaması döndürür Seçeneklerde belirtilen kimlik ve kimlik doğrulama değişkeni. Uygulama oluşturmak için bunu kullanın testlerde kullanılacak belirli bir kullanıcı olarak doğrulandı.
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 atlayacak güvenlik kurallarına uygun olduğundan emin olun. Uygulama oluşturmak için bunu kullanın testlerin durumunu ayarlamak için yönetici olarak doğrulandı.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
Bu yöntem, o sırada başlatılmış olan tüm test ve yönetici uygulamalarını döndürür.
Testler arasında veya sonrasında uygulamaları temizlemek için bu aracı 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. Bir nesne alır değerini döndürü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 veya başarılı olur. Bir veritabanının okuma ya da yazma başarısız olur.
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertSucceeds(pr: Promise) => Promise
Bu yöntem, giriş başarılı olursa ve giriş başarılı olursa başarılı bir reddedilir. Bir veritabanının okuma ya da yardımcı olur.
firebase.assertSucceeds(app.firestore().collection("public").doc("test-document").get());
clearFirestoreData({ projectId: string }) => Promise
Bu yöntem, tablodaki belirli bir projeyle ilişkili yerel olarak çalışan Firestore örneğidir. 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
Testlerde kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.
Veritabanı adı ve kimlik doğrulamaya karşılık gelen başlatılmış bir Firebase uygulamasını döndürür değişkeni geçersiz kılma seçeneği seçeneklerde belirtildi.
firebase.initializeTestApp({
databaseName: "my-database",
auth: { uid: "alice" }
});
initializeAdminApp({ databaseName: string }) => FirebaseApp
Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.
Veritabanı adına karşılık gelen başlatılmış bir yönetici Firebase uygulamasını döndürür seçeneklerde belirtilmiştir. Bu uygulama, okuma ve yazma sırasında güvenlik kurallarını atlar ekler.
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. Şuna benzer bir seçenek nesnesini alır: "databaseName" parametrenizi belirtir ve "kurallarınız" ile dize olarak kullanılır.
firebase
.loadDatabaseRules({
databaseName: "my-database",
rules: "{'rules': {'.read': false, '.write': false}}"
});
apps() => [FirebaseApp]
O anda başlatılmış olan tüm test ve yönetici uygulamalarını döndürür.
Testler arasında veya sonrasında uygulamaları temizlemek için bu ayarı kullanın (başlatılan uygulamaların JavaScript çıkışını engeller):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Giriş başarılı olursa reddedilen bir taahhüdü ve giriş reddedildi.
Veritabanı okuma veya yazma işleminin başarısız olduğunu doğrulamak için bu komutu 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 reddedilecek bir taahhüt döndürür.
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 kullanmak üzere belirli bir kullanıcı olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.
Depolama paketi adına karşılık gelen başlatılmış bir Firebase uygulamasını döndürür ve seçeneklerde belirtilen kimlik doğrulama değişkenini geçersiz kıl.
firebase.initializeTestApp({
storageBucket: "my-bucket",
auth: { uid: "alice" }
});
initializeAdminApp({ storageBucket: string }) => FirebaseApp
Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.
Depolama paketine karşılık gelen başlatılmış bir yönetici Firebase uygulamasını döndürür seçeneklerde belirtilen ad. Bu uygulama, okuma ve yükleme sırasında güvenlik kurallarını atlar sakıncası yoktur.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
Depolama paketinizin kurallarını belirlemek için bunu kullanın.
Kuralları, yerel olarak yönetilen depolama paketlerine gönderir. Şuna benzer bir seçenek nesnesini alır: "storageBucket" öğenizi belirtir ve "kurallarınız" ile dize olarak kullanılır.
firebase
.loadStorageRules({
storageBucket: "my-bucket",
rules: fs.readFileSync("/path/to/storage.rules", "utf8")
});
apps() => [FirebaseApp]
O anda başlatılmış olan tüm test ve yönetici uygulamalarını döndürür.
Testler arasında veya sonrasında uygulamaları temizlemek için bu ayarı kullanın (başlatılan uygulamaların JavaScript çıkışını engeller):
Promise.all(firebase.apps().map(app => app.delete()))
assertFails(pr: Promise) => Promise
Giriş başarılı olursa reddedilen bir taahhüdü ve giriş reddedildi.
Depolama paketi okuma veya yazmanın 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 ve giriş reddedildi.
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());