From c52eb4805511c2cc4285e0f71e09d5357d20a2ff Mon Sep 17 00:00:00 2001 From: lovelle-cardoso Date: Tue, 3 Aug 2021 16:52:03 -0700 Subject: [PATCH] fix: assertFails for storage read/write requests (#5086) (#5209) Fixes Issue 4 of #5086 --- packages/rules-unit-testing/src/api/index.ts | 4 ++- .../rules-unit-testing/test/database.test.ts | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/rules-unit-testing/src/api/index.ts b/packages/rules-unit-testing/src/api/index.ts index d8a5a57719e..4a47f1491fd 100644 --- a/packages/rules-unit-testing/src/api/index.ts +++ b/packages/rules-unit-testing/src/api/index.ts @@ -698,7 +698,9 @@ export function assertFails(pr: Promise): any { errCode === 'permission-denied' || errCode === 'permission_denied' || errMessage.indexOf('permission_denied') >= 0 || - errMessage.indexOf('permission denied') >= 0; + errMessage.indexOf('permission denied') >= 0 || + // Storage permission errors contain message: (storage/unauthorized) + errMessage.indexOf('unauthorized') >= 0; if (!isPermissionDenied) { return Promise.reject( diff --git a/packages/rules-unit-testing/test/database.test.ts b/packages/rules-unit-testing/test/database.test.ts index 73ff3a55642..6378ef3d54f 100644 --- a/packages/rules-unit-testing/test/database.test.ts +++ b/packages/rules-unit-testing/test/database.test.ts @@ -153,6 +153,31 @@ describe('Testing Module Tests', function () { .catch(() => {}); }); + it('assertFails() if message contains unauthorized', async function () { + const success = Promise.resolve('success'); + const permissionDenied = Promise.reject({ + message: 'User does not have permission to access \'file\'. (storage/unauthorized)' + }); + const otherFailure = Promise.reject('failure'); + await firebase + .assertFails(success) + .then(() => { + throw new Error('Expected success to fail.'); + }) + .catch(() => {}); + + await firebase.assertFails(permissionDenied).catch(() => { + throw new Error('Expected permissionDenied to succeed.'); + }); + + await firebase + .assertFails(otherFailure) + .then(() => { + throw new Error('Expected otherFailure to fail.'); + }) + .catch(() => {}); + }); + it('discoverEmulators() finds all running emulators', async () => { const options = await firebase.discoverEmulators();