@getjones/test-infra 2.7.11 → 2.7.13
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 +1 -1
- package/src/factory/records/records.js +1 -1
- package/src/saas/internal-api/compliance/api/overrideGap/override.gap.api.js +5 -19
- package/src/saas/internal-api/compliance/api/overrideGap/override.gap.service.js +34 -28
- package/src/saas/internal-api/compliance/consts/overrideGap.js +10 -0
- package/src/saas/internal-api/compliance/index.js +4 -2
- package/src/saas/internal-api/compliance/models/overrideGap/override.gap.model.js +16 -0
- package/src/saas/internal-api/compliance/models/overrideGap/retract.override.gap.model.js +14 -0
- package/src/saas/internal-api/compliance/utils/auditUtil.js +4 -4
- package/src/saas/internal-api/compliance/models/waive/waive.model.js +0 -49
package/package.json
CHANGED
|
@@ -113,7 +113,7 @@ const prepareWaivedRecord = async (recordCompany, recordEmail, tabId, requiremen
|
|
|
113
113
|
const recordId = await prepareRecord(recordCompany, recordEmail, complianceStatuses.notCompliant, tabId, requirementId, context);
|
|
114
114
|
|
|
115
115
|
const { data: record } = await contractors.services.getContractorById(recordId, context);
|
|
116
|
-
await compliance.services.overrideGap.
|
|
116
|
+
await compliance.services.overrideGap.waiveAllGaps(record, context);
|
|
117
117
|
|
|
118
118
|
return recordId;
|
|
119
119
|
};
|
|
@@ -2,32 +2,18 @@ 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`,
|
|
7
5
|
overrideGap: `${backendUrl}/saas/record/override-gap`,
|
|
8
6
|
retractOverride: `${backendUrl}/saas/record/retract-override`
|
|
9
7
|
};
|
|
10
8
|
|
|
11
|
-
const
|
|
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
|
-
|
|
23
|
-
const overrideGap = (waiveRequestModel, isTestingBackwardCompatibility, context) => {
|
|
9
|
+
const overrideGap = ({ overrideGapModel, isTestingBackwardCompatibility = false, context }) => {
|
|
24
10
|
const headers = {};
|
|
25
11
|
const params = { isTestingBackwardCompatibility };
|
|
26
|
-
return requests.postRequestHandler(Endpoints.overrideGap,
|
|
12
|
+
return requests.postRequestHandler(Endpoints.overrideGap, overrideGapModel, context, headers, params);
|
|
27
13
|
};
|
|
28
14
|
|
|
29
|
-
const retractOverride = (
|
|
30
|
-
return requests.postRequestHandler(Endpoints.retractOverride,
|
|
15
|
+
const retractOverride = (retractModel, context) => {
|
|
16
|
+
return requests.postRequestHandler(Endpoints.retractOverride, retractModel, context);
|
|
31
17
|
};
|
|
32
18
|
|
|
33
|
-
module.exports = {
|
|
19
|
+
module.exports = { overrideGap, retractOverride };
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
const env = require('../../../../../env');
|
|
2
2
|
|
|
3
3
|
const overrideGapApi = require('./override.gap.api');
|
|
4
|
-
const {
|
|
4
|
+
const { OverrideGapModel } = require('../../models/overrideGap/override.gap.model');
|
|
5
|
+
const { RetractOverrideGapModel } = require('../../models/overrideGap/retract.override.gap.model');
|
|
6
|
+
const { OVERRIDE_GAP_REASONS } = require('../../consts/overrideGap');
|
|
5
7
|
const { validateType } = require('../../../../../common/validations/typeValidations');
|
|
6
8
|
const auditUtil = require('../../utils/auditUtil');
|
|
7
9
|
const httpResponseStatusCodes = require('../../../../../common/httpResponseStatusCodes.json');
|
|
@@ -9,27 +11,17 @@ const httpResponseStatusCodes = require('../../../../../common/httpResponseStatu
|
|
|
9
11
|
const { credentials } = env.getEnv();
|
|
10
12
|
const userTypes = require('../../../../../common/consts/userTypes');
|
|
11
13
|
|
|
12
|
-
const
|
|
13
|
-
validateType(
|
|
14
|
-
return overrideGapApi.
|
|
14
|
+
const overrideGap = ({ overrideGapModel, isTestingBackwardCompatibility = false, context }) => {
|
|
15
|
+
validateType(overrideGapModel, OverrideGapModel);
|
|
16
|
+
return overrideGapApi.overrideGap({ overrideGapModel, isTestingBackwardCompatibility, context });
|
|
15
17
|
};
|
|
16
18
|
|
|
17
|
-
const
|
|
18
|
-
validateType(
|
|
19
|
-
return overrideGapApi.
|
|
19
|
+
const retractOverride = (retractModel, context) => {
|
|
20
|
+
validateType(retractModel, RetractOverrideGapModel);
|
|
21
|
+
return overrideGapApi.retractOverride(retractModel, context);
|
|
20
22
|
};
|
|
21
23
|
|
|
22
|
-
const
|
|
23
|
-
validateType(waiveRequestModel, WaiveRequestModel);
|
|
24
|
-
return overrideGapApi.overrideGap(waiveRequestModel, isTestingBackwardCompatibility, context);
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
const retractOverride = (retractRequestModel, context) => {
|
|
28
|
-
validateType(retractRequestModel, RetractRequestModel);
|
|
29
|
-
return overrideGapApi.retractOverride(retractRequestModel, context);
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
const getWaiveModel = (
|
|
24
|
+
const getOverrideGapModel = (
|
|
33
25
|
record,
|
|
34
26
|
policyName,
|
|
35
27
|
attributeName,
|
|
@@ -43,7 +35,7 @@ const getWaiveModel = (
|
|
|
43
35
|
userId = userId || env.getSystemUserIdentity(credentials.superUser).id;
|
|
44
36
|
userRole = userRole || userTypes.ICS;
|
|
45
37
|
|
|
46
|
-
const waiveModel = new
|
|
38
|
+
const waiveModel = new OverrideGapModel({
|
|
47
39
|
contractorId: record.id,
|
|
48
40
|
auditId,
|
|
49
41
|
waiverReason,
|
|
@@ -67,7 +59,7 @@ const getWaiveModelByGap = (
|
|
|
67
59
|
} = {}) => {
|
|
68
60
|
const attributeName = auditUtil.getAttributeNameByGap(record, policyName, gap);
|
|
69
61
|
|
|
70
|
-
return
|
|
62
|
+
return getOverrideGapModel(record, policyName, attributeName, reason, note, { userId, userRole });
|
|
71
63
|
};
|
|
72
64
|
|
|
73
65
|
const getRetractModel = (record, policyName, attributeName) => {
|
|
@@ -75,7 +67,7 @@ const getRetractModel = (record, policyName, attributeName) => {
|
|
|
75
67
|
const userId = env.getSystemUserIdentity(credentials.superUser).id;
|
|
76
68
|
const userRole = userTypes.ICS;
|
|
77
69
|
|
|
78
|
-
const retractModel = new
|
|
70
|
+
const retractModel = new RetractOverrideGapModel({
|
|
79
71
|
contractorId: record.id,
|
|
80
72
|
auditId,
|
|
81
73
|
userId,
|
|
@@ -102,12 +94,13 @@ const getPolicyAuditIdFromRecord = (record, policyName, attributeName) => {
|
|
|
102
94
|
return attribute.auditId;
|
|
103
95
|
};
|
|
104
96
|
|
|
105
|
-
|
|
97
|
+
// PRIVATE METHOD - please refer to waiveAllGaps / acceptAllGaps according to your needs
|
|
98
|
+
const overrideAllGaps = async (record, context, { reason = OVERRIDE_GAP_REASONS.BUSINESS_DECISION, note = 'WAIVED AUTOMATICALLY' } = {}) => {
|
|
106
99
|
const allWaivablePolicies = auditUtil.getAllWaivablePolicies(record, context);
|
|
107
100
|
|
|
108
101
|
for (const waivable of allWaivablePolicies) {
|
|
109
|
-
const
|
|
110
|
-
const waiveResponse = await
|
|
102
|
+
const overrideGapModel = getOverrideGapModel(record, waivable.policyName, waivable.attributeName, reason, note);
|
|
103
|
+
const waiveResponse = await overrideGap({ overrideGapModel, context });
|
|
111
104
|
|
|
112
105
|
if (waiveResponse.status !== httpResponseStatusCodes.OK) {
|
|
113
106
|
throw Error(`Failed to waive ${waivable.policyName} - ${waivable.attributeName} for ${record.company}`);
|
|
@@ -115,11 +108,24 @@ const waiveAll = async (record, context, { reason = WAIVER_REASONS.BUSINESS_DECI
|
|
|
115
108
|
}
|
|
116
109
|
};
|
|
117
110
|
|
|
111
|
+
const waiveAllGaps = async (record, context, { reason = OVERRIDE_GAP_REASONS.BUSINESS_DECISION, note = 'WAIVED AUTOMATICALLY' } = {}) => {
|
|
112
|
+
const waivedReasons = new Set([OVERRIDE_GAP_REASONS.BUSINESS_DECISION, OVERRIDE_GAP_REASONS.EXECUTIVE_APPROVAL, OVERRIDE_GAP_REASONS.NO_EXPOSURE]);
|
|
113
|
+
|
|
114
|
+
if (!waivedReasons.has(reason)) {
|
|
115
|
+
throw Error(`Invalid waive reason ${reason} provided when trying to waive all gaps to waive`);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
await overrideAllGaps(record, context, { reason, note });
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
const acceptAllGaps = async (record, context, { note = 'ACCEPTED AUTOMATICALLY' } = {}) => {
|
|
122
|
+
overrideAllGaps(record, context, { reason: OVERRIDE_GAP_REASONS.ACCEPT_NO_EXPOSURE, note });
|
|
123
|
+
};
|
|
124
|
+
|
|
118
125
|
module.exports = {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
getWaiveModel,
|
|
126
|
+
acceptAllGaps,
|
|
127
|
+
waiveAllGaps,
|
|
128
|
+
getOverrideGapModel,
|
|
123
129
|
getRetractModel,
|
|
124
130
|
getWaiveModelByGap,
|
|
125
131
|
overrideGap,
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const OVERRIDE_GAP_REASONS = {
|
|
2
|
+
BUSINESS_DECISION: 'Business Decision',
|
|
3
|
+
EXECUTIVE_APPROVAL: 'Executive Approval',
|
|
4
|
+
ACCEPT_NO_EXPOSURE: 'Accept / No Exposure',
|
|
5
|
+
NO_EXPOSURE: 'No Exposure' // DEPRECATED - BACKWARD COMPATIBILITY
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
module.exports = {
|
|
9
|
+
OVERRIDE_GAP_REASONS
|
|
10
|
+
};
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
const auditModels = require('./models/audit/audit.model');
|
|
2
2
|
const auditServices = require('./api/audit/audit.service');
|
|
3
3
|
|
|
4
|
-
const waiveModels = require('./models/
|
|
4
|
+
const waiveModels = require('./models/overrideGap/override.gap.model');
|
|
5
5
|
const overrideGapServices = require('./api/overrideGap/override.gap.service');
|
|
6
6
|
|
|
7
7
|
const convertServices = require('./api/convert/convert.service');
|
|
8
8
|
const coverageServices = require('./api/coverage/coverage.service');
|
|
9
9
|
|
|
10
10
|
const auditConsts = require('./consts/audit');
|
|
11
|
+
const overrideGapConsts = require('./consts/overrideGap');
|
|
11
12
|
const auditUtils = require('./utils/auditUtil');
|
|
12
13
|
|
|
13
14
|
const models = {
|
|
@@ -16,7 +17,8 @@ const models = {
|
|
|
16
17
|
};
|
|
17
18
|
|
|
18
19
|
const consts = {
|
|
19
|
-
audit: auditConsts
|
|
20
|
+
audit: auditConsts,
|
|
21
|
+
overrideGap: overrideGapConsts
|
|
20
22
|
};
|
|
21
23
|
|
|
22
24
|
const utils = {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class OverrideGapModel {
|
|
2
|
+
constructor({
|
|
3
|
+
contractorId, auditId, waiverReason, remarks, userId, userRole
|
|
4
|
+
}) {
|
|
5
|
+
this.auditorContractorId = auditId;
|
|
6
|
+
this.contractorId = contractorId;
|
|
7
|
+
this.waiverReason = waiverReason;
|
|
8
|
+
this.remarks = remarks || '';
|
|
9
|
+
this.userId = userId;
|
|
10
|
+
this.userRole = userRole;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
module.exports = {
|
|
15
|
+
OverrideGapModel
|
|
16
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
class RetractOverrideGapModel {
|
|
2
|
+
constructor({
|
|
3
|
+
contractorId, auditId, userId, userRole
|
|
4
|
+
}) {
|
|
5
|
+
this.auditorContractorId = auditId;
|
|
6
|
+
this.contractorId = contractorId;
|
|
7
|
+
this.userId = userId;
|
|
8
|
+
this.userRole = userRole;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
module.exports = {
|
|
13
|
+
RetractOverrideGapModel
|
|
14
|
+
};
|
|
@@ -2,7 +2,7 @@ const { AUDIT_ENTITY_STATUSES, DEFAULT_POLICY_ID, VALID_SCORES } = require('../c
|
|
|
2
2
|
const { isObject, isArray } = require('../../../../common/utils/dataTypeUtils');
|
|
3
3
|
const timeUtils = require('../../../../common/utils/timeUtils');
|
|
4
4
|
const auditModels = require('../models/audit/audit.model');
|
|
5
|
-
const
|
|
5
|
+
const { OVERRIDE_GAP_REASONS } = require('../consts/overrideGap');
|
|
6
6
|
|
|
7
7
|
const emptyValue = '';
|
|
8
8
|
|
|
@@ -216,7 +216,7 @@ const specialAttributes = {
|
|
|
216
216
|
};
|
|
217
217
|
|
|
218
218
|
const waiveReasons = {
|
|
219
|
-
'No Exposure':
|
|
220
|
-
'Business Decision':
|
|
221
|
-
'Executive Approval':
|
|
219
|
+
'No Exposure': OVERRIDE_GAP_REASONS.NO_EXPOSURE,
|
|
220
|
+
'Business Decision': OVERRIDE_GAP_REASONS.BUSINESS_DECISION,
|
|
221
|
+
'Executive Approval': OVERRIDE_GAP_REASONS.EXECUTIVE_APPROVAL
|
|
222
222
|
};
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
const WAIVE_ACTIONS = {
|
|
2
|
-
WAIVE: 'ignored',
|
|
3
|
-
RETRACT: 'notIgnored'
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
const WAIVER_REASONS = {
|
|
7
|
-
BUSINESS_DECISION: 'Business Decision',
|
|
8
|
-
EXECUTIVE_APPROVAL: 'Executive Approval',
|
|
9
|
-
ACCEPT_NO_EXPOSURE: 'Accept / No Exposure',
|
|
10
|
-
NO_EXPOSURE: 'No Exposure' // DEPRECATED - BACKWARD COMPATIBILITY
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
function WaiveRequestModel({
|
|
14
|
-
contractorId,
|
|
15
|
-
auditId,
|
|
16
|
-
waiverReason,
|
|
17
|
-
remarks,
|
|
18
|
-
userId,
|
|
19
|
-
userRole
|
|
20
|
-
}) {
|
|
21
|
-
this.auditorContractorId = auditId;
|
|
22
|
-
this.contractorId = contractorId;
|
|
23
|
-
this.waiverReason = waiverReason;
|
|
24
|
-
this.remarks = remarks || '';
|
|
25
|
-
|
|
26
|
-
this.userId = userId,
|
|
27
|
-
this.userRole = userRole,
|
|
28
|
-
this.status = WAIVE_ACTIONS.WAIVE;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function RetractRequestModel({
|
|
32
|
-
contractorId,
|
|
33
|
-
auditId,
|
|
34
|
-
userId,
|
|
35
|
-
userRole
|
|
36
|
-
}) {
|
|
37
|
-
this.auditorContractorId = auditId;
|
|
38
|
-
this.contractorId = contractorId;
|
|
39
|
-
this.userId = userId;
|
|
40
|
-
this.userRole = userRole;
|
|
41
|
-
this.status = WAIVE_ACTIONS.RETRACT;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
module.exports = {
|
|
45
|
-
WaiveRequestModel,
|
|
46
|
-
RetractRequestModel,
|
|
47
|
-
WAIVE_ACTIONS,
|
|
48
|
-
WAIVER_REASONS
|
|
49
|
-
};
|