Skip to main content
Glama
config.test.ts3.46 kB
// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors // SPDX-License-Identifier: Apache-2.0 import { GetSecretValueCommand, SecretsManagerClient } from '@aws-sdk/client-secrets-manager'; import { GetParametersByPathCommand, SSMClient } from '@aws-sdk/client-ssm'; import type { AwsClientStub } from 'aws-sdk-client-mock'; import { mockClient } from 'aws-sdk-client-mock'; import 'aws-sdk-client-mock-jest'; import { getConfig, loadConfig } from '../../config/loader'; describe('Config', () => { let mockSSMClient: AwsClientStub<SSMClient>; let mockSecretsManagerClient: AwsClientStub<SecretsManagerClient>; beforeEach(() => { mockSSMClient = mockClient(SSMClient); mockSecretsManagerClient = mockClient(SecretsManagerClient); mockSecretsManagerClient.on(GetSecretValueCommand).resolves({ SecretString: JSON.stringify({ host: 'host', port: 123 }), }); mockSSMClient.on(GetParametersByPathCommand).resolves({ Parameters: [ { Name: 'baseUrl', Value: 'https://www.example.com/' }, { Name: 'database.ssl.require', Value: 'true' }, { Name: 'database.ssl.rejectUnauthorized', Value: 'true' }, { Name: 'database.ssl.ca', Value: 'DatabaseSslCa' }, { Name: 'DatabaseSecrets', Value: 'DatabaseSecretsArn' }, { Name: 'RedisSecrets', Value: 'RedisSecretsArn' }, { Name: 'port', Value: '8080' }, { Name: 'botCustomFunctionsEnabled', Value: 'true' }, { Name: 'logAuditEvents', Value: 'true' }, { Name: 'registerEnabled', Value: 'false' }, { Name: 'defaultProjectSystemSetting', Value: '[{"name":"someSetting","valueString":"someValue"},{"name":"secondSetting","valueInteger":5}]', }, ], }); }); afterEach(() => { mockSSMClient.restore(); mockSecretsManagerClient.restore(); }); test('Load AWS config', async () => { const config = await loadConfig('aws:test'); expect(config).toBeDefined(); expect(config.baseUrl).toBeDefined(); expect(config.port).toStrictEqual(8080); expect(config.botCustomFunctionsEnabled).toStrictEqual(true); expect(config.logAuditEvents).toStrictEqual(true); expect(config.registerEnabled).toStrictEqual(false); expect(config.defaultProjectSystemSetting).toStrictEqual([ { name: 'someSetting', valueString: 'someValue' }, { name: 'secondSetting', valueInteger: 5 }, ]); expect(config.database).toBeDefined(); expect(config.database.ssl).toBeDefined(); expect(config.database.ssl?.require).toStrictEqual(true); expect(config.database.ssl?.rejectUnauthorized).toStrictEqual(true); expect(config.database.ssl?.ca).toStrictEqual('DatabaseSslCa'); expect(getConfig()).toBe(config); expect(mockSSMClient).toReceiveCommand(GetParametersByPathCommand); }); test('Load region AWS config', async () => { const config = await loadConfig('aws:ap-southeast-2:test'); expect(config).toBeDefined(); expect(config.baseUrl).toBeDefined(); expect(config.port).toStrictEqual(8080); expect(getConfig()).toBe(config); expect(mockSecretsManagerClient).toReceiveCommand(GetSecretValueCommand); expect(mockSecretsManagerClient).toReceiveCommandWith(GetSecretValueCommand, { SecretId: 'DatabaseSecretsArn', }); expect(mockSecretsManagerClient).toReceiveCommandWith(GetSecretValueCommand, { SecretId: 'RedisSecretsArn', }); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/medplum/medplum'

If you have feedback or need assistance with the MCP directory API, please join our Discord server