diff --git a/api/src/app.ts b/api/src/app.ts index 100b529..cb0734d 100644 --- a/api/src/app.ts +++ b/api/src/app.ts @@ -22,11 +22,13 @@ const { MODE, CORS, WHITELIST } = process.env if (MODE?.trim() !== 'server' || CORS?.trim() === 'enable') { const whiteList: string[] = [] - WHITELIST?.split(' ')?.forEach((url) => { - if (url.startsWith('http')) - // removing trailing slash of URLs listing for CORS - whiteList.push(url.replace(/\/$/, '')) - }) + WHITELIST?.split(' ') + ?.filter((url) => !!url) + .forEach((url) => { + if (url.startsWith('http')) + // removing trailing slash of URLs listing for CORS + whiteList.push(url.replace(/\/$/, '')) + }) console.log('All CORS Requests are enabled for:', whiteList) app.use(cors({ credentials: true, origin: whiteList })) diff --git a/api/src/controllers/info.ts b/api/src/controllers/info.ts index 0db2626..ab42fc5 100644 --- a/api/src/controllers/info.ts +++ b/api/src/controllers/info.ts @@ -1,5 +1,4 @@ -import express from 'express' -import { Request, Security, Route, Tags, Example, Get } from 'tsoa' +import { Route, Tags, Example, Get } from 'tsoa' export interface InfoResponse { mode: string @@ -29,7 +28,8 @@ export class InfoController { process.env.CORS ?? process.env.MODE === 'server' ? 'disable' : 'enable', - whiteList: process.env.WHITELIST?.split(' ') ?? [], + whiteList: + process.env.WHITELIST?.split(' ')?.filter((url) => !!url) ?? [], protocol: process.env.PROTOCOL ?? 'http' } return response diff --git a/api/src/routes/api/spec/auth.spec.ts b/api/src/routes/api/spec/auth.spec.ts index 798753b..2377809 100644 --- a/api/src/routes/api/spec/auth.spec.ts +++ b/api/src/routes/api/spec/auth.spec.ts @@ -18,11 +18,6 @@ import { verifyTokenInDB } from '../../../utils' -let app: Express -appPromise.then((_app) => { - app = _app -}) - const clientId = 'someclientID' const clientSecret = 'someclientSecret' const user = { @@ -35,12 +30,15 @@ const user = { } describe('auth', () => { + let app: Express let con: Mongoose let mongoServer: MongoMemoryServer const userController = new UserController() const clientController = new ClientController() beforeAll(async () => { + app = await appPromise + mongoServer = await MongoMemoryServer.create() con = await mongoose.connect(mongoServer.getUri()) await clientController.createClient({ clientId, clientSecret }) diff --git a/api/src/routes/api/spec/client.spec.ts b/api/src/routes/api/spec/client.spec.ts index 653d4b0..22e8b5d 100644 --- a/api/src/routes/api/spec/client.spec.ts +++ b/api/src/routes/api/spec/client.spec.ts @@ -6,11 +6,6 @@ import appPromise from '../../../app' import { UserController, ClientController } from '../../../controllers/' import { generateAccessToken, saveTokensInDB } from '../../../utils' -let app: Express -appPromise.then((_app) => { - app = _app -}) - const client = { clientId: 'someclientID', clientSecret: 'someclientSecret' @@ -28,12 +23,15 @@ const newClient = { } describe('client', () => { + let app: Express let con: Mongoose let mongoServer: MongoMemoryServer const userController = new UserController() const clientController = new ClientController() beforeAll(async () => { + app = await appPromise + mongoServer = await MongoMemoryServer.create() con = await mongoose.connect(mongoServer.getUri()) }) diff --git a/api/src/routes/api/spec/drive.spec.ts b/api/src/routes/api/spec/drive.spec.ts index ef05469..dba7098 100644 --- a/api/src/routes/api/spec/drive.spec.ts +++ b/api/src/routes/api/spec/drive.spec.ts @@ -33,11 +33,6 @@ import { getTreeExample } from '../../../controllers/internal' import { generateAccessToken, saveTokensInDB } from '../../../utils/' const { getTmpFilesFolderPath } = fileUtilModules -let app: Express -appPromise.then((_app) => { - app = _app -}) - const clientId = 'someclientID' const user = { displayName: 'Test User', @@ -48,6 +43,7 @@ const user = { } describe('drive', () => { + let app: Express let con: Mongoose let mongoServer: MongoMemoryServer const controller = new UserController() @@ -55,6 +51,8 @@ describe('drive', () => { let accessToken: string beforeAll(async () => { + app = await appPromise + mongoServer = await MongoMemoryServer.create() con = await mongoose.connect(mongoServer.getUri()) diff --git a/api/src/routes/api/spec/group.spec.ts b/api/src/routes/api/spec/group.spec.ts index 71a0a05..b48bad8 100644 --- a/api/src/routes/api/spec/group.spec.ts +++ b/api/src/routes/api/spec/group.spec.ts @@ -6,11 +6,6 @@ import appPromise from '../../../app' import { UserController, GroupController } from '../../../controllers/' import { generateAccessToken, saveTokensInDB } from '../../../utils' -let app: Express -appPromise.then((_app) => { - app = _app -}) - const clientId = 'someclientID' const adminUser = { displayName: 'Test Admin', @@ -36,11 +31,14 @@ const userController = new UserController() const groupController = new GroupController() describe('group', () => { + let app: Express let con: Mongoose let mongoServer: MongoMemoryServer let adminAccessToken: string beforeAll(async () => { + app = await appPromise + mongoServer = await MongoMemoryServer.create() con = await mongoose.connect(mongoServer.getUri()) diff --git a/api/src/routes/api/spec/info.spec.ts b/api/src/routes/api/spec/info.spec.ts index 2f86c66..2e25c40 100644 --- a/api/src/routes/api/spec/info.spec.ts +++ b/api/src/routes/api/spec/info.spec.ts @@ -2,13 +2,19 @@ import { Express } from 'express' import request from 'supertest' import appPromise from '../../../app' -let app: Express - describe('Info', () => { + let app: Express + + beforeAll(async () => { + app = await appPromise + }) + it('should should return configured information of the server instance', async () => { - await appPromise.then((_app) => { - app = _app - }) - request(app).get('/SASjsApi/info').expect(200) + const res = await request(app).get('/SASjsApi/info').expect(200) + + expect(res.body.mode).toEqual('server') + expect(res.body.cors).toEqual('disable') + expect(res.body.whiteList).toEqual([]) + expect(res.body.protocol).toEqual('http') }) }) diff --git a/api/src/routes/api/spec/user.spec.ts b/api/src/routes/api/spec/user.spec.ts index 928209e..9289a5e 100644 --- a/api/src/routes/api/spec/user.spec.ts +++ b/api/src/routes/api/spec/user.spec.ts @@ -6,11 +6,6 @@ import appPromise from '../../../app' import { UserController } from '../../../controllers/' import { generateAccessToken, saveTokensInDB } from '../../../utils' -let app: Express -appPromise.then((_app) => { - app = _app -}) - const clientId = 'someclientID' const adminUser = { displayName: 'Test Admin', @@ -30,10 +25,13 @@ const user = { const controller = new UserController() describe('user', () => { + let app: Express let con: Mongoose let mongoServer: MongoMemoryServer beforeAll(async () => { + app = await appPromise + mongoServer = await MongoMemoryServer.create() con = await mongoose.connect(mongoServer.getUri()) }) diff --git a/api/src/utils/connectDB.ts b/api/src/utils/connectDB.ts index ea52cbe..a751b16 100644 --- a/api/src/utils/connectDB.ts +++ b/api/src/utils/connectDB.ts @@ -7,22 +7,22 @@ export const connectDB = async () => { // we should exclude connecting to the real database if (process.env.NODE_ENV === 'test') { return - } else { - const { MODE } = process.env - - if (MODE?.trim() !== 'server') { - console.log('Running in Destop Mode, no DB to connect.') - return - } - - mongoose.connect(process.env.DB_CONNECT as string, async (err) => { - if (err) throw err - - console.log('Connected to db!') - - await seedDB() - - await populateClients() - }) } + + const { MODE } = process.env + + if (MODE?.trim() !== 'server') { + console.log('Running in Destop Mode, no DB to connect.') + return + } + + mongoose.connect(process.env.DB_CONNECT as string, async (err) => { + if (err) throw err + + console.log('Connected to db!') + + await seedDB() + + await populateClients() + }) }