🔨 Infer typings for config schema (#2656)
* 🚚 Move schema to standalone file * ⚡ Add assertions to string literal arrays * ✨ Infer typings for convict schema * 🔥 Remove unneeded assertions * 🔨 Fix errors surfaced by typings * ⚡ Type nodes.include/exclude per docs * ⚡ Account for types for exception paths * ⚡ Set method alias to flag incorrect paths * ⚡ Replace original with alias * ⚡ Make allowance for nodes.include * ⚡ Adjust leftover calls * 🔀 Fix conflicts * 🔥 Remove unneeded castings * 📘 Simplify exception path type * 📦 Update package-lock.json * 🔥 Remove unneeded imports * 🔥 Remove unrelated file * ⚡ Update schema * ⚡ Update interface * 📦 Update package-lock.json * 📦 Update package-lock.json * 🔥 Remove leftover assertions Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
This commit is contained in:
@@ -81,7 +81,7 @@ test('POST /owner should create owner and enable isInstanceOwnerSetUp', async ()
|
||||
expect(storedOwner.firstName).toBe(newOwnerData.firstName);
|
||||
expect(storedOwner.lastName).toBe(newOwnerData.lastName);
|
||||
|
||||
const isInstanceOwnerSetUpConfig = config.get('userManagement.isInstanceOwnerSetUp');
|
||||
const isInstanceOwnerSetUpConfig = config.getEnv('userManagement.isInstanceOwnerSetUp');
|
||||
expect(isInstanceOwnerSetUpConfig).toBe(true);
|
||||
|
||||
const isInstanceOwnerSetUpSetting = await utils.isInstanceOwnerSetUp();
|
||||
@@ -108,7 +108,7 @@ test('POST /owner/skip-setup should persist skipping setup to the DB', async ()
|
||||
|
||||
expect(response.statusCode).toBe(200);
|
||||
|
||||
const skipConfig = config.get('userManagement.skipInstanceOwnerSetup');
|
||||
const skipConfig = config.getEnv('userManagement.skipInstanceOwnerSetup');
|
||||
expect(skipConfig).toBe(true);
|
||||
|
||||
const { value } = await Db.collections.Settings!.findOneOrFail({
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import config = require('../../../config');
|
||||
|
||||
export const REST_PATH_SEGMENT = config.get('endpoints.rest') as Readonly<string>;
|
||||
export const REST_PATH_SEGMENT = config.getEnv('endpoints.rest') as Readonly<string>;
|
||||
|
||||
export const AUTHLESS_ENDPOINTS: Readonly<string[]> = [
|
||||
'healthz',
|
||||
'metrics',
|
||||
config.get('endpoints.webhook') as string,
|
||||
config.get('endpoints.webhookWaiting') as string,
|
||||
config.get('endpoints.webhookTest') as string,
|
||||
config.getEnv('endpoints.webhook'),
|
||||
config.getEnv('endpoints.webhookWaiting'),
|
||||
config.getEnv('endpoints.webhookTest'),
|
||||
];
|
||||
|
||||
export const SUCCESS_RESPONSE_BODY = {
|
||||
|
||||
@@ -22,7 +22,7 @@ import type { CollectionName, CredentialPayload } from './types';
|
||||
* Initialize one test DB per suite run, with bootstrap connection if needed.
|
||||
*/
|
||||
export async function init() {
|
||||
const dbType = config.get('database.type') as DatabaseType;
|
||||
const dbType = config.getEnv('database.type');
|
||||
|
||||
if (dbType === 'sqlite') {
|
||||
// no bootstrap connection required
|
||||
@@ -73,7 +73,7 @@ export async function init() {
|
||||
* Drop test DB, closing bootstrap connection if existing.
|
||||
*/
|
||||
export async function terminate(testDbName: string) {
|
||||
const dbType = config.get('database.type') as DatabaseType;
|
||||
const dbType = config.getEnv('database.type');
|
||||
|
||||
if (dbType === 'sqlite') {
|
||||
await getConnection(testDbName).close();
|
||||
@@ -103,7 +103,7 @@ export async function terminate(testDbName: string) {
|
||||
* @param testDbName Name of the test DB to truncate tables in.
|
||||
*/
|
||||
export async function truncate(collections: CollectionName[], testDbName: string) {
|
||||
const dbType = config.get('database.type');
|
||||
const dbType = config.getEnv('database.type');
|
||||
|
||||
const testDb = getConnection(testDbName);
|
||||
|
||||
@@ -295,11 +295,11 @@ export const getSqliteOptions = ({ name }: { name: string }): ConnectionOptions
|
||||
* to create and drop test Postgres databases.
|
||||
*/
|
||||
export const getBootstrapPostgresOptions = () => {
|
||||
const username = config.get('database.postgresdb.user');
|
||||
const password = config.get('database.postgresdb.password');
|
||||
const host = config.get('database.postgresdb.host');
|
||||
const port = config.get('database.postgresdb.port');
|
||||
const schema = config.get('database.postgresdb.schema');
|
||||
const username = config.getEnv('database.postgresdb.user');
|
||||
const password = config.getEnv('database.postgresdb.password');
|
||||
const host = config.getEnv('database.postgresdb.host');
|
||||
const port = config.getEnv('database.postgresdb.port');
|
||||
const schema = config.getEnv('database.postgresdb.schema');
|
||||
|
||||
return {
|
||||
name: BOOTSTRAP_POSTGRES_CONNECTION_NAME,
|
||||
@@ -314,11 +314,11 @@ export const getBootstrapPostgresOptions = () => {
|
||||
};
|
||||
|
||||
export const getPostgresOptions = ({ name }: { name: string }): ConnectionOptions => {
|
||||
const username = config.get('database.postgresdb.user');
|
||||
const password = config.get('database.postgresdb.password');
|
||||
const host = config.get('database.postgresdb.host');
|
||||
const port = config.get('database.postgresdb.port');
|
||||
const schema = config.get('database.postgresdb.schema');
|
||||
const username = config.getEnv('database.postgresdb.user');
|
||||
const password = config.getEnv('database.postgresdb.password');
|
||||
const host = config.getEnv('database.postgresdb.host');
|
||||
const port = config.getEnv('database.postgresdb.port');
|
||||
const schema = config.getEnv('database.postgresdb.schema');
|
||||
|
||||
return {
|
||||
name,
|
||||
@@ -345,10 +345,10 @@ export const getPostgresOptions = ({ name }: { name: string }): ConnectionOption
|
||||
* to create and drop test MySQL databases.
|
||||
*/
|
||||
export const getBootstrapMySqlOptions = (): ConnectionOptions => {
|
||||
const username = config.get('database.mysqldb.user');
|
||||
const password = config.get('database.mysqldb.password');
|
||||
const host = config.get('database.mysqldb.host');
|
||||
const port = config.get('database.mysqldb.port');
|
||||
const username = config.getEnv('database.mysqldb.user');
|
||||
const password = config.getEnv('database.mysqldb.password');
|
||||
const host = config.getEnv('database.mysqldb.host');
|
||||
const port = config.getEnv('database.mysqldb.port');
|
||||
|
||||
return {
|
||||
name: BOOTSTRAP_MYSQL_CONNECTION_NAME,
|
||||
@@ -366,10 +366,10 @@ export const getBootstrapMySqlOptions = (): ConnectionOptions => {
|
||||
* one per test suite run.
|
||||
*/
|
||||
export const getMySqlOptions = ({ name }: { name: string }): ConnectionOptions => {
|
||||
const username = config.get('database.mysqldb.user');
|
||||
const password = config.get('database.mysqldb.password');
|
||||
const host = config.get('database.mysqldb.host');
|
||||
const port = config.get('database.mysqldb.port');
|
||||
const username = config.getEnv('database.mysqldb.user');
|
||||
const password = config.getEnv('database.mysqldb.password');
|
||||
const host = config.getEnv('database.mysqldb.host');
|
||||
const port = config.getEnv('database.mysqldb.port');
|
||||
|
||||
return {
|
||||
name,
|
||||
|
||||
@@ -3,16 +3,15 @@ import { promisify } from 'util';
|
||||
|
||||
import config = require('../config');
|
||||
import { BOOTSTRAP_MYSQL_CONNECTION_NAME } from './integration/shared/constants';
|
||||
import { DatabaseType } from '../src';
|
||||
|
||||
const exec = promisify(callbackExec);
|
||||
|
||||
const dbType = config.get('database.type') as DatabaseType;
|
||||
const dbType = config.getEnv('database.type');
|
||||
|
||||
if (dbType === 'mysqldb') {
|
||||
const username = config.get('database.mysqldb.user');
|
||||
const password = config.get('database.mysqldb.password');
|
||||
const host = config.get('database.mysqldb.host');
|
||||
const username = config.getEnv('database.mysqldb.user');
|
||||
const password = config.getEnv('database.mysqldb.password');
|
||||
const host = config.getEnv('database.mysqldb.host');
|
||||
|
||||
const passwordSegment = password ? `-p${password}` : '';
|
||||
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
import { createConnection } from 'typeorm';
|
||||
import config = require('../config');
|
||||
import { exec } from 'child_process';
|
||||
import { DatabaseType } from '../src';
|
||||
import { getBootstrapMySqlOptions, getBootstrapPostgresOptions } from './integration/shared/testDb';
|
||||
import { BOOTSTRAP_MYSQL_CONNECTION_NAME } from './integration/shared/constants';
|
||||
|
||||
export default async () => {
|
||||
const dbType = config.get('database.type') as DatabaseType;
|
||||
const dbType = config.getEnv('database.type');
|
||||
|
||||
if (dbType === 'postgresdb') {
|
||||
const bootstrapPostgres = await createConnection(getBootstrapPostgresOptions());
|
||||
@@ -25,9 +24,9 @@ export default async () => {
|
||||
}
|
||||
|
||||
if (dbType === 'mysqldb') {
|
||||
const user = config.get('database.mysqldb.user');
|
||||
const password = config.get('database.mysqldb.password');
|
||||
const host = config.get('database.mysqldb.host');
|
||||
const user = config.getEnv('database.mysqldb.user');
|
||||
const password = config.getEnv('database.mysqldb.password');
|
||||
const host = config.getEnv('database.mysqldb.host');
|
||||
|
||||
const bootstrapMySql = await createConnection(getBootstrapMySqlOptions());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user