diff --git a/plugins/auth-backend/src/identity/KeyStores.test.ts b/plugins/auth-backend/src/identity/KeyStores.test.ts index bb91d2cae9..f30263e27f 100644 --- a/plugins/auth-backend/src/identity/KeyStores.test.ts +++ b/plugins/auth-backend/src/identity/KeyStores.test.ts @@ -63,6 +63,7 @@ describe('KeyStores', () => { it('can handle additional provider config', async () => { jest.spyOn(FirestoreKeyStore, 'verifyConnection').mockResolvedValue(); + const createSpy = jest.spyOn(FirestoreKeyStore, 'create'); const configOptions = { auth: { @@ -70,6 +71,12 @@ describe('KeyStores', () => { provider: 'firestore', firestore: { projectId: 'my-project', + keyFilename: 'cred.json', + path: 'my-path', + timeout: 100, + host: 'localhost', + port: 8088, + ssl: false, }, }, }, @@ -78,6 +85,9 @@ describe('KeyStores', () => { const keyStore = await KeyStores.fromConfig(config); expect(keyStore).toBeInstanceOf(FirestoreKeyStore); + expect(createSpy).toHaveBeenCalledWith( + configOptions.auth.keyStore.firestore, + ); expect( config .getOptionalConfig('auth.keyStore') diff --git a/plugins/auth-backend/src/identity/KeyStores.ts b/plugins/auth-backend/src/identity/KeyStores.ts index 8ac1cf1ec6..5ec63f5439 100644 --- a/plugins/auth-backend/src/identity/KeyStores.ts +++ b/plugins/auth-backend/src/identity/KeyStores.ts @@ -21,10 +21,7 @@ import { Config } from '@backstage/config'; import { DatabaseKeyStore } from './DatabaseKeyStore'; import { MemoryKeyStore } from './MemoryKeyStore'; -import { - FirestoreKeyStore, - FirestoreKeyStoreSettings, -} from './FirestoreKeyStore'; +import { FirestoreKeyStore } from './FirestoreKeyStore'; import { KeyStore } from './types'; type Options = { @@ -65,8 +62,18 @@ export class KeyStores { } if (provider === 'firestore') { - const settings = ks?.getOptional(provider) as FirestoreKeyStoreSettings; - const keyStore = await FirestoreKeyStore.create(settings); + const settings = ks?.getConfig(provider); + + const keyStore = await FirestoreKeyStore.create({ + projectId: settings?.getOptionalString('projectId'), + keyFilename: settings?.getOptionalString('keyFilename'), + host: settings?.getOptionalString('host'), + port: settings?.getOptionalNumber('port'), + ssl: settings?.getOptionalBoolean('ssl'), + path: settings?.getOptionalString('path'), + timeout: settings?.getOptionalNumber('timeout'), + }); + await FirestoreKeyStore.verifyConnection(keyStore, logger); return keyStore;