diff --git a/__tests/db.unit.test.js b/__tests/db.unit.test.js index f1d8d697247e2496d9f3f69a0e368aa85342b43e..6b15309669e91ee7ead3d4ff2ff0498d6801cc22 100644 --- a/__tests/db.unit.test.js +++ b/__tests/db.unit.test.js @@ -1,50 +1,49 @@ -const dbController = require('../../src/controller/dbController') +const dbc = require('../src/controller/dbController') describe('DB methohds test', () => { it('returns a user from DB by email', async () => { - const user = await dbController.getUserByEmail('litehon958@whipjoy.com') + const user = await dbc.dbController.getUserByEmail('litehon958@whipjoy.com') expect(user).not.toBeNull() }) it('returns a null user', async () => { - const user = await dbController.getUserByEmail('jondoe@nowhere.com') // a non-exist user + const user = await dbc.dbController.getUserByEmail('jondoe@nowhere.com') // a non-exist user expect(user).toBeNull() }) - it("returns a user's email", async () => { - const email = await dbController.getUserEmailById(1) + const email = await dbc.dbController.getUserEmailById(2) expect(email).not.toBeNull() }) it("returns null instead of a user's email", async () => { - const email = await dbController.getUserEmailById(1005) // no user has this ID + const email = await dbc.dbController.getUserEmailById(1005) // no user has this ID expect(email).toBeNull() }) it('returns null from DB by token', async () => { - const user = await dbController.getUserByToken('12345678') // unvalid token + const user = await dbc.dbController.getUserByToken('12345678') // unvalid token expect(user).toBeNull() // for valid token = expect(user).not.toBeNull() }) it("returns a user's verification token, if any", async () => { - const token = await dbController.getVerificationTokenByUserId(1) + const token = await dbc.dbController.getVerificationTokenByUserId(1) expect(token).toBeNull() }) it("returns a user's ID, if any", async () => { - const token = await dbController.getUserIdByVerificationToken('12345678') // unvalid token + const token = await dbc.dbController.getUserIdByVerificationToken('12345678') // unvalid token expect(token).toBeNull() // for valid token = expect(user).not.toBeNull() }) it("returns a user's GitLab_ID, if any", async () => { - const id = await dbController.getGitlabId(1) + const id = await dbc.dbController.getGitlabId(2) expect(id).not.toBeNull() }) it('checks user email', async () => { - const user = await dbController.checkUserEmail('litehon958@whipjoy.com') + const user = await dbc.dbController.checkUserEmail('litehon958@whipjoy.com') expect(user).not.toBeNull() }) it('checks user email and return null', async () => { - const user = await dbController.checkUserEmail('jondoe@nowhere.com') // a non-exist user + const user = await dbc.dbController.checkUserEmail('jondoe@nowhere.com') // a non-exist user expect(user).toBeNull() }) }) diff --git a/__tests/gitlab.unit.test.js b/__tests/gitlab.unit.test.js index babb56898f54b4cd27d98eb64527e4205b933a7e..297c8d731d520b57e9822412d4f402229aeb4429 100644 --- a/__tests/gitlab.unit.test.js +++ b/__tests/gitlab.unit.test.js @@ -1,36 +1,30 @@ -const gitlabController = require('../src/controller/gitlabController') -const axios = require('axios') - -jest.mock('axios') +const gc = require('../src/controller/gitlabController') describe('GitLab API', () => { test('returns an existing gitlab user by an email address', async () => { - axios.get.mockResolvedValue({ - - }) - const user = await gitlabController.getUserByEmail('litehon958@whipjoy.com') + const user = await gc.gitlabController.getUserByEmail('litehon958@whipjoy.com') expect(user).not.toBeNull() }) test('returns an undefined user', async () => { - const user = await gitlabController.getUserByEmail('johndoe@nowhere.com') + const user = await gc.gitlabController.getUserByEmail('johndoe@nowhere.com') expect(user).toBeUndefined() }) test('returns users project', async () => { - const userProjects = await gitlabController.getUserProjects(136) + const userProjects = await gc.gitlabController.getUserProjects(136) expect(userProjects).toBeDefined() }) - test('returns undefined projects, due to non-existing gitlab user ID', async () => { - const userProjects = await gitlabController.getUserProjects(0) - expect(userProjects).toBeUndefined() + test('returns null, due to non-existing gitlab user ID', async () => { + const userProjects = await gc.gitlabController.getUserProjects(0) + expect(userProjects).toBeNull() }) test('returns a project by ID', async () => { - const project = await gitlabController.getProjectById(13) // m4lab_landing_page + const project = await gc.gitlabController.getProjectById(13) // m4lab_landing_page expect(project).toBeDefined() }) test('returns undefined, due to invalid project ID', async () => { - const project = await gitlabController.getProjectById(0) - expect(project).toBeUndefined() + const project = await gc.gitlabController.getProjectById(0) + expect(project).toBeNull() }) }) diff --git a/__tests/public.endpoint.test.js b/__tests/public.endpoint.test.js index e9f52bab1fbc0eee9e82b286a6b56c42e560c3e8..1a097b5e888539702af60817e318efc476a2752c 100644 --- a/__tests/public.endpoint.test.js +++ b/__tests/public.endpoint.test.js @@ -1,10 +1,23 @@ const request = require('supertest') -const express = require('express') - -const app = express() -app.set('port', 9989) +const app = require('../src/app') describe('Test endpoint(s)', () => { + it('should return a 200 status code', () => { + request(app) + .get('/registration') + .expect(200) + .end(function (err, res) { + if (err) throw err + }) + }) + it('should return a 200 status code', () => { + request(app) + .get('/forgotPwd') + .expect(200) + .end(function (err, res) { + if (err) throw err + }) + }) it('should return a 200 status code', () => { request(app) .get('/contact') diff --git a/package.json b/package.json index ec6fdbd79e91f26322ff88214acb822115045cf7..1028bbe4fc1c7daf3044ee04595b0447ce85fe7a 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "url": "https://transfer.hft-stuttgart.de/gitlab/m4lab_tv1/user-account.git" }, "scripts": { - "start:dev": "nodemon ./src/app.ts", + "start:dev": "nodemon ./src/index.ts", "start": "nodemon ./built/app.js", "test": "jest", "clean-code": "ts-standard --fix", diff --git a/src/app.ts b/src/app.ts index 7d830539a62508730cf75c0c9144258932d80775..59f673c14392440bed7e12865d5fa56fdfe9a4b7 100644 --- a/src/app.ts +++ b/src/app.ts @@ -16,7 +16,6 @@ const config = require('./config/config')[env] const lang = 'DE' const app = express() -app.set('port', config.app.port) app.set('views', path.join(path.join(__dirname, '/views'))) app.set('view engine', 'pug') @@ -85,6 +84,5 @@ app.use(function (err: any, req: any, res: any, next: any) { }) }) -app.listen(app.get('port'), function () { - console.log('Express server listening on port ' + app.get('port')) -}) +// export { app } +module.exports = app \ No newline at end of file diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..22f384c5da2669723915bdeebf94da81fa3560c6 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,94 @@ +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +//import {app} from './app'; +const app = require('./app') +var debug = require('debug')('MLAB-Account:server'); +import http from 'http' + +const env = process.env.NODE_ENV ?? 'testing' +const config = require('./config/config')[env] + +/** + * Get port from environment and store in Express. + */ + +var port = normalizePort(process.env.PORT || config.app.port); +app.set('port', port); + +/** + * Create HTTP server. + */ + +var server = http.createServer(app); + +/** + * Listen on provided port, on all network interfaces. + */ + +server.listen(port); +server.on('error', onError); +server.on('listening', onListening); + +/** + * Normalize a port into a number, string, or false. + */ + +function normalizePort(val: any) { + var port = parseInt(val, 10); + + if (isNaN(port)) { + // named pipe + return val; + } + + if (port >= 0) { + // port number + return port; + } + + return false; +} + +/** + * Event listener for HTTP server "error" event. + */ + +function onError(error: any) { + if (error.syscall !== 'listen') { + throw error; + } + + var bind = typeof port === 'string' + ? 'Pipe ' + port + : 'Port ' + port; + + // handle specific listen errors with friendly messages + switch (error.code) { + case 'EACCES': + console.error(bind + ' requires elevated privileges'); + process.exit(1); + break; + case 'EADDRINUSE': + console.error(bind + ' is already in use'); + process.exit(1); + break; + default: + throw error; + } +} + +/** + * Event listener for HTTP server "listening" event. + */ + +function onListening() { + var addr = server.address(); + var bind = typeof addr === 'string' + ? 'pipe ' + addr + : 'port ' + addr!.port; + debug('Listening on ' + bind); +}