@getjones/test-infra 2.7.0 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getjones/test-infra",
3
- "version": "2.7.0",
3
+ "version": "2.7.1",
4
4
  "description": "Providing internal and openapi interface",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -1,5 +1,7 @@
1
1
  const records = require('./records/records');
2
+ const users = require('./users/users');
2
3
 
3
4
  module.exports = {
4
- records
5
+ records,
6
+ users
5
7
  };
@@ -0,0 +1,79 @@
1
+ const { getEnv } = require('../../env');
2
+ const httpResponseStatusCodes = require('../../common/httpResponseStatusCodes.json');
3
+
4
+ const { credentials } = getEnv();
5
+
6
+ const users = require('../../saas/internal-api/users');
7
+ const { InviteUserModel } = users.models;
8
+
9
+ const defaultsPassword = credentials.strongPassword;
10
+ const roles = {
11
+ readOnly: 'Read-only',
12
+ inviter: 'Inviter',
13
+ cm: 'Compliance Manager'
14
+ };
15
+
16
+ const generateFullName = role => `${role} User`;
17
+
18
+ const inviteSaasUser = async (username, role, projectIds, context) => {
19
+ const userResponse = await users.services.getUserByEmail(username, context);
20
+
21
+ if (userResponse.data && userResponse.data.subuserId) {
22
+ return;
23
+ }
24
+
25
+ const inviteUserModel = new InviteUserModel(username, role, projectIds, context);
26
+ const inviteResponse = await users.services.inviteUser([inviteUserModel], context);
27
+
28
+ if (inviteResponse.status !== httpResponseStatusCodes.NO_CONTENT) {
29
+ throw new Error(`Failed to invite user with email: ${username}\n${inviteResponse}`);
30
+ }
31
+ };
32
+
33
+ const signupSaasUser = async (username, role, context) => {
34
+ const userResponse = await users.services.getUserByEmail(username, context);
35
+
36
+ //Already signup user
37
+ if (userResponse.data.isVerified) {
38
+ return;
39
+ }
40
+
41
+ const signupUserModel = await users.util.getSignupUserModel(username, role, generateFullName(role), defaultsPassword, context);
42
+ const signupResponse = await users.services.signupUser(signupUserModel, context);
43
+
44
+ if (signupResponse.status !== httpResponseStatusCodes.OK) {
45
+ throw new Error(`Failed to invite ${role} user with email: ${username}\n${signupResponse}`);
46
+ }
47
+ };
48
+
49
+ const prepareUser = async (username, role, projectIds, context, { signup = true } = {}) => {
50
+ await inviteSaasUser(username, role, projectIds, context);
51
+
52
+ signup && await signupSaasUser(username, role, context);
53
+
54
+ const userResponse = await users.services.getUserByEmail(username, context);
55
+
56
+ if (userResponse.status !== httpResponseStatusCodes.OK) {
57
+ throw new Error(`Failed to prepare ${role} user with email: ${username}\n${userResponse}`);
58
+ }
59
+
60
+ return userResponse.data;
61
+ };
62
+
63
+ const prepareComplianceManagerUser = (username, projectIds, context, { signup } = {}) => {
64
+ return prepareUser(username, roles.cm, projectIds, context, { signup });
65
+ };
66
+
67
+ const prepareInviterUser = (username, projectIds, context, { signup } = {}) => {
68
+ return prepareUser(username, roles.inviter, projectIds, context, { signup });
69
+ };
70
+
71
+ const prepareReadOnlyUser = (username, projectIds, context, { signup } = {}) => {
72
+ return prepareUser(username, roles.readOnly, projectIds, context, { signup });
73
+ };
74
+
75
+ module.exports = {
76
+ prepareComplianceManagerUser,
77
+ prepareInviterUser,
78
+ prepareReadOnlyUser
79
+ };
@@ -7,7 +7,8 @@ const Endpoints = {
7
7
  audit: `${backendUrl}/saas/auditor/contractors/submit/audits`,
8
8
  contractorDetailsForAudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/master-audit`,
9
9
  requirementDetailsForAudit: contractorId => `${backendUrl}/saas/auditor/contractor/${contractorId}/requirement`,
10
- isReaudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/isreaudit`
10
+ isReaudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/isreaudit`,
11
+ revertCoi: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/coi/revert`
11
12
  };
12
13
 
13
14
  const audit = async (contractorId, auditRequestModel, context) => {
@@ -15,6 +16,10 @@ const audit = async (contractorId, auditRequestModel, context) => {
15
16
  return requests.postRequestHandler(Endpoints.audit, auditRequestModel, context);
16
17
  };
17
18
 
19
+ const revertCoi = (contractorId, dateModified, context) => {
20
+ return requests.postRequestHandler(Endpoints.revertCoi(contractorId), dateModified, context);
21
+ };
22
+
18
23
  const isReaudit = (contractorId, context) => {
19
24
  return requests.getRequestHandler(Endpoints.isReaudit(contractorId), {}, context);
20
25
  };
@@ -33,6 +38,7 @@ const getRequirementDetailsForAudit = (contractorId, context) => {
33
38
 
34
39
  module.exports = {
35
40
  audit,
41
+ revertCoi,
36
42
  isReaudit,
37
43
  getAuditorContractorList,
38
44
  getContractorDetailsForAudit,
@@ -11,6 +11,10 @@ const audit = (auditRequestModel, context) => {
11
11
  return auditApi.audit(auditRequestModel.auditData.contractorId, auditRequestModel, context);
12
12
  };
13
13
 
14
+ const revertCoi = (contractorId, dateModified, context) => {
15
+ return auditApi.revertCoi(contractorId, dateModified, context);
16
+ };
17
+
14
18
  const isReaudit = (contractorId, context) => {
15
19
  return complianceUtil.isReaudit(contractorId, context);
16
20
  };
@@ -127,6 +131,7 @@ const auditRecord = async function(
127
131
 
128
132
  module.exports = {
129
133
  audit,
134
+ revertCoi,
130
135
  isReaudit,
131
136
  getAuditorContractorList,
132
137
  getContractorDetailsForAudit,
@@ -7,11 +7,12 @@ const EMAIL_TYPES = {
7
7
  FIRST_REMINDER: 'firstReminder',
8
8
  SECOND_REMINDER: 'secondReminder',
9
9
  FINAL_REMINDER: 'finalReminder',
10
- ABOUT_TO_EXPIRE_MONTH: 'aboutToExpireMonth',
11
- ABOUT_TO_EXPIRE_TWO_WEEKS: 'aboutToExpireTwoWeeks',
12
- ABOUT_TO_EXPIRE_WEEK: 'aboutToExpireWeek',
13
- SAME_DAY_EXPIRATION_RECORD: 'sameDayExpirationRecord',
14
- SAME_DAY_EXPIRATION_PM: 'sameDayExpirationPM',
10
+ ABOUT_TO_EXPIRE_PM: 'aboutToExpirePM',
11
+ ABOUT_TO_EXPIRE_MONTH_AUTO_RENEWAL: 'aboutToExpireMonthAutoRenewal',
12
+ ABOUT_TO_EXPIRE_TWO_WEEKS_AUTO_RENEWAL: 'aboutToExpireTwoWeeksAutoRenewal',
13
+ ABOUT_TO_EXPIRE_WEEK_AUTO_RENEWAL: 'aboutToExpireWeekAutoRenewal',
14
+ SAME_DAY_EXPIRATION_RECORD_AUTO_RENEWAL: 'sameDayExpirationRecordAutoRenewal',
15
+ SAME_DAY_EXPIRATION_PM_AUTO_RENEWAL: 'sameDayExpirationPMAutoRenewal',
15
16
  REQUIREMENTS_UPDATED_NOTIFICATION: 'requirementsUpdatedNotification',
16
17
  UPDATE_REQUIREMENTS_PREFIX: 'updatedRequirementsSubjectPrefix'
17
18
  };
@@ -23,11 +24,12 @@ const EMAIL_SUBJECT = {
23
24
  firstReminder: ({ requesterName }) => `We are still awaiting the Insurance Docs for ${requesterName}`,
24
25
  secondReminder: ({ requesterName }) => `We are still awaiting the Insurance Docs for ${requesterName}`,
25
26
  finalReminder: ({ recordCompanyName, requesterName }) => `Missing ${recordCompanyName}'s Insurance Docs for ${requesterName}`,
26
- aboutToExpireMonth: ({ requesterName }) => `Your COI for ${requesterName} expires in 30 days`,
27
- aboutToExpireTwoWeeks: ({ requesterName }) => `Your COI for ${requesterName} expires in 14 days`,
28
- aboutToExpireWeek: ({ requesterName }) => `Only 7 days! Your COI for ${requesterName} expires`,
29
- sameDayExpirationRecord: ({ requesterName }) => `Your COI for ${requesterName} expires TODAY`,
30
- sameDayExpirationPM: ({ recordCompanyName }) => `COI expired for ${recordCompanyName} at`,
27
+ aboutToExpirePM: ({ recordCompanyName }) => `Insurance Policy of ${recordCompanyName} expires Soon`,
28
+ aboutToExpireMonthAutoRenewal: ({ requesterName }) => `Your COI for ${requesterName} expires in 30 days`,
29
+ aboutToExpireTwoWeeksAutoRenewal: ({ requesterName }) => `Your COI for ${requesterName} expires in 14 days`,
30
+ aboutToExpireWeekAutoRenewal: ({ requesterName }) => `Only 7 days! Your COI for ${requesterName} expires`,
31
+ sameDayExpirationRecordAutoRenewal: ({ requesterName }) => `Your COI for ${requesterName} expires TODAY`,
32
+ sameDayExpirationPMAutoRenewal: ({ recordCompanyName }) => `COI expired for ${recordCompanyName} at`,
31
33
  requirementsUpdatedNotification: ({ requesterName }) => `Updated Requirements - Your Insurance Docs are needed for ${requesterName}`,
32
34
  updatedRequirementsSubjectPrefix: () => 'Updated Requirements - '
33
35
  };
@@ -65,6 +65,11 @@ const deleteByRequirementId = (requirementId, context) => {
65
65
 
66
66
  const deleteRequirementByName = async (requirementName, tabId, context) => {
67
67
  const requirementToDelete = await getRequirementByName(tabId, requirementName, context);
68
+
69
+ if (!requirementToDelete) {
70
+ return;
71
+ }
72
+
68
73
  return deleteByRequirementId(requirementToDelete.id, context);
69
74
  };
70
75
 
@@ -1,4 +1,5 @@
1
1
  const models = require('./models/users.model');
2
2
  const services = require('./api/users.service');
3
+ const util = require('./utils/util');
3
4
 
4
- module.exports = { services, models };
5
+ module.exports = { services, models, util };
@@ -1,8 +1,14 @@
1
1
  const { SignupUserModel } = require('../models/users.model');
2
2
  const usersApi = require('../api/users.api');
3
+ const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
3
4
 
4
5
  const getUserEncryptedData = async (email, role, context) => {
5
6
  const response = await usersApi.getUserEncryptedData(email, role, context);
7
+
8
+ if (response.status !== httpResponseStatusCodes.OK) {
9
+ throw new Error(`Failed to retrieve user: ${email} encrypted data\n${response}`);
10
+ }
11
+
6
12
  return response.data;
7
13
  };
8
14