Skip to content

Commit ab14ab8

Browse files
authored
test(core) unit tests for user service (EWC-383) (#478)
1 parent 3672eb7 commit ab14ab8

File tree

3 files changed

+706
-30
lines changed

3 files changed

+706
-30
lines changed

src/helpers/app-helper.js

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,7 @@ const findAvailablePort = async function (hostname) {
7878
}
7979
let portBounds = portRange.split("-").map(i => parseInt(i));
8080
return await portscanner.findAPortNotInUse(portBounds[0], portBounds[1], hostname);
81-
}
82-
83-
/**
84-
* @desc generates a random String of the size specified by the input param
85-
* @param Integer - size
86-
* @return String - returns random string
87-
*/
81+
};
8882

8983
function isFileExists(filePath) {
9084
if (path.extname(filePath).indexOf(".") >= 0) {
@@ -109,7 +103,7 @@ function isValidDomain(domain) {
109103
}
110104

111105
const isValidPublicIP = function (publicIP) {
112-
let re = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$|^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;
106+
const re = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$|^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;
113107
return re.test(publicIP);
114108
};
115109

@@ -142,7 +136,7 @@ function deleteUndefinedFields(obj) {
142136
} else if (obj[fld] instanceof Object) {
143137
obj[fld] = deleteUndefinedFields(obj[fld])
144138
}
145-
})
139+
});
146140

147141
return obj
148142
}
@@ -191,11 +185,11 @@ function trimCertificate(cert) {
191185
function validateParameters(command, commandDefinitions, args) {
192186
// 1st argument = command
193187
args.shift();
194-
188+
195189
const possibleAliasesList = _getPossibleAliasesList(command, commandDefinitions);
196190
const possibleArgsList = _getPossibleArgsList(command, commandDefinitions);
197191

198-
for (let arg of args) {
192+
for (const arg of args) {
199193
// arg is [argument, alias, value]
200194

201195
if (arg.startsWith("--")) { // argument
@@ -272,8 +266,8 @@ function isTest() {
272266
}
273267

274268
function isEmpty(obj) {
275-
for(let key in obj) {
276-
if(obj.hasOwnProperty(key))
269+
for (const key in obj) {
270+
if (obj.hasOwnProperty(key))
277271
return false;
278272
}
279273
return true;

src/services/user-service.js

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,18 @@ const Errors = require('../helpers/errors');
1919
const ErrorMessages = require('../helpers/error-messages');
2020
const Config = require('../config');
2121
const ioFogManager = require('../sequelize/managers/iofog-manager');
22-
2322
const emailActivationTemplate = require('../views/email-activation-temp');
2423
const emailRecoveryTemplate = require('../views/email-temp');
2524
const emailResetTemplate = require('../views/reset-password-temp');
2625
const EmailActivationCodeService = require('./email-activation-code-service');
27-
2826
const AccessTokenService = require('./access-token-service');
29-
3027
const TransactionDecorator = require('../decorators/transaction-decorator');
31-
3228
const Validator = require('../schemas');
3329

34-
const createUser = async function (user, transaction) {
35-
return await UserManager.create(user, transaction)
36-
};
37-
3830
const signUp = async function (user, isCLI, transaction) {
39-
4031
let isEmailActivationEnabled = Config.get("Email:ActivationEnabled");
4132

4233
if (isEmailActivationEnabled) {
43-
4434
const newUser = await _handleCreateUser(user, isEmailActivationEnabled, transaction);
4535

4636
const activationCodeData = await EmailActivationCodeService.generateActivationCode(transaction);
@@ -56,7 +46,6 @@ const signUp = async function (user, isCLI, transaction) {
5646
};
5747

5848
const login = async function (credentials, isCLI, transaction) {
59-
6049
const user = await UserManager.findOne({
6150
email: credentials.email
6251
}, transaction);
@@ -138,7 +127,7 @@ const logout = async function (user, isCLI, transaction) {
138127
return await AccessTokenService.removeAccessTokenByUserId(user.id, transaction)
139128
};
140129

141-
const updateDetails = async function (user, profileData, isCLI, transaction) {
130+
const updateUserDetails = async function (user, profileData, isCLI, transaction) {
142131
if (isCLI) {
143132
await Validator.validate(profileData, Validator.schemas.updateUserProfileCLI);
144133
} else {
@@ -147,7 +136,7 @@ const updateDetails = async function (user, profileData, isCLI, transaction) {
147136

148137
const password = (profileData.password) ? AppHelper.encryptText(profileData.password, user.email) : undefined;
149138

150-
const updateObject = isCLI ?
139+
let updateObject = isCLI ?
151140
{
152141
firstName: profileData.firstName,
153142
lastName: profileData.lastName,
@@ -159,7 +148,7 @@ const updateDetails = async function (user, profileData, isCLI, transaction) {
159148
lastName: profileData.lastName
160149
};
161150

162-
AppHelper.deleteUndefinedFields(updateObject);
151+
updateObject = AppHelper.deleteUndefinedFields(updateObject);
163152

164153
await UserManager.updateDetails(user, updateObject, transaction);
165154

@@ -171,7 +160,6 @@ const updateDetails = async function (user, profileData, isCLI, transaction) {
171160
};
172161

173162
const deleteUser = async function (force, user, isCLI, transaction) {
174-
175163
if (!force) {
176164
const ioFogArray = await ioFogManager.findAll({
177165
userId: user.id
@@ -321,7 +309,7 @@ async function _handleCreateUser(user, isEmailActivationEnabled, transaction) {
321309

322310
async function _createNewUser(user, isEmailActivationEnabled, transaction) {
323311
user.emailActivated = !isEmailActivationEnabled;
324-
return await createUser(user, transaction)
312+
return await UserManager.create(user, transaction);
325313
}
326314

327315
async function _notifyUserAboutActivationCode(email, url, emailSenderData, activationCodeData, transporter) {
@@ -390,7 +378,7 @@ module.exports = {
390378
resendActivation: TransactionDecorator.generateTransaction(resendActivation),
391379
activateUser: TransactionDecorator.generateTransaction(activateUser),
392380
logout: TransactionDecorator.generateTransaction(logout),
393-
updateUserDetails: TransactionDecorator.generateTransaction(updateDetails),
381+
updateUserDetails: TransactionDecorator.generateTransaction(updateUserDetails),
394382
deleteUser: TransactionDecorator.generateTransaction(deleteUser),
395383
updateUserPassword: TransactionDecorator.generateTransaction(updateUserPassword),
396384
resetUserPassword: TransactionDecorator.generateTransaction(resetUserPassword),

0 commit comments

Comments
 (0)