@ firebase / testing - Как вызвать `initializeTestApp` с помощью auth.providerId? - PullRequest
0 голосов
/ 14 февраля 2020

Например, у меня есть следующие правила:

 match /users/{userId} {
   allow create: if isCurrentUser(userId) 
     && request.auth.token.firebase.sign_in_provider != 'anonymous';
   allow update: if isCurrentUser(userId);
 }

 function isCurrentUser(userId){
   return request.auth.uid == userId;
 }

Я пытаюсь добавить для него модульные тесты и инициализировать приложение следующим образом:

const firebase = require("@firebase/testing");

const app = firebase
    .initializeTestApp({
      projectId: "some-firestore-emulator",
      auth: {
        uid: "bohdan",

        // case 1
        token: {
          firebase: {
            sign_in_provider: "google.com"
          }
        },

        // case 2
        providerData: {
          providerId: "google.com"
        },

        //case 3
        providerId: "google.com"
      }
    })

, но при сбое я пытаюсь создать документ:

app.firestore().collections("users").doc("bohdan").set({ name: "Bohdan" }) 

У меня есть эта ошибка:

FirebaseError: 7 PERMISSION_DENIED: 
Property firebase is undefined on object. for 'create' @ L15

Как запустить initializeTestApp и успешно создать документ?

1 Ответ

3 голосов
/ 14 февраля 2020

app.firestore().collections("users").set({ name: "Bohdan" }) неверно.

Вы должны указать идентификатор документа с тем же значением request.auth.uid. Вот так.

app.firestore().collection("users").doc("bohdan").set({ name: "Bohdan" })

Не могли бы вы проверить документы и мои образцы для тестирования пожарной базы?

См .:

Я пробовал. Измените initializeTestApp() arg с auth.token.firebase.sign_in_provider на auth.firebase.sign_in_provider.

const app = firebase
    .initializeTestApp({
      projectId: "some-firestore-emulator",
      auth: {
        uid: "bohdan",
        // // case 1
        // token: {
        //   firebase: {
        //     sign_in_provider: "google.com"
        //   }
        //},
        firebase: {
          sign_in_provider: "google.com"
        }   
      }
    })

Не могли бы вы проверить следующие ссылки?

...