/* eslint-disable global-require */ global.sinon = require('sinon'); require('should-sinon'); global.should = require('should'); Object.defineProperty(global, 'firebase', { get() { return bridge.module; }, }); // TODO move as part of bridge const { Uint8Array } = global; Object.defineProperty(global, 'Uint8Array', { get() { const { stack } = new Error(); if ( (stack.includes('Context.it') || stack.includes('Context.beforeEach')) && global.bridge && global.bridge.context ) { return bridge.context.window.Uint8Array; } return Uint8Array; }, }); // TODO move as part of bridge const { Array } = global; Object.defineProperty(global, 'Array', { get() { const { stack } = new Error(); if ( (stack.includes('Context.it') || stack.includes('Context.beforeEach')) && global.bridge && global.bridge.context ) { return bridge.context.window.Array; } return Array; }, }); global.isObject = function isObject(item) { return item ? typeof item === 'object' && !Array.isArray(item) && item !== null : false; }; global.sleep = duration => new Promise(resolve => setTimeout(resolve, duration)); global.randomString = (length, chars) => { let mask = ''; if (chars.indexOf('a') > -1) mask += 'abcdefghijklmnopqrstuvwxyz'; if (chars.indexOf('A') > -1) mask += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; if (chars.indexOf('#') > -1) mask += '0123456789'; if (chars.indexOf('!') > -1) mask += '~`!@#$%^&*()_+-={}[]:";\'<>?,./|\\'; let result = ''; for (let i = length; i > 0; --i) { result += mask[Math.round(Math.random() * (mask.length - 1))]; } return result; }; global.testRunId = randomString(4, 'aA#'); /** ------------------ * Init WEB SDK ---------------------*/ /** ------------------ * Init ADMIN SDK ---------------------*/ global.firebaseAdmin = require('firebase-admin'); firebaseAdmin.initializeApp({ credential: firebaseAdmin.credential.cert( JSON.parse(process.env.FIREBASE_SERVICE_ACCOUNT) ), databaseURL: 'https://rnfirebase-b9ad4.firebaseio.com', }); const originalLog = console.log; console.log = (...args) => { if ( args && args[0] && typeof args[0] === 'string' && (args[0].toLowerCase().includes('deprecated') || args[0].toLowerCase().includes('restrictions in the native sdk')) ) { return undefined; } return originalLog(...args); }; /** * Old style deferred promise shim - for niceness * * @returns {{resolve: null, reject: null}} */ Promise.defer = function defer() { const deferred = { resolve: null, reject: null, }; deferred.promise = new Promise((resolve, reject) => { deferred.resolve = resolve; deferred.reject = reject; }); return deferred; }; const androidTestConfig = { // firebase android sdk completely ignores client id clientId: '305229645282-j8ij0jev9ut24odmlk9i215pas808ugn.apps.googleusercontent.com', appId: '1:305229645282:android:af36d4d29a83e04c', apiKey: 'AIzaSyCzbBYFyX8d6VdSu7T4s10IWYbPc-dguwM', databaseURL: 'https://rnfirebase-b9ad4.firebaseio.com', storageBucket: 'rnfirebase-b9ad4.appspot.com', messagingSenderId: '305229645282', projectId: 'rnfirebase-b9ad4', }; const iosTestConfig = { clientId: '305229645282-22imndi01abc2p6esgtu1i1m9mqrd0ib.apps.googleusercontent.com', androidClientId: androidTestConfig.clientId, appId: '1:305229645282:ios:af36d4d29a83e04c', apiKey: 'AIzaSyAcdVLG5dRzA1ck_fa_xd4Z0cY7cga7S5A', databaseURL: 'https://rnfirebase-b9ad4.firebaseio.com', storageBucket: 'rnfirebase-b9ad4.appspot.com', messagingSenderId: '305229645282', projectId: 'rnfirebase-b9ad4', }; global.TestHelpers = { functions: { data: require('./../functions/test-data'), }, firestore: require('./firestore'), database: require('./database'), core: { config() { const config = device.getPlatform() === 'ios' ? iosTestConfig : androidTestConfig; return { ...config }; }, }, };