firebase-mock
Version:
Firebase mock library for writing unit tests
110 lines (96 loc) • 3.49 kB
JavaScript
var MockAuthentication = require('./auth');
var MockFirebase = require('./firebase');
var MockFirestore = require('./firestore');
var MockFieldPath = require('./firestore-field-path');
var MockFieldValue = require('./firestore-field-value');
var MockMessaging = require('./messaging');
var MockStorage = require('./storage');
var EmailAuthProvider = function() {
this.providerId = EmailAuthProvider.PROVIDER_ID;
};
EmailAuthProvider.PROVIDER_ID = "password";
EmailAuthProvider.credential = function() {
return new AuthCredential(EmailAuthProvider.PROVIDER_ID);
};
var GoogleAuthProvider = function() {
this.providerId = GoogleAuthProvider.PROVIDER_ID;
};
GoogleAuthProvider.PROVIDER_ID = "google.com";
GoogleAuthProvider.credential = function() {
return new AuthCredential(GoogleAuthProvider.PROVIDER_ID);
};
var TwitterAuthProvider = function() {
this.providerId = TwitterAuthProvider.PROVIDER_ID;
};
TwitterAuthProvider.PROVIDER_ID = "twitter.com";
TwitterAuthProvider.credential = function() {
return new AuthCredential(TwitterAuthProvider.PROVIDER_ID);
};
var FacebookAuthProvider = function() {
this.providerId = FacebookAuthProvider.PROVIDER_ID;
};
FacebookAuthProvider.PROVIDER_ID = "facebook.com";
FacebookAuthProvider.credential = function() {
return new AuthCredential(FacebookAuthProvider.PROVIDER_ID);
};
var GithubAuthProvider = function() {
this.providerId = GithubAuthProvider.PROVIDER_ID;
};
GithubAuthProvider.PROVIDER_ID = "github.com";
GithubAuthProvider.credential = function() {
return new AuthCredential(GithubAuthProvider.PROVIDER_ID);
};
var AuthCredential = function(provider) {
this.providerId = provider;
};
function MockFirebaseSdk(createDatabase, createAuth, createFirestore, createStorage, createMessaging) {
function MockFirebaseAuth() {
var auth = createAuth ? createAuth() : new MockAuthentication();
delete auth.ref;
return auth;
}
MockFirebaseAuth.EmailAuthProvider = EmailAuthProvider;
MockFirebaseAuth.GoogleAuthProvider = GoogleAuthProvider;
MockFirebaseAuth.TwitterAuthProvider = TwitterAuthProvider;
MockFirebaseAuth.FacebookAuthProvider = FacebookAuthProvider;
MockFirebaseAuth.GithubAuthProvider = GithubAuthProvider;
function MockFirebaseDatabase() {
return {
ref: function(path) {
return createDatabase ? createDatabase(path) : new MockFirebase(path);
},
refFromURL: function(url) {
return createDatabase ? createDatabase(url) : new MockFirebase(url);
}
};
}
MockFirebaseDatabase.ServerValue = MockFirebase.ServerValue;
function MockFirebaseFirestore() {
return createFirestore ? createFirestore() : new MockFirestore();
}
MockFirebaseFirestore.FieldPath = MockFieldPath;
MockFirebaseFirestore.FieldValue = MockFieldValue;
function MockFirebaseStorage() {
return createStorage ? createStorage() : new MockStorage();
}
function MockFirebaseMessaging() {
return createMessaging ? createMessaging() : new MockMessaging();
}
return {
database: MockFirebaseDatabase,
auth: MockFirebaseAuth,
firestore: MockFirebaseFirestore,
storage: MockFirebaseStorage,
messaging: MockFirebaseMessaging,
initializeApp: function() {
return {
database: MockFirebaseDatabase,
auth: MockFirebaseAuth,
firestore: MockFirebaseFirestore,
storage: MockFirebaseStorage,
messaging: MockFirebaseMessaging
};
}
};
}
module.exports = MockFirebaseSdk;