@getjones/test-infra 2.7.13 → 2.7.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.7.13",
3
+ "version": "2.7.15",
4
4
  "description": "Providing internal and openapi interface",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -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.waiveAllGaps(record, context);
116
+ await compliance.services.overrideGap.waiveAll(record, context);
117
117
 
118
118
  return recordId;
119
119
  };
package/src/index.js CHANGED
@@ -38,6 +38,7 @@ const getInternalAPI = () => {
38
38
 
39
39
  const threadScheduler = require('./saas/internal-api/thread-scheduler/runner');
40
40
  const dbEmails = require('./saas/internal-api/dbEmails/index');
41
+ const agreement = require('./saas/internal-api/agreement/index');
41
42
 
42
43
  const internalAPI = {
43
44
  defaults,
@@ -61,7 +62,8 @@ const getInternalAPI = () => {
61
62
  requestsTable,
62
63
  threadScheduler,
63
64
  dbEmails,
64
- factory
65
+ factory,
66
+ agreement
65
67
  };
66
68
 
67
69
  return internalAPI;
@@ -70,7 +72,7 @@ const getInternalAPI = () => {
70
72
  const getOpenAPI = () => {
71
73
  const accounts = require('./saas/openapi/accounts/accounts.service');
72
74
  const projects = require('./saas/openapi/projects/projects.service');
73
- const tabs = require('./saas/openapi/tabs/tabs.service');
75
+ const tabs = require('./saas/openapi/tabs');
74
76
  const requirements = require('./saas/openapi/requirements');
75
77
  const requests = require('./saas/openapi/requests');
76
78
  const coi = require('./saas/openapi/coi/coi.service');
@@ -0,0 +1,22 @@
1
+ const requests = require('../../../../common/requests/cookieAuth/requests');
2
+ const { backendUrl } = require('../../../../env').getEnv();
3
+
4
+ const Endpoints = {
5
+ create: `${backendUrl}/saas/contractor/agreement`,
6
+ delete: `${backendUrl}/saas/contractor/agreement`
7
+ };
8
+
9
+ const createAgreement = (createAgreementModel, context) => {
10
+ return requests.postRequestHandler(Endpoints.create, createAgreementModel, context);
11
+ };
12
+
13
+ const deleteAgreement = (recordId, context) => {
14
+ const headers = {};
15
+ const params = { contractorId: recordId };
16
+ return requests.deleteRequestHandler(Endpoints.delete, context, headers, params);
17
+ };
18
+
19
+ module.exports = {
20
+ createAgreement,
21
+ deleteAgreement
22
+ };
@@ -0,0 +1,17 @@
1
+ const agreementAPI = require('./agreement.api');
2
+ const { CreateAgreementModel } = require('../models/create.agreement.model');
3
+ const { validateType } = require('../../../../common/validations/typeValidations');
4
+
5
+ const createAgreement = (createAgreementModel, context) => {
6
+ validateType(createAgreementModel, CreateAgreementModel);
7
+ return agreementAPI.createAgreement(createAgreementModel, context);
8
+ };
9
+
10
+ const deleteAgreement = (recordId, context) => {
11
+ return agreementAPI.deleteAgreement(recordId, context);
12
+ };
13
+
14
+ module.exports = {
15
+ createAgreement,
16
+ deleteAgreement
17
+ };
@@ -0,0 +1,8 @@
1
+ const UPLOADER_TYPE = {
2
+ VENDOR: 'VENDOR',
3
+ USER: 'USER'
4
+ };
5
+
6
+ const DEFAULT_AGREEMENT_TEMPLATE = 'tpl_C3sgbpYx7LHyRNdtM7';
7
+
8
+ module.exports = { UPLOADER_TYPE, DEFAULT_AGREEMENT_TEMPLATE };
@@ -0,0 +1,11 @@
1
+ const createModel = require('./models/create.agreement.model');
2
+ const services = require('./api/agreement.service');
3
+ const agreementConsts = require('./consts/consts');
4
+
5
+ const models = { create: createModel };
6
+
7
+ const consts = {
8
+ audit: agreementConsts
9
+ };
10
+
11
+ module.exports = { services, models, consts };
@@ -0,0 +1,12 @@
1
+ const { UPLOADER_TYPE } = require('../consts/consts');
2
+
3
+ class CreateAgreementModel {
4
+ constructor({ contractorId, contractorDateModified, uploaderId, signedContractName, uploaderType = UPLOADER_TYPE.USER }) {
5
+ this.contractorId = contractorId;
6
+ this.contractorDateModified = contractorDateModified;
7
+ this.uploaderId = uploaderId;
8
+ this.signedContractName = signedContractName;
9
+ this.uploaderType = uploaderType;
10
+ }
11
+ }
12
+ module.exports = { CreateAgreementModel };
@@ -2,18 +2,32 @@ 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
 
9
- const overrideGap = ({ overrideGapModel, isTestingBackwardCompatibility = false, context }) => {
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
+
23
+ const overrideGap = ({ waiveRequestModel, isTestingBackwardCompatibility = false, context }) => {
10
24
  const headers = {};
11
25
  const params = { isTestingBackwardCompatibility };
12
- return requests.postRequestHandler(Endpoints.overrideGap, overrideGapModel, context, headers, params);
26
+ return requests.postRequestHandler(Endpoints.overrideGap, waiveRequestModel, context, headers, params);
13
27
  };
14
28
 
15
- const retractOverride = (retractModel, context) => {
16
- return requests.postRequestHandler(Endpoints.retractOverride, retractModel, context);
29
+ const retractOverride = (retractRequestModel, context) => {
30
+ return requests.postRequestHandler(Endpoints.retractOverride, retractRequestModel, context);
17
31
  };
18
32
 
19
- module.exports = { overrideGap, retractOverride };
33
+ module.exports = { waive, retract, overrideGap, retractOverride };
@@ -1,9 +1,7 @@
1
1
  const env = require('../../../../../env');
2
2
 
3
3
  const overrideGapApi = require('./override.gap.api');
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');
4
+ const { WaiveRequestModel, RetractRequestModel, WAIVER_REASONS } = require('../../models/waive/waive.model');
7
5
  const { validateType } = require('../../../../../common/validations/typeValidations');
8
6
  const auditUtil = require('../../utils/auditUtil');
9
7
  const httpResponseStatusCodes = require('../../../../../common/httpResponseStatusCodes.json');
@@ -11,17 +9,27 @@ const httpResponseStatusCodes = require('../../../../../common/httpResponseStatu
11
9
  const { credentials } = env.getEnv();
12
10
  const userTypes = require('../../../../../common/consts/userTypes');
13
11
 
14
- const overrideGap = ({ overrideGapModel, isTestingBackwardCompatibility = false, context }) => {
15
- validateType(overrideGapModel, OverrideGapModel);
16
- return overrideGapApi.overrideGap({ overrideGapModel, isTestingBackwardCompatibility, context });
12
+ const waive = (waiveRequestModel, context) => {
13
+ validateType(waiveRequestModel, WaiveRequestModel);
14
+ return overrideGapApi.waive(waiveRequestModel.contractorId, waiveRequestModel, context);
17
15
  };
18
16
 
19
- const retractOverride = (retractModel, context) => {
20
- validateType(retractModel, RetractOverrideGapModel);
21
- return overrideGapApi.retractOverride(retractModel, context);
17
+ const retract = (retractRequestModel, context) => {
18
+ validateType(retractRequestModel, RetractRequestModel);
19
+ return overrideGapApi.retract(retractRequestModel.contractorId, retractRequestModel, context);
22
20
  };
23
21
 
24
- const getOverrideGapModel = (
22
+ const overrideGap = ({ waiveRequestModel, isTestingBackwardCompatibility = false, context }) => {
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 = (
25
33
  record,
26
34
  policyName,
27
35
  attributeName,
@@ -35,7 +43,7 @@ const getOverrideGapModel = (
35
43
  userId = userId || env.getSystemUserIdentity(credentials.superUser).id;
36
44
  userRole = userRole || userTypes.ICS;
37
45
 
38
- const waiveModel = new OverrideGapModel({
46
+ const waiveModel = new WaiveRequestModel({
39
47
  contractorId: record.id,
40
48
  auditId,
41
49
  waiverReason,
@@ -59,7 +67,7 @@ const getWaiveModelByGap = (
59
67
  } = {}) => {
60
68
  const attributeName = auditUtil.getAttributeNameByGap(record, policyName, gap);
61
69
 
62
- return getOverrideGapModel(record, policyName, attributeName, reason, note, { userId, userRole });
70
+ return getWaiveModel(record, policyName, attributeName, reason, note, { userId, userRole });
63
71
  };
64
72
 
65
73
  const getRetractModel = (record, policyName, attributeName) => {
@@ -67,7 +75,7 @@ const getRetractModel = (record, policyName, attributeName) => {
67
75
  const userId = env.getSystemUserIdentity(credentials.superUser).id;
68
76
  const userRole = userTypes.ICS;
69
77
 
70
- const retractModel = new RetractOverrideGapModel({
78
+ const retractModel = new RetractRequestModel({
71
79
  contractorId: record.id,
72
80
  auditId,
73
81
  userId,
@@ -94,13 +102,12 @@ const getPolicyAuditIdFromRecord = (record, policyName, attributeName) => {
94
102
  return attribute.auditId;
95
103
  };
96
104
 
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' } = {}) => {
105
+ const waiveAll = async (record, context, { reason = WAIVER_REASONS.BUSINESS_DECISION, note = 'WAIVED AUTOMATICALLY' } = {}) => {
99
106
  const allWaivablePolicies = auditUtil.getAllWaivablePolicies(record, context);
100
107
 
101
108
  for (const waivable of allWaivablePolicies) {
102
- const overrideGapModel = getOverrideGapModel(record, waivable.policyName, waivable.attributeName, reason, note);
103
- const waiveResponse = await overrideGap({ overrideGapModel, context });
109
+ const waiveModel = getWaiveModel(record, waivable.policyName, waivable.attributeName, reason, note);
110
+ const waiveResponse = await waive(waiveModel, context);
104
111
 
105
112
  if (waiveResponse.status !== httpResponseStatusCodes.OK) {
106
113
  throw Error(`Failed to waive ${waivable.policyName} - ${waivable.attributeName} for ${record.company}`);
@@ -108,24 +115,11 @@ const overrideAllGaps = async (record, context, { reason = OVERRIDE_GAP_REASONS.
108
115
  }
109
116
  };
110
117
 
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
-
125
118
  module.exports = {
126
- acceptAllGaps,
127
- waiveAllGaps,
128
- getOverrideGapModel,
119
+ waive,
120
+ waiveAll,
121
+ retract,
122
+ getWaiveModel,
129
123
  getRetractModel,
130
124
  getWaiveModelByGap,
131
125
  overrideGap,
@@ -1,14 +1,13 @@
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/overrideGap/override.gap.model');
4
+ const waiveModels = require('./models/waive/waive.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');
12
11
  const auditUtils = require('./utils/auditUtil');
13
12
 
14
13
  const models = {
@@ -17,8 +16,7 @@ const models = {
17
16
  };
18
17
 
19
18
  const consts = {
20
- audit: auditConsts,
21
- overrideGap: overrideGapConsts
19
+ audit: auditConsts
22
20
  };
23
21
 
24
22
  const utils = {
@@ -59,7 +59,7 @@ class AuditDatesModel {
59
59
  }
60
60
 
61
61
  class AuditListParametersModel {
62
- constructor(page, accountIds, { fromDate, toDate } = {}) {
62
+ constructor(page, accountIds, { fromDate, toDate, recordId } = {}) {
63
63
  validateInteger(page, { min: 1 });
64
64
  validateArray(accountIds);
65
65
 
@@ -72,7 +72,7 @@ class AuditListParametersModel {
72
72
  }
73
73
 
74
74
  this.page = page;
75
- this.filters = { accountIds, fromDate, toDate };
75
+ this.filters = { accountIds, fromDate, toDate, recordId };
76
76
  }
77
77
  }
78
78
 
@@ -0,0 +1,49 @@
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
+ };
@@ -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 { OVERRIDE_GAP_REASONS } = require('../consts/overrideGap');
5
+ const waiveModels = require('../models/waive/waive.model');
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': OVERRIDE_GAP_REASONS.NO_EXPOSURE,
220
- 'Business Decision': OVERRIDE_GAP_REASONS.BUSINESS_DECISION,
221
- 'Executive Approval': OVERRIDE_GAP_REASONS.EXECUTIVE_APPROVAL
219
+ 'No Exposure': waiveModels.WAIVER_REASONS.NO_EXPOSURE,
220
+ 'Business Decision': waiveModels.WAIVER_REASONS.BUSINESS_DECISION,
221
+ 'Executive Approval': waiveModels.WAIVER_REASONS.EXECUTIVE_APPROVAL
222
222
  };
@@ -0,0 +1,6 @@
1
+ const services = require('./tabs.service');
2
+ const CreateTabModel = require('./models/create.tab.model');
3
+
4
+ const models = { CreateTabModel };
5
+
6
+ module.exports = { ... services, models };
@@ -0,0 +1,6 @@
1
+ function CreateTabModel(name, type) {
2
+ this.name = name;
3
+ this.type = type;
4
+ }
5
+
6
+ module.exports = CreateTabModel;
@@ -3,11 +3,16 @@ const { openapiUrl, backendUrl } = require('../../../env').getEnv();
3
3
 
4
4
  const Endpoints = {
5
5
  delete: tabId => `${openapiUrl}/tabs/${tabId}`,
6
- get: tabId => `${backendUrl}/tabs/${tabId}`
6
+ get: tabId => `${backendUrl}/tabs/${tabId}`,
7
+ create: projectId => `${openapiUrl}/properties/${projectId}/tab`
7
8
  };
8
9
 
9
- const deleteTabById = async (tabId, apiKey) => {
10
+ const deleteTabById = (tabId, apiKey) => {
10
11
  return requests.deleteRequestHandler(Endpoints.delete(tabId), apiKey);
11
12
  };
12
13
 
13
- module.exports = { deleteTabById };
14
+ const createTab = (projectId, createTabModel, apiKey) => {
15
+ return requests.postRequestHandler(Endpoints.create(projectId), apiKey, createTabModel);
16
+ };
17
+
18
+ module.exports = { deleteTabById, createTab };
@@ -1,7 +1,11 @@
1
1
  const tabsApi = require('./tabs.api');
2
2
 
3
- const deleteTabById = async (tabId, apiKey) => {
3
+ const deleteTabById = (tabId, apiKey) => {
4
4
  return tabsApi.deleteTabById(tabId, apiKey);
5
5
  };
6
6
 
7
- module.exports = { deleteTabById };
7
+ const createTab = (projectId, createTabModel, apiKey) => {
8
+ return tabsApi.createTab(projectId, createTabModel, apiKey);
9
+ };
10
+
11
+ module.exports = { deleteTabById, createTab };
@@ -1,10 +0,0 @@
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,16 +0,0 @@
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
- };
@@ -1,14 +0,0 @@
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
- };