@getjones/test-infra 2.8.14 → 2.8.15

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.8.14",
3
+ "version": "2.8.15",
4
4
  "description": "Providing internal and openapi interface",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -1,10 +1,9 @@
1
1
  const { getEnv, getSystemUserIdentity } = require('../../env');
2
+ const auditApi = require('../../saas/internal-api/compliance/api/audit/audit.api');
2
3
  const auditConfigs = require('../../defaults/configs/auditConfigs');
3
4
 
4
5
  const { credentials } = getEnv();
5
6
 
6
- const auditApi = require('../../saas/internal-api/compliance/api/audit/audit.api');
7
-
8
7
  const complianceStatuses = {
9
8
  complaint: 'complaint',
10
9
  notCompliant: 'notCompliant',
@@ -44,16 +43,16 @@ const getAuditMetadata = async (
44
43
  const isReauditResponse = await isReaudit(recordId, auditorContext);
45
44
  metadata.isReaudit = isReauditResponse.data.isReaudit;
46
45
 
47
- const recordDetailsResponse = await auditApi.getContractorDetailsForAudit(recordId, auditorContext);
48
- const { vendorDetails } = recordDetailsResponse.data;
46
+ const recordDetailsResponse = await auditApi.getAuditRecordModel(recordId, auditorContext);
47
+ const recordDetails = recordDetailsResponse.data;
49
48
 
50
- metadata.certificateId = vendorDetails.certificateDetails.certificateuploadId;
49
+ metadata.certificateId = recordDetails.certificateDetails.certificateuploadId;
51
50
  metadata.auditDates = {
52
51
  contractorId: recordId,
53
- contractorDateModified: vendorDetails.dateModified,
52
+ contractorDateModified: recordDetails.dateModified,
54
53
  dateStartedAudit: recordDetailsResponse.dateStartedAudit,
55
- contractorOverrideDateModified: vendorDetails.contractorOverrideDateModified,
56
- contractCreateDate: vendorDetails.contractCreateDate
54
+ contractorOverrideDateModified: recordDetails.contractorOverrideDateModified,
55
+ contractCreateDate: recordDetails.contractCreateDate
57
56
  };
58
57
 
59
58
  metadata.auditorId = await getAuditorId();
@@ -7,6 +7,7 @@ const formats = {
7
7
  dayMonthYear: 'DD/MM/YYYY',
8
8
  numericMonthDayYear: 'MM/DD/YYYY',
9
9
  monthDayYear: 'MMM DD, YYYY',
10
+ monthDYear: 'MMM D, YYYY',
10
11
  monthDayYear_noZeroPrefix: 'MMM D, YYYY',
11
12
  dateTime: 'YYYY/MM/DD-hh:mm:ss',
12
13
  fullMonthDayYear: 'MMMM DD, YYYY',
@@ -24,7 +25,9 @@ const peroids = {
24
25
  };
25
26
 
26
27
  const getOneYearAgoDate = format => moment().utc().subtract(1, peroids.years).format(format || formats.threadScheduler);
28
+ const getTwoHundredDaysAgoDate = format => moment().utc().subtract(200, peroids.days).format(format || formats.threadScheduler);
27
29
  const getSixMonthAgoDate = format => moment().utc().subtract(6, peroids.months).format(format || formats.threadScheduler);
30
+ const getFortyFiveDaysAgoDate = format => moment().utc().subtract(45, peroids.days).format(format || formats.threadScheduler);
28
31
  const getOneMonthAgoDate = format => moment().utc().subtract(1, peroids.months).format(format || formats.threadScheduler);
29
32
  const getFifteenDaysAgoDate = format => moment().utc().subtract(15, peroids.days).format(format || formats.threadScheduler);
30
33
  const getTenDaysAgoDate = format => moment().utc().subtract(10, peroids.days).format(format || formats.threadScheduler);
@@ -46,31 +49,6 @@ const getLogTimestamp = () => {
46
49
  return moment().format(formats.logTimeStampFormat);
47
50
  };
48
51
 
49
- const getCurrentFormattedDate = () => {
50
- return new Date().toISOString();
51
- };
52
-
53
- const getDateWithOffset = (date, offsetInDays) => {
54
- date.setDate(date.getDate() + offsetInDays);
55
- return date;
56
- };
57
-
58
- const getAuditDateFormat = date => {
59
- const year = date.getUTCFullYear();
60
- const month = date.getUTCMonth() + 1; //getMonth is zero-based
61
- const day = date.getUTCDate();
62
-
63
- return `${month}/${day}/${year}`;
64
- };
65
-
66
- const getYearMonthDayFormat = date => {
67
- const year = date.getUTCFullYear();
68
- const month = String(date.getUTCMonth() + 1).length === 1 ? `0${(date.getUTCMonth() + 1)}` : (date.getUTCMonth() + 1);
69
- const day = String(date.getUTCDate()).length === 1 ? `0${date.getUTCDate()}` : date.getUTCDate();
70
-
71
- return `${year}-${month}-${day}`;
72
- };
73
-
74
52
  const extractDateFromDateTime = date => {
75
53
  let extractedDate = date;
76
54
 
@@ -140,7 +118,9 @@ const convertDateToLongInt = value => {
140
118
  module.exports = {
141
119
  formats,
142
120
  getOneYearAgoDate,
121
+ getTwoHundredDaysAgoDate,
143
122
  getSixMonthAgoDate,
123
+ getFortyFiveDaysAgoDate,
144
124
  getOneMonthAgoDate,
145
125
  getFifteenDaysAgoDate,
146
126
  getTenDaysAgoDate,
@@ -159,10 +139,6 @@ module.exports = {
159
139
  getInvitationDatesForNotResponsiveTenant,
160
140
  getAutomaticRenewalsExpirationDates,
161
141
  getLogTimestamp,
162
- getCurrentFormattedDate,
163
- getAuditDateFormat,
164
- getDateWithOffset,
165
- getYearMonthDayFormat,
166
142
  getDayInMilliseconds,
167
143
  extractDateFromDateTime,
168
144
  getPreviousDateByDays,
@@ -3,17 +3,22 @@ const { backendUrl } = require('../../../../../env').getEnv();
3
3
 
4
4
  const Endpoints = {
5
5
  auditorContractorList: `${backendUrl}/saas/auditor/contractors`,
6
- preAudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/master-audit`,
7
6
  audit: `${backendUrl}/saas/auditor/contractors/submit/audits`,
8
- contractorDetailsForAudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/master-audit`,
7
+ enterAudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/master-audit`,
8
+ getAuditRecordModelByRecordId: recordId => `${backendUrl}/saas/auditor/record/${recordId}/audit-record`,
9
9
  requirementDetailsForAudit: contractorId => `${backendUrl}/saas/auditor/contractor/${contractorId}/requirement`,
10
10
  isReaudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/isreaudit`,
11
11
  revertCoi: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/coi/revert`,
12
- wrongCoi: `${backendUrl}/saas/coi/wrong-coi`
12
+ wrongCoi: `${backendUrl}/saas/coi/wrong-coi`,
13
+ getAudit: recordId => `${backendUrl}/saas/audit/${recordId}`
13
14
  };
14
15
 
15
16
  const audit = async (contractorId, auditRequestModel, context) => {
16
- await requests.getRequestHandler(Endpoints.preAudit(contractorId), {}, context);
17
+ await enterAudit(contractorId, {}, context);
18
+ return submitAudit(auditRequestModel, context);
19
+ };
20
+
21
+ const submitAudit = async (auditRequestModel, context) => {
17
22
  return requests.postRequestHandler(Endpoints.audit, auditRequestModel, context);
18
23
  };
19
24
 
@@ -29,14 +34,22 @@ const getAuditorContractorList = (auditListParametersModel, context) => {
29
34
  return requests.postRequestHandler(Endpoints.auditorContractorList, auditListParametersModel, context);
30
35
  };
31
36
 
32
- const getContractorDetailsForAudit = (contractorId, context) => {
33
- return requests.getRequestHandler(Endpoints.contractorDetailsForAudit(contractorId), {}, context);
37
+ const enterAudit = (contractorId, context) => {
38
+ return requests.getRequestHandler(Endpoints.enterAudit(contractorId), {}, context);
39
+ };
40
+
41
+ const getAuditRecordModel = (recordId, context) => {
42
+ return requests.getRequestHandler(Endpoints.getAuditRecordModelByRecordId(recordId), {}, context);
34
43
  };
35
44
 
36
45
  const getRequirementDetailsForAudit = (contractorId, context) => {
37
46
  return requests.getRequestHandler(Endpoints.requirementDetailsForAudit(contractorId), {}, context);
38
47
  };
39
48
 
49
+ const getAuditByRecordId = (recordId, context, { isRecordDeleted } = {}) => {
50
+ return requests.getRequestHandler(Endpoints.getAudit(recordId), { isRecordDeleted }, context);
51
+ };
52
+
40
53
  const wrongCoi = (recordId, context) => {
41
54
  const params = { contractorId: recordId };
42
55
  return requests.getRequestHandler(Endpoints.wrongCoi, params, context);
@@ -44,10 +57,13 @@ const wrongCoi = (recordId, context) => {
44
57
 
45
58
  module.exports = {
46
59
  audit,
60
+ submitAudit,
47
61
  revertCoi,
48
62
  wrongCoi,
49
63
  isReaudit,
50
64
  getAuditorContractorList,
51
- getContractorDetailsForAudit,
52
- getRequirementDetailsForAudit
65
+ enterAudit,
66
+ getAuditRecordModel,
67
+ getRequirementDetailsForAudit,
68
+ getAuditByRecordId
53
69
  };
@@ -11,6 +11,11 @@ const audit = (auditRequestModel, context) => {
11
11
  return auditApi.audit(auditRequestModel.auditData.contractorId, auditRequestModel, context);
12
12
  };
13
13
 
14
+ const submitAudit = (auditRequestModel, context) => {
15
+ validateType(auditRequestModel, AuditRequestModel);
16
+ return auditApi.submitAudit(auditRequestModel, context);
17
+ };
18
+
14
19
  const revertCoi = (contractorId, dateModified, context) => {
15
20
  const dateModifiedObj = { dateModified };
16
21
  return auditApi.revertCoi(contractorId, dateModifiedObj, context);
@@ -29,8 +34,12 @@ const getAuditorContractorList = (auditListParametersModel, context) => {
29
34
  return auditApi.getAuditorContractorList(auditListParametersModel, context);
30
35
  };
31
36
 
32
- const getContractorDetailsForAudit = (contractorId, context) => {
33
- return auditApi.getContractorDetailsForAudit(contractorId, context);
37
+ const enterAudit = (contractorId, context) => {
38
+ return auditApi.enterAudit(contractorId, context);
39
+ };
40
+
41
+ const getAuditRecordModel = (recordId, context) => {
42
+ return auditApi.getAuditRecordModel(recordId, context);
34
43
  };
35
44
 
36
45
  const getRequirementDetailsForAudit = (contractorId, context) => {
@@ -61,6 +70,10 @@ const getAuditMetadata = async (
61
70
  );
62
71
  };
63
72
 
73
+ const getAuditByRecordId = async (recordId, context, { isRecordDeleted } = {}) => {
74
+ return auditApi.getAuditByRecordId(recordId, context, { isRecordDeleted });
75
+ };
76
+
64
77
  const getAuditEntities = async (recordId, auditData, auditorContext) => {
65
78
  const requirementDetailsForAuditResponse = await getRequirementDetailsForAudit(recordId, auditorContext);
66
79
  const requirement = requirementDetailsForAuditResponse.data;
@@ -137,14 +150,17 @@ const auditRecord = async function(
137
150
 
138
151
  module.exports = {
139
152
  audit,
153
+ submitAudit,
140
154
  revertCoi,
141
155
  isReaudit,
142
156
  wrongCoi,
143
157
  getAuditorContractorList,
144
- getContractorDetailsForAudit,
158
+ enterAudit,
145
159
  getRequirementDetailsForAudit,
160
+ getAuditRecordModel,
146
161
  getAuditEntities,
147
162
  getAuditMetadata,
163
+ getAuditByRecordId,
148
164
  getAuditRequestModel,
149
165
  auditRecord
150
166
  };
@@ -2,10 +2,24 @@ const requests = require('../../../../../common/requests/cookieAuth/requests');
2
2
  const { backendUrl } = require('../../../../../env').getEnv();
3
3
 
4
4
  const Endpoints = {
5
+ waive: contractorId => `${backendUrl}/saas/contractors/${contractorId}/waiver`,
6
+ retract: contractorId => `${backendUrl}/saas/contractors/${contractorId}/waiver`,
5
7
  overrideGap: `${backendUrl}/saas/record/override-gap`,
6
8
  retractOverride: `${backendUrl}/saas/record/retract-override`
7
9
  };
8
10
 
11
+ const waive = async (contractorId, waiveRequestModel, context) => {
12
+ const status = waiveRequestModel.status;
13
+ delete waiveRequestModel.status;
14
+ return requests.postRequestHandler(Endpoints.waive(contractorId), waiveRequestModel, context, {}, { status });
15
+ };
16
+
17
+ const retract = async (contractorId, retractRequestModel, context) => {
18
+ const status = retractRequestModel.status;
19
+ delete retractRequestModel.status;
20
+ return requests.postRequestHandler(Endpoints.retract(contractorId), retractRequestModel, context, {}, { status });
21
+ };
22
+
9
23
  const overrideGap = ({ waiveRequestModel, isTestingBackwardCompatibility = false, context }) => {
10
24
  const headers = {};
11
25
  const params = { isTestingBackwardCompatibility };
@@ -16,4 +30,4 @@ const retractOverride = (retractRequestModel, context) => {
16
30
  return requests.postRequestHandler(Endpoints.retractOverride, retractRequestModel, context);
17
31
  };
18
32
 
19
- module.exports = { overrideGap, retractOverride };
33
+ module.exports = { waive, retract, overrideGap, retractOverride };
@@ -9,6 +9,16 @@ const httpResponseStatusCodes = require('../../../../../common/httpResponseStatu
9
9
  const { credentials } = env.getEnv();
10
10
  const userTypes = require('../../../../../common/consts/userTypes');
11
11
 
12
+ const waive = (waiveRequestModel, context) => {
13
+ validateType(waiveRequestModel, WaiveRequestModel);
14
+ return overrideGapApi.waive(waiveRequestModel.contractorId, waiveRequestModel, context);
15
+ };
16
+
17
+ const retract = (retractRequestModel, context) => {
18
+ validateType(retractRequestModel, RetractRequestModel);
19
+ return overrideGapApi.retract(retractRequestModel.contractorId, retractRequestModel, context);
20
+ };
21
+
12
22
  const overrideGap = ({ waiveRequestModel, isTestingBackwardCompatibility = false, context }) => {
13
23
  validateType(waiveRequestModel, WaiveRequestModel);
14
24
  return overrideGapApi.overrideGap({ waiveRequestModel, isTestingBackwardCompatibility, context });
@@ -119,8 +129,10 @@ const acceptAll = async (record, context, { note = 'ACCEPTED AUTOMATICALLY' } =
119
129
  };
120
130
 
121
131
  module.exports = {
132
+ waive,
122
133
  waiveAll,
123
134
  acceptAll,
135
+ retract,
124
136
  getWaiveModel,
125
137
  getRetractModel,
126
138
  getWaiveModelByGap,
@@ -60,6 +60,23 @@ const ATTRIBUTE_NAMES_MAP = {
60
60
  signature: 'signature'
61
61
  };
62
62
 
63
+ const auditTriggerType = {
64
+ newAudit: 'NEW_AUDIT',
65
+ changeRequirements: 'CHANGE_REQUIREMENTS',
66
+ updateRequirements: 'UPDATE_REQUIREMENTS',
67
+ updateRequirementsWithNotifications: 'ENTITY_CHANGED',
68
+ gaps: 'GAPS',
69
+ renewal: 'RENEWAL'
70
+ };
71
+
72
+ const auditStatus = {
73
+ pending: 'PENDING',
74
+ inProgress: 'IN_PROGRESS',
75
+ onHold: 'ON_HOLD',
76
+ done: 'DONE',
77
+ canceled: 'CANCELED'
78
+ };
79
+
63
80
  module.exports = {
64
81
  DEFAULT_POLICY_ID,
65
82
  POLICY_NAMES_MAP,
@@ -67,5 +84,7 @@ module.exports = {
67
84
  COI_AUDIT_STATUSES,
68
85
  AUDITOR_ROLE,
69
86
  AUDIT_ENTITY_STATUSES,
70
- VALID_SCORES
87
+ VALID_SCORES,
88
+ auditTriggerType,
89
+ auditStatus
71
90
  };
@@ -5,6 +5,7 @@ const { validateType } = require('../../../../common/validations/typeValidations
5
5
  const { RecordModifyDateVerificationModel } = require('../models/verification.contractor.model');
6
6
  const { AssignRequirementModel } = require('../models/assign.requirement.model');
7
7
  const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
8
+ const { waitFor } = require('../../../../common/utils/timeUtils');
8
9
 
9
10
  const createContractor = async (createContractorModel, context) => {
10
11
  validateType(createContractorModel, CreateContractorModel);
@@ -117,8 +118,14 @@ const deleteAllRecordsInAccount = async (accountId, context, { activationStatus
117
118
  const response = await deleteByContractorId(record.id, context);
118
119
 
119
120
  if (response.status !== httpResponseStatusCodes.NO_CONTENT) {
120
- console.error('Failed to delete record: ', record.company);
121
- failed.push(response);
121
+ console.error(`Failed to delete record: ${record.company}, retrying...`);
122
+ waitFor(1000);
123
+ const try2response = await deleteByContractorId(record.id, context);
124
+
125
+ if (try2response.status !== httpResponseStatusCodes.NO_CONTENT) {
126
+ console.error(`Failed to delete record: ${record.company} second time.`);
127
+ failed.push(response);
128
+ }
122
129
  }
123
130
  }
124
131
 
@@ -119,21 +119,22 @@ const getLastMessage = async (
119
119
  return newestResult;
120
120
  };
121
121
 
122
- const waitForMail = async (emailModel, maxSecondToWait) => {
123
- let isNotSend = true;
122
+ const waitForMail = async (emailModel, { maxSecondToWait = 30 } = {}) => {
123
+ let isFound = false;
124
124
  const oneSecondInMilliseconds = 1000;
125
125
  let timeFromTheStart = 0;
126
126
  const started = new Date();
127
- let sendMails;
127
+ let foundMails;
128
128
 
129
- while (isNotSend && timeFromTheStart < maxSecondToWait) {
130
- ({ data: sendMails } = await getAllMessages(emailModel));
131
- isNotSend = sendMails.length === 0;
129
+ while (!isFound && timeFromTheStart < maxSecondToWait) {
130
+ ({ data: foundMails } = await getAllMessages(emailModel));
131
+ isFound = foundMails.length > 0;
132
132
  const now = new Date();
133
133
  timeFromTheStart = (now - started) / oneSecondInMilliseconds;
134
+ await timeUtils.waitFor(3).seconds;
134
135
  }
135
136
 
136
- return sendMails;
137
+ return foundMails;
137
138
  };
138
139
 
139
140
  module.exports = {