From ad014e7715846349fdb76ca87675667b8e0c3091 Mon Sep 17 00:00:00 2001 From: Pragati Date: Wed, 18 Oct 2023 13:24:27 -0700 Subject: [PATCH 1/4] adding integration tests --- test/integration/auth.spec.ts | 41 +++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/test/integration/auth.spec.ts b/test/integration/auth.spec.ts index 7b113b3156..8ee33e25f4 100644 --- a/test/integration/auth.spec.ts +++ b/test/integration/auth.spec.ts @@ -1758,6 +1758,47 @@ describe('admin.auth', () => { }); }); + describe('Passkey config management operations', () => { + + // Before each test, reset the passkey config to the initial state + beforeEach(async () => { + // const resetRequest = { expectedOrigins: expectedPasskeyConfig.expectedOrigins }; + // await getAuth().passkeyConfigManager().updatePasskeyConfig(resetRequest); + }); + + it('createPasskeyConfig() should create passkey config with expected passkeyConfig', async () => { + const rpId = projectId + '.firebaseapp.com'; + const createRequest = { expectedOrigins: ['app1', 'example.com'] }; + const createdPasskeyConfig = await getAuth().passkeyConfigManager().createPasskeyConfig(rpId, createRequest); + + expect(createdPasskeyConfig.name).to.deep.equal('projects/' + projectId + '/passkeyConfig'); + expect(createdPasskeyConfig.rpId).to.deep.equal(projectId + '.firebaseapp.com'); + expect(createdPasskeyConfig.expectedOrigins).to.deep.equal(['app1', 'example.com']); + }); + + // TODO: uncomment when the GET endpoint is released in prod + // it('getPasskeyConfig() should resolve with expected passkeyConfig', async () => { + // const actualPasskeyConfig = await getAuth().passkeyConfigManager().getPasskeyConfig(); + + // expect(actualPasskeyConfig.name).to.deep.equal('projects/' + projectId + '/passkeyConfig'); + // expect(actualPasskeyConfig.rpId).to.deep.equal(projectId + '.firebaseapp.com'); + // expect(actualPasskeyConfig.expectedOrigins).to.deep.equal(['app1', 'example.com']); + // }); + + it('updatePasskeyConfig() should resolve with updated expectedOrigins', async () => { + const updateRequest = { + expectedOrigins: ['app1', 'example.com', 'app2'] + }; + + const updatedPasskeyConfig = await getAuth().passkeyConfigManager().updatePasskeyConfig(updateRequest); + + expect(updatedPasskeyConfig.name).to.deep.equal('projects/' + projectId + '/passkeyConfig'); + // TODO: backend validation needs to fixed in order for this statement to succeed. + // expect(updatedPasskeyConfig.rpId).to.deep.equal(projectId + '.firebaseapp.com'); + expect(updatedPasskeyConfig.expectedOrigins).to.deep.equal(['app1', 'example.com', 'app2']); + }); + }); + // Sanity check OIDC/SAML config management API. describe('SAML management APIs', () => { let tenantAwareAuth: TenantAwareAuth; From 95f958e75a6e1d31405d8857d6649a0862820c4f Mon Sep 17 00:00:00 2001 From: Pragati Date: Wed, 20 Mar 2024 09:47:52 -0700 Subject: [PATCH 2/4] integration tests activated --- test/integration/auth.spec.ts | 83 +++++++++++++++++------------------ 1 file changed, 41 insertions(+), 42 deletions(-) diff --git a/test/integration/auth.spec.ts b/test/integration/auth.spec.ts index 8ee33e25f4..44e15ff957 100644 --- a/test/integration/auth.spec.ts +++ b/test/integration/auth.spec.ts @@ -21,7 +21,7 @@ import * as chai from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; import firebase from '@firebase/app-compat'; import '@firebase/auth-compat'; -import { clone } from 'lodash'; +import { clone, update } from 'lodash'; import { User, FirebaseAuth } from '@firebase/auth-types'; import { generateRandomString, projectId, apiKey, noServiceAccountApp, cmdArgs, @@ -1222,7 +1222,7 @@ describe('admin.auth', () => { minLength: 6, } } - }) + }) }); const mfaSmsEnabledTotpEnabledConfig: MultiFactorConfig = { @@ -1758,45 +1758,44 @@ describe('admin.auth', () => { }); }); - describe('Passkey config management operations', () => { - - // Before each test, reset the passkey config to the initial state - beforeEach(async () => { - // const resetRequest = { expectedOrigins: expectedPasskeyConfig.expectedOrigins }; - // await getAuth().passkeyConfigManager().updatePasskeyConfig(resetRequest); - }); - - it('createPasskeyConfig() should create passkey config with expected passkeyConfig', async () => { - const rpId = projectId + '.firebaseapp.com'; - const createRequest = { expectedOrigins: ['app1', 'example.com'] }; - const createdPasskeyConfig = await getAuth().passkeyConfigManager().createPasskeyConfig(rpId, createRequest); - - expect(createdPasskeyConfig.name).to.deep.equal('projects/' + projectId + '/passkeyConfig'); - expect(createdPasskeyConfig.rpId).to.deep.equal(projectId + '.firebaseapp.com'); - expect(createdPasskeyConfig.expectedOrigins).to.deep.equal(['app1', 'example.com']); - }); - - // TODO: uncomment when the GET endpoint is released in prod - // it('getPasskeyConfig() should resolve with expected passkeyConfig', async () => { - // const actualPasskeyConfig = await getAuth().passkeyConfigManager().getPasskeyConfig(); - - // expect(actualPasskeyConfig.name).to.deep.equal('projects/' + projectId + '/passkeyConfig'); - // expect(actualPasskeyConfig.rpId).to.deep.equal(projectId + '.firebaseapp.com'); - // expect(actualPasskeyConfig.expectedOrigins).to.deep.equal(['app1', 'example.com']); - // }); - - it('updatePasskeyConfig() should resolve with updated expectedOrigins', async () => { - const updateRequest = { - expectedOrigins: ['app1', 'example.com', 'app2'] - }; - - const updatedPasskeyConfig = await getAuth().passkeyConfigManager().updatePasskeyConfig(updateRequest); - - expect(updatedPasskeyConfig.name).to.deep.equal('projects/' + projectId + '/passkeyConfig'); - // TODO: backend validation needs to fixed in order for this statement to succeed. - // expect(updatedPasskeyConfig.rpId).to.deep.equal(projectId + '.firebaseapp.com'); - expect(updatedPasskeyConfig.expectedOrigins).to.deep.equal(['app1', 'example.com', 'app2']); - }); + describe('Passkey config management operations', () => { + + // Define expected passkey configuration + const expectedPasskeyConfig = { + name: `projects/{$projectId}/passkeyConfig`, + rpId: `{$projectId}.firebaseapp.com`, + expectedOrigins: ['app1', 'example.com'], + }; + + it('createPasskeyConfig() should create passkey config with expected passkeyConfig', async () => { + const rpId = projectId + '.firebaseapp.com'; + const createRequest = { expectedOrigins: ['app1', 'example.com'] }; + const createdPasskeyConfig = await getAuth().passkeyConfigManager().createPasskeyConfig(rpId, createRequest); + + expect(createdPasskeyConfig.name).to.deep.equal(expectedPasskeyConfig.name); + expect(createdPasskeyConfig.rpId).to.deep.equal(expectedPasskeyConfig.rpId); + expect(createdPasskeyConfig.expectedOrigins).to.deep.equal(expectedPasskeyConfig.expectedOrigins); + }); + + it('getPasskeyConfig() should resolve with expected passkeyConfig', async () => { + const actualPasskeyConfig = await getAuth().passkeyConfigManager().getPasskeyConfig(); + + expect(actualPasskeyConfig.name).to.deep.equal(expectedPasskeyConfig.name); + expect(actualPasskeyConfig.rpId).to.deep.equal(expectedPasskeyConfig.rpId); + expect(actualPasskeyConfig.expectedOrigins).to.deep.equal(expectedPasskeyConfig.rpId); + }); + + it('updatePasskeyConfig() should resolve with updated expectedOrigins', async () => { + const updateRequest = { + expectedOrigins: ['app1', 'example.com', 'app2'] + }; + + const updatedPasskeyConfig = await getAuth().passkeyConfigManager().updatePasskeyConfig(updateRequest); + + expect(updatedPasskeyConfig.name).to.deep.equal(expectedPasskeyConfig.name); + expect(updatedPasskeyConfig.rpId).to.deep.equal(expectedPasskeyConfig.rpId); + expect(updatedPasskeyConfig.expectedOrigins).to.deep.equal(updateRequest.expectedOrigins); + }); }); // Sanity check OIDC/SAML config management API. @@ -2063,7 +2062,7 @@ describe('admin.auth', () => { } return getAuth().tenantManager().updateTenant(createdTenantId, updateRequestNoMfaConfig) }); - + it('updateTenant() should not update tenant reCAPTCHA config is undefined', () => { expectedUpdatedTenant.tenantId = createdTenantId; const updatedOptions2: UpdateTenantRequest = { From f14850a1118150d60ecdcc1a0ed00b25d9e9c998 Mon Sep 17 00:00:00 2001 From: Pragati Date: Wed, 20 Mar 2024 09:58:22 -0700 Subject: [PATCH 3/4] remove `update` --- test/integration/auth.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/auth.spec.ts b/test/integration/auth.spec.ts index 44e15ff957..15c1792abd 100644 --- a/test/integration/auth.spec.ts +++ b/test/integration/auth.spec.ts @@ -21,7 +21,7 @@ import * as chai from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; import firebase from '@firebase/app-compat'; import '@firebase/auth-compat'; -import { clone, update } from 'lodash'; +import { clone } from 'lodash'; import { User, FirebaseAuth } from '@firebase/auth-types'; import { generateRandomString, projectId, apiKey, noServiceAccountApp, cmdArgs, From 0931ca9fc34f80b27eb6beefd0e9e95723a106d2 Mon Sep 17 00:00:00 2001 From: Pragati Date: Wed, 20 Mar 2024 10:00:30 -0700 Subject: [PATCH 4/4] lint fixes --- test/integration/auth.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/integration/auth.spec.ts b/test/integration/auth.spec.ts index 15c1792abd..7c520a777e 100644 --- a/test/integration/auth.spec.ts +++ b/test/integration/auth.spec.ts @@ -1762,8 +1762,8 @@ describe('admin.auth', () => { // Define expected passkey configuration const expectedPasskeyConfig = { - name: `projects/{$projectId}/passkeyConfig`, - rpId: `{$projectId}.firebaseapp.com`, + name: 'projects/{$projectId}/passkeyConfig', + rpId: '{$projectId}.firebaseapp.com', expectedOrigins: ['app1', 'example.com'], };