Be more specific when accessing firestore provider config

Signed-off-by: Marcus Eide <eide@spotify.com>
This commit is contained in:
Marcus Eide
2021-10-21 10:30:29 +02:00
parent 7e707db187
commit 6237e636eb
2 changed files with 23 additions and 6 deletions
@@ -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')
+13 -6
View File
@@ -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;