diff --git a/__tests__/gitlab.unit.test.js b/__tests__/gitlab.unit.test.js index af8cf6de1c3eecdd199a10a1268e4c1cf56e50a7..057f020d31d6acb893da43f021e16f4833125005 100644 --- a/__tests__/gitlab.unit.test.js +++ b/__tests__/gitlab.unit.test.js @@ -1,4 +1,4 @@ -const gitlab = require('../routes/gitlab') +const gitlab = require('../functions/gitlab') //const axios = require('axios') //jest.mock('axios') diff --git a/__tests__/method.unit.test.js b/__tests__/method.unit.test.js index 8dde44c8b285a127ac8fc8d5709db76982c98c4c..1673830dbb0fdeeceaf33a9769c76db0bdbc6c5a 100644 --- a/__tests__/method.unit.test.js +++ b/__tests__/method.unit.test.js @@ -1,52 +1,52 @@ -const methods = require('../routes/methods') +const methods = require('../functions/methods') describe("DB methohds test", () => { - it('returns a user from DB by email', done => { - methods.getUserByEmail('litehon958@whipjoy.com', function(resp, err){ - try { - expect(resp).not.toBeNull() - expect(err).toBeNull() - done() - } catch (error) { - done(error) - } - }) - }) - - it("returns a user from DB by ID", done => { - methods.getUserById(10, function(resp, err){ - try { - expect(resp).not.toBeNull() - expect(err).toBeNull() - done() - } catch (error) { - done(error) - } - }) - }) - - it("checks user email", done => { - methods.checkUserEmail("test@email.de", function(err, resp){ - try { - expect(resp).not.toBeNull() - expect(err).toBeNull() - done() - } catch (error) { - done(error) - } - }) - }) - - it("returns a user by token", done => { - methods.checkUserEmail("1abc0qwerty", function(err, resp){ // token = any alphanumeric - try { - expect(resp).not.toBeNull() - expect(err).toBeNull() - done() - } catch (error) { - done(error) - } - }) + it("returns a user from DB by email", async() => { + const user = await methods.getUserByEmail('litehon958@whipjoy.com') + expect(user).not.toBeNull() }) + it("returns a null user", async() => { + const user = await methods.getUserByEmail('jondoe@nowhere.com') // a non-exist user + expect(user).toBeNull() + }) + + it("returns a user's email", async() => { + const email = await methods.getUserEmailById(1) + expect(email).not.toBeNull() + }) + it("returns null instead of a user's email", async() => { + const email = await methods.getUserEmailById(1005) // no user has this ID + expect(email).toBeNull() + }) + + it("returns null from DB by token", async() => { + const user = await methods.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 methods.getVerificationTokenByUserId(1) + expect(token).toBeNull() + }) + + it("returns a user's ID, if any", async() => { + const token = await methods.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 methods.getGitlabId(1) + expect(id).not.toBeNull() + }) + + it("checks user email", async() => { + const user = await methods.checkUserEmail('litehon958@whipjoy.com') + expect(user).not.toBeNull() + }) + it("checks user email and return null", async() => { + const user = await methods.checkUserEmail('jondoe@nowhere.com') // a non-exist user + expect(user).toBeNull() + }) + }) diff --git a/functions/methods.js b/functions/methods.js index 722ca56be9fd1978ef25a0f74f004436f3b2b1d6..0037a7e143bab55cee0d9d48b71263818af86b5a 100644 --- a/functions/methods.js +++ b/functions/methods.js @@ -68,49 +68,51 @@ var methods = { getUserByEmail: async function(email) { try { let rows = await dbconn.user.promise().query('SELECT id, verificationStatus, salutation, title, firstname, lastname, industry, organisation, speciality, m4lab_idp FROM user WHERE email = "' +email+'"') - return rows[0][0] + if (rows[0][0]) { + return rows[0][0] + } + else { return null } } catch (err) { console.error(err) - return err } + return null }, - getUserById: function(userId, callback) { - dbconn_OBSOLETE.user.query('SELECT verificationStatus, email, salutation, title, firstname, lastname, industry, organisation, speciality FROM user WHERE id = ' +userId, function (err, rows, fields) { - let user - if (err) { throw err } - else { - if ( rows.length > 0) { - user = rows[0]; - } + getUserEmailById: async function(userId) { + try { + let rows = await dbconn.user.promise().query('SELECT email FROM user WHERE id = ' +userId) + if (rows[0][0]) { + return rows[0][0].email } - callback(user, err); - }); + else { return null } + } catch (err) { + console.error(err) + } + return null }, - checkUserEmail: function(email, callback) { - let user - dbconn_OBSOLETE.user.query('SELECT id, email FROM user WHERE email = "' +email+'"', function (err, rows) { - if (err) { throw err } - else { - if ( rows.length > 0) { - user = rows[0]; - } + checkUserEmail: async function(email) { + try { + let rows = await dbconn.user.promise().query('SELECT id, email FROM user WHERE email = "' +email+'"') + if (rows[0][0]) { + return rows[0][0] } - callback(err, user) - }); + else { return null } + } catch (err) { + console.error(err) + } + return null }, - getUserByToken: function(token, callback) { - let user - dbconn_OBSOLETE.user.query('SELECT t1.user_id, t2.email FROM userdb.credential AS t1 INNER JOIN userdb.user AS t2 ON t1.user_id = t2.id AND t1.resetPasswordToken = "' - +token+'" and resetPasswordExpires > '+Date.now(), function (err, rows, fields) { - if (err) { throw err } - else { - if ( rows.length > 0) { - user = rows[0] - } - } - callback(err, user) + getUserByToken: async function(token) { + try { + let rows = await dbconn.user.promise().query('SELECT t1.user_id, t2.email FROM userdb.credential AS t1 INNER JOIN userdb.user AS t2 ON t1.user_id = t2.id AND t1.resetPasswordToken = "' + +token+'" and resetPasswordExpires > '+Date.now()) + if (rows[0][0]) { + return rows[0][0] } - ) + else { return null } + } catch (err) { + console.error(err) + } + return null }, updateUserById: function(userData, callback) { dbconn_OBSOLETE.user.query('UPDATE user SET ? WHERE id = ' +userData.id, userData, function (err, rows, fields) { @@ -124,7 +126,7 @@ var methods = { callback(err) }) }, - getUserIdByEmail: function(email, callback) { + getUserIdByEmail_OBSOLETE: function(email, callback) { let userId dbconn_OBSOLETE.user.query('SELECT id FROM user WHERE email = "' +email+'"', function (err, rows, fields) { if (err) { @@ -138,7 +140,7 @@ var methods = { callback(userId, err) }); }, - getUserProjectRole: function(userId, callback) { + getUserProjectRole_OBSOLETE: function(userId, callback) { dbconn_OBSOLETE.user.query('SELECT project_id, role_id FROM user_project_role WHERE user_id = "' +userId+'"', function (err, rows, fields) { if (err) throw err callback(rows, err) @@ -150,31 +152,31 @@ var methods = { callback(err) }) }, - getVerificationTokenByUserId: function(userId, callback) { - let token - dbconn_OBSOLETE.user.query('SELECT token FROM verification WHERE user_id = "' +userId+'"', function (err, rows, fields) { - if (err) { - throw err - } - else { - if (rows.length > 0) { - token = rows[0].token - } + getVerificationTokenByUserId: async function(userId) { + try { + let rows = await dbconn.user.promise().query('SELECT token FROM verification WHERE user_id = "' +userId+'"') + if (rows[0][0]) { + return rows[0][0].token } - callback(token, err) - }) + else { return null } + } catch (err) { + console.error(err) + } + return null }, - getUserIdByVerificationToken: function(token, callback) { - let userId - dbconn_OBSOLETE.user.query('SELECT user_id FROM verification WHERE token = "' +token+'"', function (err, rows, fields) { - if (err) { - throw err + getUserIdByVerificationToken: async function(token) { + try { + let rows = await dbconn.user.promise().query('SELECT user_id FROM verification WHERE token = "' +token+'"') + if (rows[0][0]) { + return rows[0][0].user_id } - else if(rows[0]) { - userId = rows[0].user_id + else { + return null } - callback(userId, err) - }) + } catch (err) { + console.error(err) + } + return null }, verifyUserAccount: function(userData, callback) { dbconn_OBSOLETE.user.beginTransaction(function(err) { // START TRANSACTION diff --git a/routes/account.js b/routes/account.js index eb99e1fae75d320baf71d319b1e7fb9c69aa7c52..0f3b2fc7fb77929caa72ef75797173fcecfa3a4d 100644 --- a/routes/account.js +++ b/routes/account.js @@ -89,16 +89,20 @@ module.exports = function (app, config, passport, lang) { async function getLoggedInUserData(email) { let user = await methods.getUserByEmail(email) - let loggedInUser = new portalUser( - user.id, email, user.salutation, user.title, user.firstname, user.lastname, user.industry, user.organisation, user.speciality, user.m4lab_idp, null, user.verificationStatus - ) - - let userGitlabId = await methods.getGitlabId(loggedInUser.id) - if (userGitlabId) { - loggedInUser.setGitlabUserId(userGitlabId) + if (!user) { + console.log('no user found') + return null + } else { + let loggedInUser = new portalUser( + user.id, email, user.salutation, user.title, user.firstname, user.lastname, user.industry, user.organisation, user.speciality, user.m4lab_idp, null, user.verificationStatus + ) + + let userGitlabId = await methods.getGitlabId(loggedInUser.id) + if (userGitlabId) { + loggedInUser.setGitlabUserId(userGitlabId) + } + return loggedInUser } - - return loggedInUser } app.get('/', async function (req, res) { @@ -330,59 +334,39 @@ module.exports = function (app, config, passport, lang) { } }); - app.get("/resendVerificationEmail", function(req, res){ - if (req.isAuthenticated()) { - var emailAddress = req.user.email - - methods.getUserIdByEmail(req.user.email, function(userId, err) { - if (!err) { - // get token - methods.getVerificationTokenByUserId(userId, function(token, err){ - if (!err) { - if (token) { - // send email - var emailSubject = "Bitte bestätigen Sie Ihr M4_LAB Benutzerkonto" - var emailContent = '
vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart.
' +
- 'Um Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: ' + config.app.host + '/verifyAccount?token=' + token +
- '
' +
- 'Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.
vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart.
' +
+ 'Um Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: ' + config.app.host + '/verifyAccount?token=' + token +
+ '
' +
+ 'Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.
herzlich willkommen beim Transferportal der HFT Stuttgart!
' +
- 'Sie können nun alle Dienste des Portals nutzen.
herzlich willkommen beim Transferportal der HFT Stuttgart!
' +
+ 'Sie können nun alle Dienste des Portals nutzen.
wir haben Ihre Anfrage zur Erneuerung Ihres Passwortes erhalten. Falls Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese E-Mail.
' +
- 'Sie können Ihr Passwort mit dem Klick auf diesen Link ändern: '+config.app.host+'/reset/' + token + '
' +
- 'Dieser Link ist aus Sicherheitsgründen nur für 1 Stunde gültig.
wir haben Ihre Anfrage zur Erneuerung Ihres Passwortes erhalten. Falls Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese E-Mail.
' +
+ 'Sie können Ihr Passwort mit dem Klick auf diesen Link ändern: '+config.app.host+'/reset/' + token + '
' +
+ 'Dieser Link ist aus Sicherheitsgründen nur für 1 Stunde gültig.