Firebase Local Emulator Suite, uygulamanızın özelliklerini ve davranışını tam olarak doğrulamanızı kolaylaştırır. Ayrıca Firebase Security Rules yapılandırmalarınızı doğrulamak için de mükemmel bir araçtır. Birim testlerini yerel bir ortamda çalıştırmak ve otomatikleştirmek için Firebase Emulators'ı kullanın. Bu belgede açıklanan yöntemler, uygulamanız için Rules öğenizi doğrulayan birim testlerini oluşturup otomatikleştirirken size yardımcı olacaktı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ınfirestore.rules
veya "storage.rules" alanında belirtilen kuralları yükler. Dosya mevcut değilse ve aşağıda açıklandığı gibiloadFirestoreRules
veya "loadStorageRules" yöntemini kullanmazsanız emülatör, tüm projeleri açık kurallara sahip olarak değerlendirir. - Çoğu Firebase SDK'sı doğrudan emülatörlerle çalışırken yalnızca
@firebase/rules-unit-testing
kitaplığı, Security Rules'daauth
taklit etmeyi destekler. Bu da birim testlerini çok daha kolay hale getirir. Ayrıca kitaplık, aşağıda listelenen tüm verileri temizleme gibi emülatöre özgü birkaç özelliği destekler. - Emülatörler, istemci SDK'ları aracılığıyla sağlanan üretim Firebase Authentication jetonlarını da kabul eder ve kuralları buna göre değerlendirir. Bu sayede, entegrasyon ve manuel testlerde uygulamanızı 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 veri okuyamaz veya yazamaz.
- Her bir taklit edilmiş veritabanında Spark planı sınırları ve kotaları uygulanır (en önemlisi, her örnek 100 eşzamanlı bağlantıyla sınırlıdır).
- Tüm veritabanları,
"owner"
dizesini yönetici kimlik doğrulama jetonu olarak kabul eder. - Emülatörlerin şu anda diğer Firebase ürünleriyle çalışan etkileşimleri yoktur. Normal Firebase Authentication akışı çalışmaz.
Bunun yerine,
rules-unit-testing
kitaplığındaauth
alanını alaninitializeTestApp()
yöntemini kullanabilirsiniz. Bu yöntem kullanılarak oluşturulan Firebase nesnesi, sağladığınız öğe olarak başarıyla kimlik doğrulamış gibi davranır.null
değerini gönderirseniz kimliği doğrulanmamış bir kullanıcı gibi davranır (örneğin,auth != null
kuralları başarısız olur).
Realtime Database emülatörüyle etkileşimde bulunma
Üretim Firebase Realtime Database örneğine firebaseio.com
alt alan adından erişilebilir ve REST API'ye şu şekilde erişebilirsiniz:
https://<database_name>.firebaseio.com/path/to/my/data.json
Emülatör yerel olarak çalışır ve localhost:9000
adresinde kullanılabilir. Belirli bir veritabanı örneğiyle etkileşim kurmak için veritabanı adını belirtmek amacıyla ns
sorgu parametresini kullanmanız gerekir.
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, hem kendi sürüm 9 JavaScript SDK'sı hem de sürüm 8 SDK'sı ile bir Güvenlik Kuralları birimi test kitaplığı dağıtır. Kitaplık API'leri önemli ölçüde farklıdır. Emülatörlere bağlanmak için daha az kurulum gerektiren ve daha basit olan v9 test kitaplığını öneririz. Böylece üretim kaynaklarının yanlışlıkla kullanılmaması sağlanır. Geriye dönük uyumluluk için v8 test kitaplığını kullanıma sunmaya devam ediyoruz.
- v9 SDK'sındaki yaygın test yöntemleri ve yardımcı program işlevleri
- v9 SDK'sında emülatöre özel test yöntemleri
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ün gerçekten çalıştığından emin olun.
async/await
gösterimini kullanabilmek için Node.js'nin güncel bir sürümünü kullanmanızı önemle tavsiye ederiz. Test etmek isteyebileceğiniz davranışların neredeyse tamamı, asenkron işlevler içerir ve test modülü, Promise tabanlı kodla çalışacak şekilde tasarlanmıştır.
v9 Kurallar Birim Testi kitaplığı, her zaman emülatörlerden haberdardır ve üretim kaynaklarınıza hiçbir zaman dokunmaz.
Kitaplığı, v9 modüler içe aktarma ifadelerini kullanarak içe aktarırsınız. Örneğin:
import {
assertFails,
assertSucceeds,
initializeTestEnvironment
} from "@firebase/rules-unit-testing"
// Use `const { … } = require("@firebase/rules-unit-testing")` if imports are not supported
// Or we suggest `const testing = require("@firebase/rules-unit-testing")` if necessary.
İçe aktarılan birim testlerini uygulamak için:
initializeTestEnvironment
'a çağrı göndererekRulesTestEnvironment
oluşturma ve yapılandırma.- Rules'ü tetiklemeden test verilerini ayarlamak için geçici olarak atlamanıza olanak tanıyan bir kolay yöntem kullanın,
RulesTestEnvironment.withSecurityRulesDisabled
. - Test verileriyle ortamı temizlemek için
RulesTestEnvironment.cleanup()
veyaRulesTestEnvironment.clearFirestore()
gibi çağrılar içeren test grubu ve test başına önce/sonra kancaları ayarlama. RulesTestEnvironment.authenticatedContext
veRulesTestEnvironment.unauthenticatedContext
kullanarak kimlik doğrulama durumlarını taklit eden test durumları uygulama.
Yaygın yöntemler ve yardımcı işlevler
Modüler API'yi kullanan emülatöre özgü test yöntemlerine de göz atı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ı bir yürütme için emülatörlerin çalışıyor olması gerekir.
İşlev, proje kimliği ve emülatör yapılandırma ayarlarından oluşan 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 jetonu eklenir. İsteğe bağlı olarak, Authentication jeton yükleri için özel talepler veya geçersiz kılmalar tanımlayan bir nesne iletin.
initializeTestEnvironment
ile yapılandırılanlar da dahil olmak üzere yapılandırılmış tüm emülatör örneklerine erişmek için testlerinizde döndürülen test bağlamı nesnesini kullanın.
// Assuming a Firestore app and the Firestore emulator for this example import { setDoc } from "firebase/firestore"; const alice = testEnv.authenticatedContext("alice", { … }); // Use the Firestore instance associated with this context await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });
RulesTestEnvironment.unauthenticatedContext() => RulesTestContext
Bu yöntem, Authentication üzerinden oturum açmamış bir istemci gibi davranan bir RulesTestContext
oluşturur. Döndürülen bağlam aracılığıyla oluşturulan isteklerde Firebase Auth jetonları eklenmez.
initializeTestEnvironment
ile yapılandırılanlar da dahil olmak üzere yapılandırılmış herhangi bir emülatör örneklerine erişmek için testlerinizde döndürülen test bağlam nesnesini kullanın.
// Assuming a Cloud Storage app and the Storage emulator for this example import { getStorage, ref, deleteObject } from "firebase/storage"; const alice = testEnv.unauthenticatedContext(); // Use the Cloud Storage instance associated with this context const desertRef = ref(alice.storage(), 'images/desert.jpg'); await assertSucceeds(deleteObject(desertRef));
RulesTestEnvironment.withSecurityRulesDisabled()
Güvenlik Kuralları devre dışı bırakılmış gibi davranan bir bağlamla test kurulumu işlevi çalıştırın.
Bu yöntem, Güvenlik Kurallarını Atlama bağlamını alan ve bir promise döndüren bir geri çağırma işlevi alır. Sözleşme çözüldükten veya reddedildikten sonra bağlam yok edilir.
RulesTestEnvironment.cleanup()
Bu yöntem, test ortamında oluşturulan tüm RulesTestContexts
öğelerini kaldırır ve temel kaynakları temizleyerek temiz bir çıkış sağlar.
Bu yöntem, emülatörlerin durumunu hiçbir şekilde değiştirmez. Testler arasında verileri sıfırlamak için uygulama emülatörüne özel veri temizleme yöntemini kullanın.
assertSucceeds(pr: Promise<any>)) => Promise<any>
Bu, test amaçlı bir yardımcı program işlevidir.
İşlev, bir emülatör işlemini sarmalayan sağlanan Promise'in Güvenlik Kuralları ihlali olmadan çözüleceğini belirtir.
await assertSucceeds(setDoc(alice.firestore(), '/users/alice'), { ... });
assertFails(pr: Promise<any>)) => Promise<any>
Bu, test amaçlı bir yardımcı program işlevidir.
İşlev, bir emülatör işlemini sarmalayan sağlanan Promise'in güvenlik kuralları ihlali nedeniyle reddedileceğini belirtir.
await assertFails(setDoc(alice.firestore(), '/users/bob'), { ... });
Emülatöre özel yöntemler
Modüler API'yi kullanan yaygın test yöntemleri ve yardımcı işlevler hakkında da bilgi edinin.
Cloud Firestore
Cloud Firestore
RulesTestEnvironment.clearFirestore() => Promise<void>
Bu yöntem, Firestore veritabanındaki Firestore emülatörü için yapılandırılan projectId
öğesine ait 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 istemci SDK'sı örneği, istemci SDK API'leriyle (modüler v9 veya uyumlu v9) kullanılabilir.
Realtime Database
Realtime Database
RulesTestEnvironment.clearDatabase() => Promise<void>
Bu yöntem, Realtime Database emülatörü için yapılandırılmış projectId
'a ait Realtime Database'deki verileri temizler.
RulesTestContext.database(databaseURL?: Firestore.FirestoreSettings) => Firestore;
Bu test bağlamı için bir Realtime Database örneği alın. Döndürülen Firebase JS istemci SDK'sı örneği, istemci SDK API'leriyle (modüler veya ad alanına sahip, 9 veya daha yeni sürüm) kullanılabilir. Yöntem, Realtime Database örneğinin URL'sini kabul eder. Belirtiliyse URL'den ayıklanan parametrelerle ad alanının taklit edilmiş bir sürümü için bir örnek döndürür.
Cloud Storage
Cloud Storage
RulesTestEnvironment.clearStorage() => Promise<void>
Bu yöntem, Cloud Storage emülatörü için yapılandırılmış projectId
'e ait depolama paketlerindeki nesneleri ve meta verileri temizler.
RulesTestContext.storage(bucketUrl?: string) => Firebase Storage;
Bu yöntem, emülatöre bağlanacak şekilde yapılandırılmış bir Depolama örneği döndürür.
Yöntem, test için Firebase Storage Paketi'ne bir gs://
URL'si kabul eder. Belirtilirse paket adının emüle edilmiş bir sürümü için Storage örneği döndürür.
v8 JavaScript SDK'sı ile yerel birim testleri çalıştırma
Firebase Test SDK'sının emülatörle arayüz oluşturmak için kullandığı yöntemleri görmek için bir ürün seçin.
Cloud Firestore
initializeTestApp({ projectId: string, auth: Object }) => FirebaseApp
Bu yöntem, seçeneklerde belirtilen proje kimliği ve kimlik doğrulama değişkenine karşılık gelen, başlatılmış bir Firebase uygulaması 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ı döndürür. Bu uygulama, okuma ve yazma işlemleri gerçekleştirilirken güvenlik kurallarını atlar. Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak üzere bunu kullanın.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
Bu yöntem, 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 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ı dize olarak belirten bir nesne alır. Veritabanını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 promise döndürür. Bir veritabanı okuma veya yazma işleminin başarısız olup olmadığını doğrulamak 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ı olan ve giriş reddedilirse reddedilen bir promise döndürür. Bir veritabanı okuma veya yazma işleminin başarılı olup olmadığını doğrulamak 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" });
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.
Seçeneklerde belirtilen veritabanı adına 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
Testlerin durumunu ayarlamak için 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ında okuma ve yazma işlemi yaparken güvenlik kurallarını atlıyor.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
Veritabanınınızın kurallarını ayarlamak için bunu kullanın.
Kuralları yerel olarak çalışan bir veritabanına gönderir. "databaseName" ve "kurallarınızı" dize olarak belirten bir options nesnesini 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 ve giriş reddedilirse başarılı olan bir promise döndürür.
Bir veritabanı okuma veya yazma işleminin başarısız olduğunu iddia etmek 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ı, giriş reddedilirse reddedilen bir promise 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ılacak, 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ılma işlemine 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
Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.
Seçeneklerde belirtilen depolama alanı paketi adına karşılık gelen, başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, pakete veri okurken ve yazarken güvenlik kurallarını atlar.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
Depolama alanı paketinizin kurallarını ayarlamak için bunu kullanın.
Yerel olarak yönetilen depolama alanı gruplarına kurallar gönderir. "storageBucket" ve "rules" değerlerini 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 bir taahhüdü, giriş reddedilirse başarılı olanı döndürür.
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ı, giriş reddedilirse reddedilen bir promise döndürür.
Bir depolama alanı paketinin okuma veya yazma işleminin başarılı olduğunu doğrulamak 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ği ve kimlik doğrulama değişkenine karşılık gelen, başlatılmış bir Firebase uygulaması 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ı döndürür. Bu uygulama, okuma ve yazma işlemleri gerçekleştirilirken güvenlik kurallarını atlar. Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak üzere bunu kullanın.
firebase.initializeAdminApp({ projectId: "my-test-project" });
apps() => [FirebaseApp]
Bu yöntem, 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 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ı dize olarak belirten bir nesne alır. Veritabanını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 promise döndürür. Bir veritabanı okuma veya yazma işleminin başarısız olup olmadığını doğrulamak 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ı olan ve giriş reddedilirse reddedilen bir promise döndürür. Bir veritabanı okuma veya yazma işleminin başarılı olup olmadığını doğrulamak 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" });
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.
Seçeneklerde belirtilen veritabanı adına 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
Testlerin durumunu ayarlamak için 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ında okuma ve yazma işlemi yaparken güvenlik kurallarını atlıyor.
firebase.initializeAdminApp({ databaseName: "my-database" });
loadDatabaseRules({ databaseName: string, rules: Object }) => Promise
Veritabanınınızın kurallarını ayarlamak için bunu kullanın.
Kuralları yerel olarak çalışan bir veritabanına gönderir. "databaseName" ve "kurallarınızı" dize olarak belirten bir options nesnesini 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 ve giriş reddedilirse başarılı olan bir promise döndürür.
Bir veritabanı okuma veya yazma işleminin başarısız olduğunu iddia etmek 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ı, giriş reddedilirse reddedilen bir promise 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ılacak, 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ılma işlemine 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
Testlerin durumunu ayarlamak için yönetici olarak kimliği doğrulanmış bir uygulama oluşturmak için bunu kullanın.
Seçeneklerde belirtilen depolama alanı paketi adına karşılık gelen, başlatılmış bir yönetici Firebase uygulaması döndürür. Bu uygulama, pakete veri okurken ve yazarken güvenlik kurallarını atlar.
firebase.initializeAdminApp({ storageBucket: "my-bucket" });
loadStorageRules({ storageBucket: string, rules: Object }) => Promise
Depolama alanı paketinizin kurallarını ayarlamak için bunu kullanın.
Yerel olarak yönetilen depolama alanı gruplarına kurallar gönderir. "storageBucket" ve "rules" değerlerini 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 bir taahhüdü, giriş reddedilirse başarılı olanı döndürür.
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ı, giriş reddedilirse reddedilen bir promise döndürür.
Bir depolama alanı paketinin okuma veya yazma işleminin başarılı olduğunu doğrulamak için bunu kullanın:
firebase.assertFails(app.storage().ref("images/cat.png").getMetadata());