3

Environment

node: 14.15.5
OS: macOS Big Sur v11.2

What is the problem

When I try to run test with Jest, test fails with an error message that "TypeError: firebase__default.default.initializeApp is not a function" even if I use initializeTestApp, not initializeApp

What I have tried

  • I used @firebase/rules-unit-testing ver2.0.0 but there was no initializeTestApp function so I downgraded the version to 1.3.14 as described below.
  • I deleted yarn.lock file and use command yarn install but it did not work.
  • I searched issues but there is no exact the same issue.(this is similar issue: https://github.com/firebase/firebase-js-sdk/issues/4944)

I would really appreciate if you can give me any advices. Thank you.

firebaseRules.test.ts

import * as firebase from "@firebase/rules-unit-testing"; import fs from "fs"; import path from "path"; const myId = "user_Id"; // Load security rules const filePath = path.join(__dirname, "./firestore.rules"); const rules = fs.readFileSync(filePath, "utf8"); const myProjectId = "my-project-2021"; describe("Allow access to users collection only when user is authorized", () => { beforeEach( async () => await firebase.clearFirestoreData({ projectId: myProjectId }) ); beforeEach( async () => await firebase.loadFirestoreRules({ projectId: myProjectId, rules: rules, }) ); afterAll( async () => await firebase.clearFirestoreData({ projectId: myProjectId }) ); describe("allow access to project collection only when user is authorized", () => { test("fail to access without auth", async () => { const db = firebase // here test fails: TypeError: firebase__default.default.initializeApp is not a function .initializeTestApp({ projectId: myProjectId, }) .firestore(); const doc = db .collection("users") .doc("user_shogo") .collection("projects") .doc("testProjectId"); await firebase.assertFails(doc.get()); }); }); }); 

package.json

{ "name": "move-gantt", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint", "test": "jest --silent=false --verbose false" }, "dependencies": { "@firebase/rules-unit-testing": "1.3.14", "@material-ui/core": "^4.12.3", "@material-ui/icons": "^5.0.0-beta.4", "@material-ui/lab": "^4.0.0-alpha.60", "@material-ui/styles": "^4.11.4", "@types/react-redux": "^7.1.18", "date-fns": "^2.23.0", "firebase": "8.10.0", "firebase-tools": "^9.16.6", "next": "11.0.1", "next-transpile-modules": "^8.0.0", "react": "17.0.2", "react-dom": "17.0.2", "react-redux": "^7.2.4", "redux": "^4.1.1", "redux-devtools-extension": "^2.13.9", "redux-logger": "^3.0.6", "styled-components": "^5.3.0", "styled-jsx": "3.4.5" }, "devDependencies": { "@babel/cli": "^7.14.8", "@babel/core": "^7.15.0", "@testing-library/react": "^12.0.0", "@types/jest": "^27.0.0", "@types/node": "^16.4.11", "@types/react": "^17.0.15", "@types/react-dom": "^17.0.9", "@types/react-test-renderer": "^17.0.1", "@types/redux-logger": "^3.0.9", "@types/styled-components": "^5.1.11", "babel-plugin-styled-components": "^1.13.2", "eslint": "7.32.0", "eslint-config-next": "11.0.1", "firebase-admin": "9.8.0", "jest": "^27.0.6", "react-test-renderer": "^17.0.2", "ts-jest": "^27.0.4", "typescript": "^4.3.5" } } 

1 Answer 1

1

I don't know why but the new versions of the package don't work well and the method is no longer in, I downgraded the package to version "^1.3.7".

Change in your package.json:

"@firebase/rules-unit-testing": "^1.3.7" 

And after:

npm install 
Sign up to request clarification or add additional context in comments.

1 Comment

Hi hugo, sorry for late reply. I tried your suggestion and it worked! Thank you so much.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.