@getjones/test-infra 4.5.25 → 4.5.26

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.
Files changed (250) hide show
  1. package/eslint.config.mjs +156 -0
  2. package/package.json +36 -36
  3. package/src/common/commonFlows/auth/auth.js +40 -40
  4. package/src/common/commonFlows/index.js +4 -4
  5. package/src/common/commonFlows/records/records.js +269 -269
  6. package/src/common/consts/accountSettings.js +44 -44
  7. package/src/common/consts/activationStatuses.js +6 -6
  8. package/src/common/consts/autocomplete.js +10 -10
  9. package/src/common/consts/constantsForRecordsSortingAndFilters.js +49 -49
  10. package/src/common/consts/dashboardCharts.js +18 -18
  11. package/src/common/consts/homepage/AttentionTab.js +6 -6
  12. package/src/common/consts/homepage/sortOptions.js +19 -19
  13. package/src/common/consts/ocrStatuses.js +6 -6
  14. package/src/common/consts/projectSettings.js +21 -21
  15. package/src/common/consts/recordTypes.js +5 -5
  16. package/src/common/consts/requirementActions.js +10 -10
  17. package/src/common/consts/s3FileTypes.js +13 -13
  18. package/src/common/consts/userRoles.js +18 -18
  19. package/src/common/consts/userTypes.js +8 -8
  20. package/src/common/errorCodes.js +3 -3
  21. package/src/common/httpResponseStatusCodes.json +11 -11
  22. package/src/common/httpResponseTypes.json +2 -2
  23. package/src/common/requests/apiKeyAuth/requests.js +44 -44
  24. package/src/common/requests/cookieAuth/requests.js +40 -40
  25. package/src/common/requests/internalAuth/requests.js +48 -48
  26. package/src/common/requests/requestHandlers.js +80 -80
  27. package/src/common/utils/complianceUtil.js +113 -113
  28. package/src/common/utils/configsUtil.js +22 -22
  29. package/src/common/utils/dataTypeUtils.js +41 -41
  30. package/src/common/utils/numberUtils.js +22 -22
  31. package/src/common/utils/objectUtils.js +7 -7
  32. package/src/common/utils/timeUtils.js +177 -177
  33. package/src/common/validations/errorValidation.js +16 -16
  34. package/src/common/validations/typeValidations.js +36 -36
  35. package/src/defaults/configs/auditConfigs.js +125 -125
  36. package/src/defaults/configs/coverage.js +144 -144
  37. package/src/defaults/configs/polices.js +76 -76
  38. package/src/defaults/configs/requirement.js +32 -32
  39. package/src/defaults/index.js +6 -6
  40. package/src/env.js +57 -57
  41. package/src/factory/globalRecord/globalRecord.js +43 -43
  42. package/src/factory/index.js +8 -8
  43. package/src/factory/records/records.js +281 -281
  44. package/src/factory/users/users.js +69 -69
  45. package/src/index.js +105 -105
  46. package/src/saas/internal-api/accountDirectory/api/accountDirectory.api.js +50 -50
  47. package/src/saas/internal-api/accountDirectory/api/accountDirectory.service.js +182 -182
  48. package/src/saas/internal-api/accountDirectory/index.js +4 -4
  49. package/src/saas/internal-api/accountDirectory/models/accountDirectory.model.js +40 -40
  50. package/src/saas/internal-api/accounts/api/core/accounts.core.api.js +35 -35
  51. package/src/saas/internal-api/accounts/api/core/accounts.core.service.js +93 -93
  52. package/src/saas/internal-api/accounts/api/emailCustomization/accounts.email.customizations.api.js +29 -29
  53. package/src/saas/internal-api/accounts/api/emailCustomization/accounts.email.customizations.service.js +61 -61
  54. package/src/saas/internal-api/accounts/api/openapi/accounts.openapi.api.js +48 -48
  55. package/src/saas/internal-api/accounts/api/openapi/accounts.openapi.service.js +74 -74
  56. package/src/saas/internal-api/accounts/api/settings/settings.api.js +21 -21
  57. package/src/saas/internal-api/accounts/api/settings/settings.service.js +41 -41
  58. package/src/saas/internal-api/accounts/consts/consts.js +8 -8
  59. package/src/saas/internal-api/accounts/index.js +22 -22
  60. package/src/saas/internal-api/accounts/models/core/create.account.model.js +16 -16
  61. package/src/saas/internal-api/accounts/models/settings/update.settings.model.js +53 -53
  62. package/src/saas/internal-api/accounts/utils/utils.js +61 -61
  63. package/src/saas/internal-api/agreement/api/agreement.api.js +39 -39
  64. package/src/saas/internal-api/agreement/api/agreement.service.js +121 -121
  65. package/src/saas/internal-api/agreement/consts/consts.js +11 -11
  66. package/src/saas/internal-api/agreement/index.js +12 -12
  67. package/src/saas/internal-api/agreement/models/create.agreement.model.js +12 -12
  68. package/src/saas/internal-api/agreement/models/createAgreementByAuditorModel.js +11 -11
  69. package/src/saas/internal-api/agreement/models/createAgreementByPMModel.js +13 -13
  70. package/src/saas/internal-api/auditCustomerRules/api/customer.rules.api.js +43 -43
  71. package/src/saas/internal-api/auditCustomerRules/api/customer.rules.service.js +105 -105
  72. package/src/saas/internal-api/auditCustomerRules/consts/customer.rule.js +11 -11
  73. package/src/saas/internal-api/auditCustomerRules/index.js +6 -6
  74. package/src/saas/internal-api/auditCustomerRules/models/customer.rule.model.js +46 -46
  75. package/src/saas/internal-api/auditCustomerRules/utils/customer.rule.util.js +19 -19
  76. package/src/saas/internal-api/auditNotes/api/audit.notes.api.js +40 -40
  77. package/src/saas/internal-api/auditNotes/api/audit.notes.service.js +115 -115
  78. package/src/saas/internal-api/auditNotes/index.js +4 -4
  79. package/src/saas/internal-api/auditNotes/models/audit.note.model.js +30 -30
  80. package/src/saas/internal-api/auth/api/auth.api.js +27 -27
  81. package/src/saas/internal-api/auth/api/auth.service.js +90 -90
  82. package/src/saas/internal-api/auth/index.js +3 -3
  83. package/src/saas/internal-api/coi/api/coi.api.js +58 -58
  84. package/src/saas/internal-api/coi/api/coi.service.js +61 -61
  85. package/src/saas/internal-api/coi/consts/hashes.js +5 -5
  86. package/src/saas/internal-api/coi/consts/uploaderTypes.js +5 -5
  87. package/src/saas/internal-api/coi/index.js +14 -14
  88. package/src/saas/internal-api/coi/models/Combine.last.two.cois.model.js +25 -25
  89. package/src/saas/internal-api/coi/models/submit.coi.model.js +19 -19
  90. package/src/saas/internal-api/coi/utils/utils.js +117 -117
  91. package/src/saas/internal-api/compliance/api/amBestRating/am.best.rating.api.js +12 -12
  92. package/src/saas/internal-api/compliance/api/amBestRating/am.best.rating.service.js +14 -14
  93. package/src/saas/internal-api/compliance/api/audit/aiAudit/aiAudit.api.js +27 -27
  94. package/src/saas/internal-api/compliance/api/audit/aiAudit/aiAudit.service.js +38 -38
  95. package/src/saas/internal-api/compliance/api/audit/audit.api.js +112 -112
  96. package/src/saas/internal-api/compliance/api/audit/audit.service.js +319 -319
  97. package/src/saas/internal-api/compliance/api/convert/convert.api.js +17 -17
  98. package/src/saas/internal-api/compliance/api/convert/convert.service.js +11 -11
  99. package/src/saas/internal-api/compliance/api/coverage/coverage.api.js +33 -33
  100. package/src/saas/internal-api/compliance/api/coverage/coverage.service.js +46 -46
  101. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.api.js +38 -38
  102. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.service.js +189 -189
  103. package/src/saas/internal-api/compliance/consts/audit.js +113 -113
  104. package/src/saas/internal-api/compliance/index.js +38 -38
  105. package/src/saas/internal-api/compliance/models/audit/audit.model.js +96 -96
  106. package/src/saas/internal-api/compliance/models/waive/waive.model.js +49 -49
  107. package/src/saas/internal-api/compliance/utils/auditUtil.js +269 -269
  108. package/src/saas/internal-api/compliance/utils/coverageUtil.js +45 -45
  109. package/src/saas/internal-api/contractors/api/contractors.api.js +209 -209
  110. package/src/saas/internal-api/contractors/api/contractors.service.js +367 -361
  111. package/src/saas/internal-api/contractors/consts/consts.js +6 -6
  112. package/src/saas/internal-api/contractors/index.js +8 -8
  113. package/src/saas/internal-api/contractors/models/assign.requirement.model.js +10 -10
  114. package/src/saas/internal-api/contractors/models/edit.contractor.model.js +73 -73
  115. package/src/saas/internal-api/contractors/models/link.request.model.js +10 -10
  116. package/src/saas/internal-api/contractors/models/subscription.contractor.model.js +13 -13
  117. package/src/saas/internal-api/contractors/models/verification.contractor.model.js +27 -27
  118. package/src/saas/internal-api/contractors/utils.js +25 -25
  119. package/src/saas/internal-api/dashboard/api/recordList.api.js +38 -38
  120. package/src/saas/internal-api/dashboard/api/recordList.service.js +60 -60
  121. package/src/saas/internal-api/dashboard/index.js +5 -5
  122. package/src/saas/internal-api/dashboard/models/dashboard.filter.criteria.model.js +38 -38
  123. package/src/saas/internal-api/dbEmails/api/db.emails.api.js +25 -25
  124. package/src/saas/internal-api/dbEmails/api/db.emails.service.js +163 -163
  125. package/src/saas/internal-api/dbEmails/consts/consts.js +56 -56
  126. package/src/saas/internal-api/dbEmails/index.js +6 -6
  127. package/src/saas/internal-api/dbEmails/models/db.emails.model.js +22 -22
  128. package/src/saas/internal-api/dbEmails/utils/util.js +87 -87
  129. package/src/saas/internal-api/emailCustomization/api/email.customization.api.js +26 -26
  130. package/src/saas/internal-api/emailCustomization/api/email.customization.service.js +50 -50
  131. package/src/saas/internal-api/emailCustomization/index.js +3 -3
  132. package/src/saas/internal-api/globalRecord/api/global.record.api.js +95 -95
  133. package/src/saas/internal-api/globalRecord/api/global.record.service.js +112 -112
  134. package/src/saas/internal-api/globalRecord/consts.js +20 -20
  135. package/src/saas/internal-api/globalRecord/index.js +6 -6
  136. package/src/saas/internal-api/globalRecord/models/global.record.model.js +60 -60
  137. package/src/saas/internal-api/globalRecord/utils/util.js +161 -161
  138. package/src/saas/internal-api/homepageCharts/api/charts.api.js +12 -12
  139. package/src/saas/internal-api/homepageCharts/api/charts.service.js +7 -7
  140. package/src/saas/internal-api/homepageCharts/index.js +3 -3
  141. package/src/saas/internal-api/jonesNetworkTab/api/jones.network.tab.api.js +14 -14
  142. package/src/saas/internal-api/jonesNetworkTab/api/jones.network.tab.service.js +16 -16
  143. package/src/saas/internal-api/jonesNetworkTab/index.js +3 -3
  144. package/src/saas/internal-api/notificationCenter/api/notification.center.api.js +32 -32
  145. package/src/saas/internal-api/notificationCenter/api/notification.center.service.js +49 -49
  146. package/src/saas/internal-api/notificationCenter/index.js +3 -3
  147. package/src/saas/internal-api/outlook/api/outlook.api.js +14 -14
  148. package/src/saas/internal-api/outlook/api/outlook.service.js +14 -14
  149. package/src/saas/internal-api/outlook/index.js +3 -3
  150. package/src/saas/internal-api/policyFile/api/policy.file.api.js +43 -43
  151. package/src/saas/internal-api/policyFile/api/policy.file.service.js +117 -117
  152. package/src/saas/internal-api/policyFile/consts.js +21 -21
  153. package/src/saas/internal-api/policyFile/index.js +11 -11
  154. package/src/saas/internal-api/policyFile/models/create.policy.file.model.js +11 -11
  155. package/src/saas/internal-api/policyFile/models/set.publish.flag.to.policy.model.js +13 -13
  156. package/src/saas/internal-api/projects/api/core/projects.api.js +39 -39
  157. package/src/saas/internal-api/projects/api/core/projects.service.js +77 -77
  158. package/src/saas/internal-api/projects/api/settings/project.settings.api.js +18 -18
  159. package/src/saas/internal-api/projects/api/settings/project.settings.service.js +35 -35
  160. package/src/saas/internal-api/projects/consts/defaultProject.js +3 -3
  161. package/src/saas/internal-api/projects/index.js +24 -24
  162. package/src/saas/internal-api/projects/models/core/create.project.model.js +41 -41
  163. package/src/saas/internal-api/projects/models/core/update.project.model.js +47 -47
  164. package/src/saas/internal-api/projects/models/settings/update.project.settings.model.js +40 -40
  165. package/src/saas/internal-api/projects/utils/utils.js +155 -155
  166. package/src/saas/internal-api/recordHub/api/record.hub.api.js +14 -14
  167. package/src/saas/internal-api/recordHub/api/record.hub.service.js +32 -32
  168. package/src/saas/internal-api/recordHub/index.js +3 -3
  169. package/src/saas/internal-api/recordNotes/api/record.notes.api.js +38 -38
  170. package/src/saas/internal-api/recordNotes/api/record.notes.service.js +56 -56
  171. package/src/saas/internal-api/recordNotes/api/record.notes.utils.js +12 -12
  172. package/src/saas/internal-api/recordNotes/index.js +3 -3
  173. package/src/saas/internal-api/reports/api/reports.api.js +62 -62
  174. package/src/saas/internal-api/reports/api/reports.service.js +79 -79
  175. package/src/saas/internal-api/reports/consts/consts.js +74 -74
  176. package/src/saas/internal-api/reports/index.js +15 -15
  177. package/src/saas/internal-api/reports/models/report.model.js +27 -27
  178. package/src/saas/internal-api/requests/api/requests.api.js +132 -132
  179. package/src/saas/internal-api/requests/api/requests.service.js +312 -312
  180. package/src/saas/internal-api/requests/index.js +21 -21
  181. package/src/saas/internal-api/requests/models/create.request.model.js +36 -36
  182. package/src/saas/internal-api/requests/models/draft.request.criteria.model.js +18 -18
  183. package/src/saas/internal-api/requests/models/draft.request.report.model.js +14 -14
  184. package/src/saas/internal-api/requests/models/edit.request.model.js +31 -31
  185. package/src/saas/internal-api/requests/models/homepageRequestCriteriaModel.js +19 -19
  186. package/src/saas/internal-api/requests/models/requestListCriteriaModel.js +17 -17
  187. package/src/saas/internal-api/requests/models/tenant.request.model.js +9 -9
  188. package/src/saas/internal-api/requests/utils.js +16 -16
  189. package/src/saas/internal-api/requestsTable/api/requests.table.api.js +20 -20
  190. package/src/saas/internal-api/requestsTable/api/requests.table.service.js +14 -14
  191. package/src/saas/internal-api/requestsTable/index.js +3 -3
  192. package/src/saas/internal-api/requirements/api/requirements.api.js +57 -57
  193. package/src/saas/internal-api/requirements/api/requirements.service.js +184 -184
  194. package/src/saas/internal-api/requirements/consts/attributeTypes.json +8 -8
  195. package/src/saas/internal-api/requirements/consts/consts.js +6 -6
  196. package/src/saas/internal-api/requirements/index.js +10 -10
  197. package/src/saas/internal-api/requirements/models/create.requirement.model.js +17 -17
  198. package/src/saas/internal-api/requirements/models/policy.model.js +35 -35
  199. package/src/saas/internal-api/requirements/models/update.requirement.model.js +19 -19
  200. package/src/saas/internal-api/requirements/utils/utils.js +129 -129
  201. package/src/saas/internal-api/serviceArea/api/coordinates.api.js +12 -12
  202. package/src/saas/internal-api/serviceArea/api/coordinates.service.js +7 -7
  203. package/src/saas/internal-api/serviceArea/index.js +4 -4
  204. package/src/saas/internal-api/serviceArea/utils/utils.js +8 -8
  205. package/src/saas/internal-api/tabs/api/tabs.api.js +32 -32
  206. package/src/saas/internal-api/tabs/api/tabs.service.js +60 -60
  207. package/src/saas/internal-api/tabs/index.js +3 -3
  208. package/src/saas/internal-api/tabs/models/tabs.model.js +19 -19
  209. package/src/saas/internal-api/thread-scheduler/runner.js +55 -55
  210. package/src/saas/internal-api/uploadFiles/api/upload.file.api.js +43 -43
  211. package/src/saas/internal-api/uploadFiles/api/upload.file.service.js +107 -107
  212. package/src/saas/internal-api/uploadFiles/consts.js +12 -12
  213. package/src/saas/internal-api/uploadFiles/index.js +5 -5
  214. package/src/saas/internal-api/users/api/tenantApp/tenant.app.api.js +38 -38
  215. package/src/saas/internal-api/users/api/tenantApp/tenant.app.service.js +108 -108
  216. package/src/saas/internal-api/users/api/users.api.js +126 -126
  217. package/src/saas/internal-api/users/api/users.service.js +258 -258
  218. package/src/saas/internal-api/users/index.js +16 -16
  219. package/src/saas/internal-api/users/models/create.inner.system.user.model.js +18 -18
  220. package/src/saas/internal-api/users/models/notification.settings.model.js +12 -12
  221. package/src/saas/internal-api/users/models/tenent.user.model.js +11 -11
  222. package/src/saas/internal-api/users/models/users.model.js +43 -43
  223. package/src/saas/internal-api/users/utils/util.js +39 -39
  224. package/src/saas/internal-api/vendorProfile/api/vendor.profile.api.js +26 -26
  225. package/src/saas/internal-api/vendorProfile/api/vendor.profile.service.js +19 -19
  226. package/src/saas/internal-api/vendorProfile/index.js +3 -3
  227. package/src/saas/openapi/accounts/accounts.api.js +17 -17
  228. package/src/saas/openapi/accounts/accounts.service.js +11 -11
  229. package/src/saas/openapi/coi/coi.api.js +30 -30
  230. package/src/saas/openapi/coi/coi.service.js +43 -43
  231. package/src/saas/openapi/projects/projects.api.js +83 -83
  232. package/src/saas/openapi/projects/projects.service.js +71 -64
  233. package/src/saas/openapi/requests/index.js +7 -7
  234. package/src/saas/openapi/requests/models/invite.request.model.js +40 -40
  235. package/src/saas/openapi/requests/models/update.request.model.js +35 -35
  236. package/src/saas/openapi/requests/requests.api.js +93 -93
  237. package/src/saas/openapi/requests/requests.service.js +94 -94
  238. package/src/saas/openapi/requirements/index.js +6 -6
  239. package/src/saas/openapi/requirements/models/copy.requirement.model.js +10 -10
  240. package/src/saas/openapi/requirements/requirements.api.js +41 -41
  241. package/src/saas/openapi/requirements/requirements.service.js +49 -49
  242. package/src/saas/openapi/tabs/index.js +6 -6
  243. package/src/saas/openapi/tabs/models/create.tab.model.js +6 -6
  244. package/src/saas/openapi/tabs/tabs.api.js +27 -27
  245. package/src/saas/openapi/tabs/tabs.service.js +19 -19
  246. package/src/saas/openapi/users/user.model.js +10 -10
  247. package/src/saas/openapi/users/users.api.js +33 -33
  248. package/src/saas/openapi/users/users.service.js +51 -51
  249. package/tests/env.test.js +40 -40
  250. package/tests/validation.test.js +83 -83
@@ -1,87 +1,87 @@
1
- const { EMAIL_SUBJECT } = require('../consts/consts');
2
-
3
- //compare method for sorting with ignore caseSensitive
4
- const compareFn = (a, b) => a.toLowerCase().localeCompare(b.toLowerCase());
5
-
6
- const compareUnorderedArrays = (arr, other, { caseSensitive = true } = {}) => {
7
- const isEachElementEqual = arr.sort(compareFn).every((mail, i) => {
8
- if (caseSensitive) {
9
- return mail === other.sort((compareFn))[i];
10
- } else {
11
- return mail.toLowerCase() === other.sort(compareFn)[i].toLowerCase();
12
- }
13
- });
14
- return arr.length === other.length && isEachElementEqual;
15
- };
16
-
17
- const recipientsMatchVerification = (expectedRecipients, actualRecipients) => {
18
- const caseSensitive = false;
19
-
20
- return expectedRecipients.from.includes(actualRecipients.from) && // For some emails can be few sendor options (ex: branded emails)
21
- compareUnorderedArrays(actualRecipients.to, expectedRecipients.to, { caseSensitive }) &&
22
- compareUnorderedArrays(actualRecipients.cc, expectedRecipients.cc, { caseSensitive });
23
- };
24
-
25
- const regexVerification = (message, regex, { returnType } = {}) => {
26
- const capturingGroupsArr = message.match(regex);
27
-
28
- if (!capturingGroupsArr || capturingGroupsArr.length < 1) {
29
- return null;
30
- }
31
-
32
- const capturingGroups = capturingGroupsArr[capturingGroupsArr.length - 1];
33
-
34
- if (!capturingGroups || capturingGroups.length < 2) {
35
- return null;
36
- }
37
-
38
- switch (returnType) {
39
- case 'url':
40
- return typeof capturingGroups === 'string' ? capturingGroups : capturingGroups[capturingGroups.length - 1];
41
- case 'body':
42
- return message;
43
- default:
44
- return 'Bad "returnType" argument';
45
- }
46
- };
47
-
48
- const extractEmailFromNameAndEmailFormat = str => {
49
- // In case the format is 'First Last <username@domain.com>' we will return username@domain.com only
50
- return str.split('<').pop().split('>')[0];
51
- };
52
- const logRetrievedEmailInfo = (to, subject, { cc } = {}) => {
53
- let log = 'The following email retrieved and will be sent to trash:';
54
- log += `\n| To: ${to}`;
55
- cc ? log += `\n| Cc: ${cc}` : '';
56
- log += `\n| Subject: ${subject}`;
57
- };
58
-
59
- const getEmailTextInSubject = (recordCompanyName, emailType, isAfterUpdateRequirements = false, { requesterName = 'Default' } = {}) => {
60
- const subject = EMAIL_SUBJECT[emailType]({ recordCompanyName, requesterName });
61
-
62
- return isAfterUpdateRequirements ? `Updated Requirements - ${subject}` : subject;
63
- };
64
-
65
- const getMailActionButtonUrlRegex = () => {
66
- return /(https:\/\/[a-zA-Z0-9.].*[a-zA-Z.]+\/CheckCustomersInviteLinkJSON\?data=[^"]+)/g;
67
- };
68
-
69
- const getUnsubscribeButtonUrlRegex = () => {
70
- return /(\/[a-zA-Z0-9.].*[a-zA-Z.]+\/vendor-app\/email\/unsubscribe\?data=[^"]+)/g;
71
- };
72
-
73
- const getEncryptedDataFromLink = (link, { removeLastTwoCharts } = {}) => {
74
- const encryptedData = link.split('data=').pop();
75
- return removeLastTwoCharts ? encryptedData.slice(0, -2) : encryptedData;
76
- };
77
-
78
- module.exports = {
79
- recipientsMatchVerification,
80
- regexVerification,
81
- extractEmailFromNameAndEmailFormat,
82
- logRetrievedEmailInfo,
83
- getEmailTextInSubject,
84
- getMailActionButtonUrlRegex,
85
- getUnsubscribeButtonUrlRegex,
86
- getEncryptedDataFromLink
87
- };
1
+ const { EMAIL_SUBJECT } = require('../consts/consts');
2
+
3
+ //compare method for sorting with ignore caseSensitive
4
+ const compareFn = (a, b) => a.toLowerCase().localeCompare(b.toLowerCase());
5
+
6
+ const compareUnorderedArrays = (arr, other, { caseSensitive = true } = {}) => {
7
+ const isEachElementEqual = arr.sort(compareFn).every((mail, i) => {
8
+ if (caseSensitive) {
9
+ return mail === other.sort((compareFn))[i];
10
+ } else {
11
+ return mail.toLowerCase() === other.sort(compareFn)[i].toLowerCase();
12
+ }
13
+ });
14
+ return arr.length === other.length && isEachElementEqual;
15
+ };
16
+
17
+ const recipientsMatchVerification = (expectedRecipients, actualRecipients) => {
18
+ const caseSensitive = false;
19
+
20
+ return expectedRecipients.from.includes(actualRecipients.from) && // For some emails can be few sendor options (ex: branded emails)
21
+ compareUnorderedArrays(actualRecipients.to, expectedRecipients.to, { caseSensitive }) &&
22
+ compareUnorderedArrays(actualRecipients.cc, expectedRecipients.cc, { caseSensitive });
23
+ };
24
+
25
+ const regexVerification = (message, regex, { returnType } = {}) => {
26
+ const capturingGroupsArr = message.match(regex);
27
+
28
+ if (!capturingGroupsArr || capturingGroupsArr.length < 1) {
29
+ return null;
30
+ }
31
+
32
+ const capturingGroups = capturingGroupsArr[capturingGroupsArr.length - 1];
33
+
34
+ if (!capturingGroups || capturingGroups.length < 2) {
35
+ return null;
36
+ }
37
+
38
+ switch (returnType) {
39
+ case 'url':
40
+ return typeof capturingGroups === 'string' ? capturingGroups : capturingGroups[capturingGroups.length - 1];
41
+ case 'body':
42
+ return message;
43
+ default:
44
+ return 'Bad "returnType" argument';
45
+ }
46
+ };
47
+
48
+ const extractEmailFromNameAndEmailFormat = str => {
49
+ // In case the format is 'First Last <username@domain.com>' we will return username@domain.com only
50
+ return str.split('<').pop().split('>')[0];
51
+ };
52
+ const logRetrievedEmailInfo = (to, subject, { cc } = {}) => {
53
+ let log = 'The following email retrieved and will be sent to trash:';
54
+ log += `\n| To: ${to}`;
55
+ cc ? log += `\n| Cc: ${cc}` : '';
56
+ log += `\n| Subject: ${subject}`;
57
+ };
58
+
59
+ const getEmailTextInSubject = (recordCompanyName, emailType, isAfterUpdateRequirements = false, { requesterName = 'Default' } = {}) => {
60
+ const subject = EMAIL_SUBJECT[emailType]({ recordCompanyName, requesterName });
61
+
62
+ return isAfterUpdateRequirements ? `Updated Requirements - ${subject}` : subject;
63
+ };
64
+
65
+ const getMailActionButtonUrlRegex = () => {
66
+ return /(https:\/\/[a-zA-Z0-9.].*[a-zA-Z.]+\/CheckCustomersInviteLinkJSON\?data=[^"]+)/g;
67
+ };
68
+
69
+ const getUnsubscribeButtonUrlRegex = () => {
70
+ return /(\/[a-zA-Z0-9.].*[a-zA-Z.]+\/vendor-app\/email\/unsubscribe\?data=[^"]+)/g;
71
+ };
72
+
73
+ const getEncryptedDataFromLink = (link, { removeLastTwoCharts } = {}) => {
74
+ const encryptedData = link.split('data=').pop();
75
+ return removeLastTwoCharts ? encryptedData.slice(0, -2) : encryptedData;
76
+ };
77
+
78
+ module.exports = {
79
+ recipientsMatchVerification,
80
+ regexVerification,
81
+ extractEmailFromNameAndEmailFormat,
82
+ logRetrievedEmailInfo,
83
+ getEmailTextInSubject,
84
+ getMailActionButtonUrlRegex,
85
+ getUnsubscribeButtonUrlRegex,
86
+ getEncryptedDataFromLink
87
+ };
@@ -1,26 +1,26 @@
1
- const requests = require('../../../../common/requests/cookieAuth/requests');
2
- const { backendUrl } = require('../../../../env').getEnv();
3
-
4
- const Endpoints = {
5
- getCustomizationsByAccountId: accountId => `${backendUrl}/saas/email-customizations?accountId=${accountId}`,
6
- restoreDefaultById: id => `${backendUrl}/saas/email-customization/${id}/restore?version=DEFAULT`,
7
- deletePermanentlyById: id => `${backendUrl}/saas/email-customization/${id}/permanently`
8
- };
9
-
10
- const getEmailCustomizationsByAccountId = (accountId, context) => {
11
- return requests.getRequestHandler(Endpoints.getCustomizationsByAccountId(accountId), {}, context);
12
- };
13
-
14
- const restoreDefaultById = (id, context) => {
15
- return requests.postRequestHandler(Endpoints.restoreDefaultById(id), {}, context);
16
- };
17
-
18
- const deleteEmailCustomizationPermanentlyById = (id, context) => {
19
- return requests.deleteRequestHandler(Endpoints.deletePermanentlyById(id), context);
20
- };
21
-
22
- module.exports = {
23
- getEmailCustomizationsByAccountId,
24
- restoreDefaultById,
25
- deleteEmailCustomizationPermanentlyById
26
- };
1
+ const requests = require('../../../../common/requests/cookieAuth/requests');
2
+ const { backendUrl } = require('../../../../env').getEnv();
3
+
4
+ const Endpoints = {
5
+ getCustomizationsByAccountId: accountId => `${backendUrl}/saas/email-customizations?accountId=${accountId}`,
6
+ restoreDefaultById: id => `${backendUrl}/saas/email-customization/${id}/restore?version=DEFAULT`,
7
+ deletePermanentlyById: id => `${backendUrl}/saas/email-customization/${id}/permanently`
8
+ };
9
+
10
+ const getEmailCustomizationsByAccountId = (accountId, context) => {
11
+ return requests.getRequestHandler(Endpoints.getCustomizationsByAccountId(accountId), {}, context);
12
+ };
13
+
14
+ const restoreDefaultById = (id, context) => {
15
+ return requests.postRequestHandler(Endpoints.restoreDefaultById(id), {}, context);
16
+ };
17
+
18
+ const deleteEmailCustomizationPermanentlyById = (id, context) => {
19
+ return requests.deleteRequestHandler(Endpoints.deletePermanentlyById(id), context);
20
+ };
21
+
22
+ module.exports = {
23
+ getEmailCustomizationsByAccountId,
24
+ restoreDefaultById,
25
+ deleteEmailCustomizationPermanentlyById
26
+ };
@@ -1,50 +1,50 @@
1
- const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
2
-
3
- const emailCustomizationApi = require('./email.customization.api');
4
-
5
- const getEmailCustomizationsByAccountId = async (accountId, context) => {
6
- const response = await emailCustomizationApi.getEmailCustomizationsByAccountId(accountId, context);
7
-
8
- if (response.status !== httpResponseStatusCodes.OK) {
9
- throw new Error(`Failed to get email customization by account id ${accountId}`);
10
- }
11
-
12
- return response.data;
13
- };
14
-
15
- const restoreDefaultById = async (id, context) => {
16
- const response = await emailCustomizationApi.restoreDefaultById(id, context);
17
-
18
- if (response.status !== httpResponseStatusCodes.OK) {
19
- throw new Error('Failed to restore email customization to default');
20
- }
21
-
22
- return response;
23
- };
24
-
25
- const deleteEmailCustomizationPermanentlyById = async (id, context) => {
26
- const response = await emailCustomizationApi.deleteEmailCustomizationPermanentlyById(id, context);
27
-
28
- if (response.status !== httpResponseStatusCodes.OK) {
29
- throw new Error(`Failed to delete email customization by id ${id}`);
30
- }
31
-
32
- return response;
33
- };
34
-
35
- const restoreAllEmailCustomizationsInAccount = async (accountId, context) => {
36
- const customizationList = await getEmailCustomizationsByAccountId(accountId, context);
37
-
38
- for (const customization of customizationList) {
39
- if (customization.id) {
40
- await restoreDefaultById(customization.id, context);
41
- }
42
- }
43
- };
44
-
45
- module.exports = {
46
- getEmailCustomizationsByAccountId,
47
- restoreDefaultById,
48
- deleteEmailCustomizationPermanentlyById,
49
- restoreAllEmailCustomizationsInAccount
50
- };
1
+ const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
2
+
3
+ const emailCustomizationApi = require('./email.customization.api');
4
+
5
+ const getEmailCustomizationsByAccountId = async (accountId, context) => {
6
+ const response = await emailCustomizationApi.getEmailCustomizationsByAccountId(accountId, context);
7
+
8
+ if (response.status !== httpResponseStatusCodes.OK) {
9
+ throw new Error(`Failed to get email customization by account id ${accountId}`);
10
+ }
11
+
12
+ return response.data;
13
+ };
14
+
15
+ const restoreDefaultById = async (id, context) => {
16
+ const response = await emailCustomizationApi.restoreDefaultById(id, context);
17
+
18
+ if (response.status !== httpResponseStatusCodes.OK) {
19
+ throw new Error('Failed to restore email customization to default');
20
+ }
21
+
22
+ return response;
23
+ };
24
+
25
+ const deleteEmailCustomizationPermanentlyById = async (id, context) => {
26
+ const response = await emailCustomizationApi.deleteEmailCustomizationPermanentlyById(id, context);
27
+
28
+ if (response.status !== httpResponseStatusCodes.OK) {
29
+ throw new Error(`Failed to delete email customization by id ${id}`);
30
+ }
31
+
32
+ return response;
33
+ };
34
+
35
+ const restoreAllEmailCustomizationsInAccount = async (accountId, context) => {
36
+ const customizationList = await getEmailCustomizationsByAccountId(accountId, context);
37
+
38
+ for (const customization of customizationList) {
39
+ if (customization.id) {
40
+ await restoreDefaultById(customization.id, context);
41
+ }
42
+ }
43
+ };
44
+
45
+ module.exports = {
46
+ getEmailCustomizationsByAccountId,
47
+ restoreDefaultById,
48
+ deleteEmailCustomizationPermanentlyById,
49
+ restoreAllEmailCustomizationsInAccount
50
+ };
@@ -1,3 +1,3 @@
1
- const services = require('./api/email.customization.service');
2
-
3
- module.exports = { services };
1
+ const services = require('./api/email.customization.service');
2
+
3
+ module.exports = { services };
@@ -1,95 +1,95 @@
1
- const requests = require('../../../../common/requests/cookieAuth/requests');
2
- const internalRequests = require('../../../../common/requests/internalAuth/requests');
3
-
4
- const { nodeBackendUrl, backendUrl } = require('../../../../env').getEnv();
5
-
6
- const Endpoints = {
7
- createGlobalRecord: `${nodeBackendUrl}/global-record`,
8
- getGlobalRecordById: id => `${nodeBackendUrl}/global-record/id/${id}`,
9
- getAllGlobalRecords: (pageNumber, itemsInPage) => `${nodeBackendUrl}/global-record/all-global-records/${pageNumber}/items/${itemsInPage}`,
10
- getGlobalRecordServiceAreas: `${backendUrl}/saas/global-record/service-areas`,
11
- deleteGlobalRecord: id => `${nodeBackendUrl}/global-record/id/${id}`,
12
- updateGlobalRecord: id => `${nodeBackendUrl}/global-record/id/${id}`,
13
- getGlobalRecordProfile: id => `${nodeBackendUrl}/global-record/record-profile/id/${id}`,
14
- getGlobalRecordByPolicyNumber: policyNumber => `${nodeBackendUrl}/global-record/policyNumber/${policyNumber}`,
15
- publishGlobalRecord: `${backendUrl}/saas/global-record/publish`,
16
- getGlobalRecordLinkedRecords: id => `${backendUrl}/saas/global-record/${id}/linked-records`,
17
- splitToNewGlobalRecord: `${backendUrl}/saas/global-record/split-to-new`,
18
- splitToExistingRecord: `${backendUrl}/saas/global-record/split-to-existing`,
19
- getGlobalByRecordId: recordId => `${backendUrl}/saas/global-record/${recordId}`,
20
- dismiss: `${backendUrl}/saas/global-record/dismiss`
21
- };
22
-
23
- const getGlobalRecord = id => {
24
- return internalRequests.getRequestHandler(Endpoints.getGlobalRecordById(id));
25
- };
26
-
27
- const createGlobalRecord = globalRecord => {
28
- return internalRequests.postRequestHandler(Endpoints.createGlobalRecord, globalRecord);
29
- };
30
-
31
- const getAllGlobalRecords = (data, pageNumber, itemsInPage, context) => {
32
- return requests.postRequestHandler(Endpoints.getAllGlobalRecords(pageNumber, itemsInPage), data, context);
33
- };
34
-
35
- const deleteGlobalRecord = (id, globalRecordModel) => {
36
- return internalRequests.deleteRequestHandler(Endpoints.deleteGlobalRecord(id), {}, {}, globalRecordModel);
37
- };
38
-
39
- const updateGlobalRecord = (id, updatedGlobalRecord) => {
40
- return internalRequests.putRequestHandler(Endpoints.updateGlobalRecord(id), updatedGlobalRecord);
41
- };
42
-
43
- const getGlobalRecordServiceAreas = context => {
44
- return requests.getRequestHandler(Endpoints.getGlobalRecordServiceAreas, {}, context);
45
- };
46
-
47
- const getGlobalRecordProfile = (id, context) => {
48
- return requests.getRequestHandler(Endpoints.getGlobalRecordProfile(id), {}, context);
49
- };
50
-
51
- const publishGlobalRecord = (globalRecordDetails, context) => {
52
- return requests.putRequestHandler(Endpoints.publishGlobalRecord, globalRecordDetails, context);
53
- };
54
-
55
- const getGlobalRecordByPolicyNumber = policyNumber => {
56
- return internalRequests.getRequestHandler(Endpoints.getGlobalRecordByPolicyNumber(policyNumber));
57
- };
58
-
59
- const getGlobalRecordLinkedRecords = (id, context) => {
60
- return requests.getRequestHandler(Endpoints.getGlobalRecordLinkedRecords(id), {}, context);
61
- };
62
-
63
- const splitToNewGlobalRecord = ({ recordId, glPolicyNumber }, context) => {
64
- return requests.postRequestHandler(Endpoints.splitToNewGlobalRecord, { recordId, glPolicyNumber }, context);
65
- };
66
-
67
- const splitToExistGlobalRecord = ({ recordId, glPolicyNumber, newGlobalRecordId }, context) => {
68
- return requests.putRequestHandler(Endpoints.splitToExistingRecord, { recordId, glPolicyNumber, newGlobalRecordId }, context);
69
- };
70
-
71
- const getGlobalRecordByRecordId = (recordId, context) => {
72
- return requests.getRequestHandler(Endpoints.getGlobalByRecordId(recordId), {}, context);
73
- };
74
-
75
- const dismissGlobalChanges = (id, context) => {
76
- const body = { id, userName: 'Main Operator' };
77
- return requests.putRequestHandler(Endpoints.dismiss, body, context);
78
- };
79
-
80
- module.exports = {
81
- createGlobalRecord,
82
- getGlobalRecord,
83
- getAllGlobalRecords,
84
- getGlobalRecordServiceAreas,
85
- deleteGlobalRecord,
86
- updateGlobalRecord,
87
- getGlobalRecordProfile,
88
- getGlobalRecordByPolicyNumber,
89
- publishGlobalRecord,
90
- getGlobalRecordLinkedRecords,
91
- splitToNewGlobalRecord,
92
- splitToExistGlobalRecord,
93
- getGlobalRecordByRecordId,
94
- dismissGlobalChanges
95
- };
1
+ const requests = require('../../../../common/requests/cookieAuth/requests');
2
+ const internalRequests = require('../../../../common/requests/internalAuth/requests');
3
+
4
+ const { nodeBackendUrl, backendUrl } = require('../../../../env').getEnv();
5
+
6
+ const Endpoints = {
7
+ createGlobalRecord: `${nodeBackendUrl}/global-record`,
8
+ getGlobalRecordById: id => `${nodeBackendUrl}/global-record/id/${id}`,
9
+ getAllGlobalRecords: (pageNumber, itemsInPage) => `${nodeBackendUrl}/global-record/all-global-records/${pageNumber}/items/${itemsInPage}`,
10
+ getGlobalRecordServiceAreas: `${backendUrl}/saas/global-record/service-areas`,
11
+ deleteGlobalRecord: id => `${nodeBackendUrl}/global-record/id/${id}`,
12
+ updateGlobalRecord: id => `${nodeBackendUrl}/global-record/id/${id}`,
13
+ getGlobalRecordProfile: id => `${nodeBackendUrl}/global-record/record-profile/id/${id}`,
14
+ getGlobalRecordByPolicyNumber: policyNumber => `${nodeBackendUrl}/global-record/policyNumber/${policyNumber}`,
15
+ publishGlobalRecord: `${backendUrl}/saas/global-record/publish`,
16
+ getGlobalRecordLinkedRecords: id => `${backendUrl}/saas/global-record/${id}/linked-records`,
17
+ splitToNewGlobalRecord: `${backendUrl}/saas/global-record/split-to-new`,
18
+ splitToExistingRecord: `${backendUrl}/saas/global-record/split-to-existing`,
19
+ getGlobalByRecordId: recordId => `${backendUrl}/saas/global-record/${recordId}`,
20
+ dismiss: `${backendUrl}/saas/global-record/dismiss`
21
+ };
22
+
23
+ const getGlobalRecord = id => {
24
+ return internalRequests.getRequestHandler(Endpoints.getGlobalRecordById(id));
25
+ };
26
+
27
+ const createGlobalRecord = globalRecord => {
28
+ return internalRequests.postRequestHandler(Endpoints.createGlobalRecord, globalRecord);
29
+ };
30
+
31
+ const getAllGlobalRecords = (data, pageNumber, itemsInPage, context) => {
32
+ return requests.postRequestHandler(Endpoints.getAllGlobalRecords(pageNumber, itemsInPage), data, context);
33
+ };
34
+
35
+ const deleteGlobalRecord = (id, globalRecordModel) => {
36
+ return internalRequests.deleteRequestHandler(Endpoints.deleteGlobalRecord(id), {}, {}, globalRecordModel);
37
+ };
38
+
39
+ const updateGlobalRecord = (id, updatedGlobalRecord) => {
40
+ return internalRequests.putRequestHandler(Endpoints.updateGlobalRecord(id), updatedGlobalRecord);
41
+ };
42
+
43
+ const getGlobalRecordServiceAreas = context => {
44
+ return requests.getRequestHandler(Endpoints.getGlobalRecordServiceAreas, {}, context);
45
+ };
46
+
47
+ const getGlobalRecordProfile = (id, context) => {
48
+ return requests.getRequestHandler(Endpoints.getGlobalRecordProfile(id), {}, context);
49
+ };
50
+
51
+ const publishGlobalRecord = (globalRecordDetails, context) => {
52
+ return requests.putRequestHandler(Endpoints.publishGlobalRecord, globalRecordDetails, context);
53
+ };
54
+
55
+ const getGlobalRecordByPolicyNumber = policyNumber => {
56
+ return internalRequests.getRequestHandler(Endpoints.getGlobalRecordByPolicyNumber(policyNumber));
57
+ };
58
+
59
+ const getGlobalRecordLinkedRecords = (id, context) => {
60
+ return requests.getRequestHandler(Endpoints.getGlobalRecordLinkedRecords(id), {}, context);
61
+ };
62
+
63
+ const splitToNewGlobalRecord = ({ recordId, glPolicyNumber }, context) => {
64
+ return requests.postRequestHandler(Endpoints.splitToNewGlobalRecord, { recordId, glPolicyNumber }, context);
65
+ };
66
+
67
+ const splitToExistGlobalRecord = ({ recordId, glPolicyNumber, newGlobalRecordId }, context) => {
68
+ return requests.putRequestHandler(Endpoints.splitToExistingRecord, { recordId, glPolicyNumber, newGlobalRecordId }, context);
69
+ };
70
+
71
+ const getGlobalRecordByRecordId = (recordId, context) => {
72
+ return requests.getRequestHandler(Endpoints.getGlobalByRecordId(recordId), {}, context);
73
+ };
74
+
75
+ const dismissGlobalChanges = (id, context) => {
76
+ const body = { id, userName: 'Main Operator' };
77
+ return requests.putRequestHandler(Endpoints.dismiss, body, context);
78
+ };
79
+
80
+ module.exports = {
81
+ createGlobalRecord,
82
+ getGlobalRecord,
83
+ getAllGlobalRecords,
84
+ getGlobalRecordServiceAreas,
85
+ deleteGlobalRecord,
86
+ updateGlobalRecord,
87
+ getGlobalRecordProfile,
88
+ getGlobalRecordByPolicyNumber,
89
+ publishGlobalRecord,
90
+ getGlobalRecordLinkedRecords,
91
+ splitToNewGlobalRecord,
92
+ splitToExistGlobalRecord,
93
+ getGlobalRecordByRecordId,
94
+ dismissGlobalChanges
95
+ };