Skip to content

assertFails of rules-unit-testing is not working #4667

Closed
@MattGoldwater

Description

@MattGoldwater

[REQUIRED] Describe your environment

  • Operating System version: macOS 11.2.2
  • Browser version: none
  • Firebase SDK version: @firebase/rules-unit-testing 1.2.5
  • Firebase Product: database

[REQUIRED] Describe the problem

When using assert fails I get the error message, Expected PERMISSION_DENIED but got unexpected error: Error: Permission denied

Steps to reproduce:

Relevant Code:

database.rules.json

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}

test file

const firebase = require('@firebase/rules-unit-testing');
const fs = require('fs');

it('does not let a user read the status of another user', async () => {
  const rules = fs.readFileSync("../database.rules.json", "utf8");
  await firebase.loadDatabaseRules({
    databaseName: 'fsp2-a670d',
    rules,
  })
  const adminApp = firebase.initializeAdminApp({
    databaseName: 'fsp2-a670d'
  })
  const realtimeDb = adminApp.database();
  await realtimeDb.ref('users/foo').set({
    online: true
  })
  const testApp = firebase.initializeTestApp({
    databaseName: 'fsp2-a670d',
    auth: {
      uid: 'bar'
    }
  })
  const testAppDb = testApp.database();
  await firebase.assertFails(testAppDb.ref('users/foo').get())
})

I opened a pull request to fix this issue here

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions