@getjones/test-infra 4.4.16 → 4.5.0

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 (238) hide show
  1. package/package.json +30 -30
  2. package/src/common/commonFlows/auth/auth.js +40 -40
  3. package/src/common/commonFlows/index.js +4 -4
  4. package/src/common/commonFlows/records/records.js +260 -243
  5. package/src/common/consts/accountSettings.js +14 -14
  6. package/src/common/consts/activationStatuses.js +6 -6
  7. package/src/common/consts/autocomplete.js +10 -10
  8. package/src/common/consts/constantsForRecordsSortingAndFilters.js +48 -40
  9. package/src/common/consts/dashboardCharts.js +18 -18
  10. package/src/common/consts/homepage/AttentionTab.js +5 -5
  11. package/src/common/consts/homepage/sortOptions.js +14 -0
  12. package/src/common/consts/ocrStatuses.js +6 -6
  13. package/src/common/consts/projectSettings.js +21 -21
  14. package/src/common/consts/recordTypes.js +5 -5
  15. package/src/common/consts/requirementActions.js +10 -0
  16. package/src/common/consts/s3FileTypes.js +13 -13
  17. package/src/common/consts/userRoles.js +18 -6
  18. package/src/common/consts/userTypes.js +8 -8
  19. package/src/common/errorCodes.js +3 -3
  20. package/src/common/httpResponseStatusCodes.json +11 -11
  21. package/src/common/httpResponseTypes.json +2 -2
  22. package/src/common/requests/apiKeyAuth/requests.js +44 -44
  23. package/src/common/requests/cookieAuth/requests.js +40 -40
  24. package/src/common/requests/internalAuth/requests.js +48 -48
  25. package/src/common/requests/requestHandlers.js +80 -80
  26. package/src/common/utils/complianceUtil.js +114 -114
  27. package/src/common/utils/configsUtil.js +22 -22
  28. package/src/common/utils/dataTypeUtils.js +41 -41
  29. package/src/common/utils/numberUtils.js +22 -22
  30. package/src/common/utils/objectUtils.js +7 -7
  31. package/src/common/utils/timeUtils.js +177 -177
  32. package/src/common/validations/errorValidation.js +16 -16
  33. package/src/common/validations/typeValidations.js +36 -36
  34. package/src/defaults/configs/auditConfigs.js +125 -125
  35. package/src/defaults/configs/coverage.js +227 -227
  36. package/src/defaults/configs/polices.js +75 -75
  37. package/src/defaults/configs/requirement.js +32 -32
  38. package/src/defaults/index.js +6 -6
  39. package/src/env.js +57 -57
  40. package/src/factory/globalRecord/globalRecord.js +43 -43
  41. package/src/factory/index.js +8 -8
  42. package/src/factory/records/records.js +229 -229
  43. package/src/factory/users/users.js +86 -86
  44. package/src/index.js +97 -97
  45. package/src/saas/internal-api/accountDirectory/api/accountDirectory.api.js +50 -50
  46. package/src/saas/internal-api/accountDirectory/api/accountDirectory.service.js +182 -182
  47. package/src/saas/internal-api/accountDirectory/index.js +4 -4
  48. package/src/saas/internal-api/accountDirectory/models/accountDirectory.model.js +40 -40
  49. package/src/saas/internal-api/accounts/api/core/accounts.core.api.js +35 -35
  50. package/src/saas/internal-api/accounts/api/core/accounts.core.service.js +93 -93
  51. package/src/saas/internal-api/accounts/api/emailCustomization/accounts.email.customizations.api.js +29 -29
  52. package/src/saas/internal-api/accounts/api/emailCustomization/accounts.email.customizations.service.js +61 -61
  53. package/src/saas/internal-api/accounts/api/openapi/accounts.openapi.api.js +48 -48
  54. package/src/saas/internal-api/accounts/api/openapi/accounts.openapi.service.js +74 -74
  55. package/src/saas/internal-api/accounts/api/settings/settings.api.js +21 -21
  56. package/src/saas/internal-api/accounts/api/settings/settings.service.js +41 -41
  57. package/src/saas/internal-api/accounts/consts/consts.js +8 -8
  58. package/src/saas/internal-api/accounts/index.js +22 -22
  59. package/src/saas/internal-api/accounts/models/core/create.account.model.js +16 -16
  60. package/src/saas/internal-api/accounts/models/settings/update.settings.model.js +51 -42
  61. package/src/saas/internal-api/accounts/utils/utils.js +60 -60
  62. package/src/saas/internal-api/agreement/api/agreement.api.js +39 -39
  63. package/src/saas/internal-api/agreement/api/agreement.service.js +121 -121
  64. package/src/saas/internal-api/agreement/consts/consts.js +11 -10
  65. package/src/saas/internal-api/agreement/index.js +12 -12
  66. package/src/saas/internal-api/agreement/models/create.agreement.model.js +12 -12
  67. package/src/saas/internal-api/agreement/models/createAgreementByAuditorModel.js +11 -11
  68. package/src/saas/internal-api/agreement/models/createAgreementByPMModel.js +13 -13
  69. package/src/saas/internal-api/auditCustomerRules/api/customer.rules.api.js +43 -43
  70. package/src/saas/internal-api/auditCustomerRules/api/customer.rules.service.js +105 -105
  71. package/src/saas/internal-api/auditCustomerRules/consts/customer.rule.js +11 -11
  72. package/src/saas/internal-api/auditCustomerRules/index.js +6 -6
  73. package/src/saas/internal-api/auditCustomerRules/models/customer.rule.model.js +46 -46
  74. package/src/saas/internal-api/auditCustomerRules/utils/customer.rule.util.js +19 -19
  75. package/src/saas/internal-api/auditNotes/api/audit.notes.api.js +40 -40
  76. package/src/saas/internal-api/auditNotes/api/audit.notes.service.js +115 -115
  77. package/src/saas/internal-api/auditNotes/index.js +4 -4
  78. package/src/saas/internal-api/auditNotes/models/audit.note.model.js +30 -30
  79. package/src/saas/internal-api/auth/api/auth.api.js +27 -27
  80. package/src/saas/internal-api/auth/api/auth.service.js +90 -90
  81. package/src/saas/internal-api/auth/index.js +3 -3
  82. package/src/saas/internal-api/coi/api/coi.api.js +45 -45
  83. package/src/saas/internal-api/coi/api/coi.service.js +39 -39
  84. package/src/saas/internal-api/coi/consts/hashes.js +4 -4
  85. package/src/saas/internal-api/coi/consts/uploaderTypes.js +5 -5
  86. package/src/saas/internal-api/coi/index.js +14 -14
  87. package/src/saas/internal-api/coi/models/Combine.last.two.cois.model.js +25 -25
  88. package/src/saas/internal-api/coi/models/submit.coi.model.js +19 -19
  89. package/src/saas/internal-api/coi/utils/utils.js +117 -117
  90. package/src/saas/internal-api/compliance/api/amBestRating/am.best.rating.api.js +12 -0
  91. package/src/saas/internal-api/compliance/api/amBestRating/am.best.rating.service.js +14 -0
  92. package/src/saas/internal-api/compliance/api/audit/audit.api.js +115 -115
  93. package/src/saas/internal-api/compliance/api/audit/audit.service.js +300 -300
  94. package/src/saas/internal-api/compliance/api/convert/convert.api.js +17 -17
  95. package/src/saas/internal-api/compliance/api/convert/convert.service.js +11 -11
  96. package/src/saas/internal-api/compliance/api/coverage/coverage.api.js +33 -33
  97. package/src/saas/internal-api/compliance/api/coverage/coverage.service.js +48 -48
  98. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.api.js +38 -38
  99. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.service.js +183 -182
  100. package/src/saas/internal-api/compliance/consts/audit.js +111 -111
  101. package/src/saas/internal-api/compliance/index.js +36 -33
  102. package/src/saas/internal-api/compliance/models/audit/audit.model.js +96 -96
  103. package/src/saas/internal-api/compliance/models/waive/waive.model.js +49 -49
  104. package/src/saas/internal-api/compliance/utils/auditUtil.js +254 -254
  105. package/src/saas/internal-api/compliance/utils/coverageUtil.js +40 -40
  106. package/src/saas/internal-api/contractors/api/contractors.api.js +209 -209
  107. package/src/saas/internal-api/contractors/api/contractors.service.js +361 -361
  108. package/src/saas/internal-api/contractors/consts/consts.js +6 -6
  109. package/src/saas/internal-api/contractors/index.js +8 -8
  110. package/src/saas/internal-api/contractors/models/assign.requirement.model.js +10 -10
  111. package/src/saas/internal-api/contractors/models/edit.contractor.model.js +73 -62
  112. package/src/saas/internal-api/contractors/models/link.request.model.js +10 -10
  113. package/src/saas/internal-api/contractors/models/subscription.contractor.model.js +13 -13
  114. package/src/saas/internal-api/contractors/models/verification.contractor.model.js +27 -27
  115. package/src/saas/internal-api/contractors/utils.js +25 -25
  116. package/src/saas/internal-api/dashboard/api/recordList.api.js +38 -38
  117. package/src/saas/internal-api/dashboard/api/recordList.service.js +60 -60
  118. package/src/saas/internal-api/dashboard/index.js +5 -5
  119. package/src/saas/internal-api/dashboard/models/dashboard.filter.criteria.model.js +38 -38
  120. package/src/saas/internal-api/dbEmails/api/db.emails.api.js +25 -25
  121. package/src/saas/internal-api/dbEmails/api/db.emails.service.js +156 -156
  122. package/src/saas/internal-api/dbEmails/consts/consts.js +55 -55
  123. package/src/saas/internal-api/dbEmails/index.js +6 -6
  124. package/src/saas/internal-api/dbEmails/models/db.emails.model.js +22 -22
  125. package/src/saas/internal-api/dbEmails/utils/util.js +87 -87
  126. package/src/saas/internal-api/emailCustomization/api/email.customization.api.js +26 -26
  127. package/src/saas/internal-api/emailCustomization/api/email.customization.service.js +50 -50
  128. package/src/saas/internal-api/emailCustomization/index.js +3 -3
  129. package/src/saas/internal-api/globalRecord/api/global.record.api.js +95 -95
  130. package/src/saas/internal-api/globalRecord/api/global.record.service.js +112 -112
  131. package/src/saas/internal-api/globalRecord/consts.js +20 -20
  132. package/src/saas/internal-api/globalRecord/index.js +6 -6
  133. package/src/saas/internal-api/globalRecord/models/global.record.model.js +60 -60
  134. package/src/saas/internal-api/globalRecord/utils/util.js +161 -161
  135. package/src/saas/internal-api/homepageCharts/api/charts.api.js +12 -12
  136. package/src/saas/internal-api/homepageCharts/api/charts.service.js +7 -7
  137. package/src/saas/internal-api/homepageCharts/index.js +3 -3
  138. package/src/saas/internal-api/policyFile/api/policy.file.api.js +43 -43
  139. package/src/saas/internal-api/policyFile/api/policy.file.service.js +117 -117
  140. package/src/saas/internal-api/policyFile/consts.js +21 -21
  141. package/src/saas/internal-api/policyFile/index.js +11 -11
  142. package/src/saas/internal-api/policyFile/models/create.policy.file.model.js +11 -11
  143. package/src/saas/internal-api/policyFile/models/set.publish.flag.to.policy.model.js +13 -13
  144. package/src/saas/internal-api/projects/api/core/projects.api.js +39 -39
  145. package/src/saas/internal-api/projects/api/core/projects.service.js +77 -77
  146. package/src/saas/internal-api/projects/api/settings/project.settings.api.js +18 -18
  147. package/src/saas/internal-api/projects/api/settings/project.settings.service.js +35 -35
  148. package/src/saas/internal-api/projects/consts/defaultProject.js +3 -3
  149. package/src/saas/internal-api/projects/index.js +24 -24
  150. package/src/saas/internal-api/projects/models/core/create.project.model.js +41 -41
  151. package/src/saas/internal-api/projects/models/core/update.project.model.js +47 -47
  152. package/src/saas/internal-api/projects/models/settings/update.project.settings.model.js +40 -40
  153. package/src/saas/internal-api/projects/utils/utils.js +155 -155
  154. package/src/saas/internal-api/recordHub/api/record.hub.api.js +14 -14
  155. package/src/saas/internal-api/recordHub/api/record.hub.service.js +21 -21
  156. package/src/saas/internal-api/recordHub/index.js +3 -3
  157. package/src/saas/internal-api/recordNotes/api/record.notes.api.js +38 -38
  158. package/src/saas/internal-api/recordNotes/api/record.notes.service.js +47 -47
  159. package/src/saas/internal-api/recordNotes/api/record.notes.utils.js +12 -12
  160. package/src/saas/internal-api/recordNotes/index.js +3 -3
  161. package/src/saas/internal-api/reports/api/reports.api.js +62 -62
  162. package/src/saas/internal-api/reports/api/reports.service.js +79 -79
  163. package/src/saas/internal-api/reports/consts/consts.js +74 -74
  164. package/src/saas/internal-api/reports/index.js +15 -15
  165. package/src/saas/internal-api/reports/models/report.model.js +27 -27
  166. package/src/saas/internal-api/requests/api/requests.api.js +126 -120
  167. package/src/saas/internal-api/requests/api/requests.service.js +301 -295
  168. package/src/saas/internal-api/requests/index.js +21 -21
  169. package/src/saas/internal-api/requests/models/create.request.model.js +36 -36
  170. package/src/saas/internal-api/requests/models/draft.request.criteria.model.js +18 -18
  171. package/src/saas/internal-api/requests/models/draft.request.report.model.js +14 -14
  172. package/src/saas/internal-api/requests/models/edit.request.model.js +31 -31
  173. package/src/saas/internal-api/requests/models/homepageRequestCriteriaModel.js +19 -19
  174. package/src/saas/internal-api/requests/models/requestListCriteriaModel.js +17 -17
  175. package/src/saas/internal-api/requests/models/tenant.request.model.js +9 -9
  176. package/src/saas/internal-api/requests/utils.js +16 -16
  177. package/src/saas/internal-api/requestsTable/api/requests.table.api.js +20 -20
  178. package/src/saas/internal-api/requestsTable/api/requests.table.service.js +14 -14
  179. package/src/saas/internal-api/requestsTable/index.js +3 -3
  180. package/src/saas/internal-api/requirements/api/requirements.api.js +57 -57
  181. package/src/saas/internal-api/requirements/api/requirements.service.js +177 -177
  182. package/src/saas/internal-api/requirements/consts/attributeTypes.json +8 -8
  183. package/src/saas/internal-api/requirements/consts/consts.js +6 -6
  184. package/src/saas/internal-api/requirements/index.js +10 -10
  185. package/src/saas/internal-api/requirements/models/create.requirement.model.js +17 -17
  186. package/src/saas/internal-api/requirements/models/policy.model.js +35 -35
  187. package/src/saas/internal-api/requirements/models/update.requirement.model.js +19 -19
  188. package/src/saas/internal-api/requirements/utils/utils.js +129 -129
  189. package/src/saas/internal-api/serviceArea/api/coordinates.api.js +12 -12
  190. package/src/saas/internal-api/serviceArea/api/coordinates.service.js +7 -7
  191. package/src/saas/internal-api/serviceArea/index.js +4 -4
  192. package/src/saas/internal-api/serviceArea/utils/utils.js +8 -8
  193. package/src/saas/internal-api/tabs/api/tabs.api.js +32 -32
  194. package/src/saas/internal-api/tabs/api/tabs.service.js +54 -54
  195. package/src/saas/internal-api/tabs/index.js +3 -3
  196. package/src/saas/internal-api/tabs/models/tabs.model.js +19 -19
  197. package/src/saas/internal-api/thread-scheduler/runner.js +55 -55
  198. package/src/saas/internal-api/uploadFiles/api/upload.file.api.js +43 -43
  199. package/src/saas/internal-api/uploadFiles/api/upload.file.service.js +107 -106
  200. package/src/saas/internal-api/uploadFiles/consts.js +12 -12
  201. package/src/saas/internal-api/uploadFiles/index.js +5 -5
  202. package/src/saas/internal-api/users/api/tenantApp/tenant.app.api.js +38 -38
  203. package/src/saas/internal-api/users/api/tenantApp/tenant.app.service.js +108 -108
  204. package/src/saas/internal-api/users/api/users.api.js +127 -127
  205. package/src/saas/internal-api/users/api/users.service.js +258 -258
  206. package/src/saas/internal-api/users/index.js +16 -16
  207. package/src/saas/internal-api/users/models/create.inner.system.user.model.js +18 -18
  208. package/src/saas/internal-api/users/models/notification.settings.model.js +12 -12
  209. package/src/saas/internal-api/users/models/tenent.user.model.js +11 -11
  210. package/src/saas/internal-api/users/models/users.model.js +43 -43
  211. package/src/saas/internal-api/users/utils/util.js +39 -39
  212. package/src/saas/internal-api/vendorProfile/api/vendor.profile.api.js +26 -26
  213. package/src/saas/internal-api/vendorProfile/api/vendor.profile.service.js +19 -19
  214. package/src/saas/internal-api/vendorProfile/index.js +3 -3
  215. package/src/saas/openapi/accounts/accounts.api.js +17 -17
  216. package/src/saas/openapi/accounts/accounts.service.js +11 -11
  217. package/src/saas/openapi/coi/coi.api.js +30 -30
  218. package/src/saas/openapi/coi/coi.service.js +43 -43
  219. package/src/saas/openapi/projects/projects.api.js +83 -83
  220. package/src/saas/openapi/projects/projects.service.js +64 -64
  221. package/src/saas/openapi/requests/index.js +7 -7
  222. package/src/saas/openapi/requests/models/invite.request.model.js +40 -40
  223. package/src/saas/openapi/requests/models/update.request.model.js +35 -35
  224. package/src/saas/openapi/requests/requests.api.js +93 -87
  225. package/src/saas/openapi/requests/requests.service.js +94 -81
  226. package/src/saas/openapi/requirements/index.js +6 -6
  227. package/src/saas/openapi/requirements/models/copy.requirement.model.js +10 -10
  228. package/src/saas/openapi/requirements/requirements.api.js +41 -41
  229. package/src/saas/openapi/requirements/requirements.service.js +49 -49
  230. package/src/saas/openapi/tabs/index.js +6 -6
  231. package/src/saas/openapi/tabs/models/create.tab.model.js +6 -6
  232. package/src/saas/openapi/tabs/tabs.api.js +27 -27
  233. package/src/saas/openapi/tabs/tabs.service.js +19 -19
  234. package/src/saas/openapi/users/user.model.js +10 -10
  235. package/src/saas/openapi/users/users.api.js +33 -33
  236. package/src/saas/openapi/users/users.service.js +51 -41
  237. package/tests/env.test.js +40 -40
  238. package/tests/validation.test.js +83 -83
@@ -1,43 +1,43 @@
1
- const requests = require('../../../../common/requests/cookieAuth/requests');
2
- const { backendUrl } = require('../../../../env').getEnv();
3
-
4
- const Endpoints = {
5
- getRelatedDocPreSignedUrl: `${backendUrl}/saas/pre-signed-url/upload/document`,
6
- getCreatePolicyPreSignedUrl: `${backendUrl}/saas/pre-signed-url/upload/policy`,
7
- createPolicyFiles: requestId => `${backendUrl}/saas/request/${requestId}/policy-files/create`,
8
- uploadRelatedDoc: recordId => `${backendUrl}/saas/contractor/${recordId}/document`,
9
- fileUpload: `${backendUrl}/file/finalize-upload`
10
- };
11
-
12
- const getRelatedDocPreSignedUrl = (formData, context) => {
13
- return requests.postRequestHandler(Endpoints.getRelatedDocPreSignedUrl, formData, context, formData.getHeaders());
14
- };
15
-
16
- const getCreatePolicyPreSignedUrl = (formData, context) => {
17
- return requests.postRequestHandler(Endpoints.getCreatePolicyPreSignedUrl, formData, context, formData.getHeaders());
18
- };
19
-
20
- const createPolicyFiles = (requestId, policyFileList, context) => {
21
- return requests.postRequestHandler(Endpoints.createPolicyFiles(requestId), policyFileList, context);
22
- };
23
-
24
- const uploadFileToS3 = (preSignedUrl, file) => {
25
- return requests.putRequestHandler(preSignedUrl, file);
26
- };
27
-
28
- const uploadRelatedDoc = (recordId, uploadDocumentModel, context) => {
29
- return requests.postRequestHandler(Endpoints.uploadRelatedDoc(recordId), uploadDocumentModel, context);
30
- };
31
-
32
- const uploadFile = data => {
33
- return requests.postRequestHandler(Endpoints.fileUpload, data, null, data.getHeaders());
34
- };
35
-
36
- module.exports = {
37
- getRelatedDocPreSignedUrl,
38
- getCreatePolicyPreSignedUrl,
39
- uploadRelatedDoc,
40
- uploadFileToS3,
41
- uploadFile,
42
- createPolicyFiles
43
- };
1
+ const requests = require('../../../../common/requests/cookieAuth/requests');
2
+ const { backendUrl } = require('../../../../env').getEnv();
3
+
4
+ const Endpoints = {
5
+ getRelatedDocPreSignedUrl: `${backendUrl}/saas/pre-signed-url/upload/document`,
6
+ getCreatePolicyPreSignedUrl: `${backendUrl}/saas/pre-signed-url/upload/policy`,
7
+ createPolicyFiles: requestId => `${backendUrl}/saas/request/${requestId}/policy-files/create`,
8
+ uploadRelatedDoc: recordId => `${backendUrl}/saas/contractor/${recordId}/document`,
9
+ fileUpload: `${backendUrl}/file/finalize-upload`
10
+ };
11
+
12
+ const getRelatedDocPreSignedUrl = (formData, context) => {
13
+ return requests.postRequestHandler(Endpoints.getRelatedDocPreSignedUrl, formData, context, formData.getHeaders());
14
+ };
15
+
16
+ const getCreatePolicyPreSignedUrl = (formData, context) => {
17
+ return requests.postRequestHandler(Endpoints.getCreatePolicyPreSignedUrl, formData, context, formData.getHeaders());
18
+ };
19
+
20
+ const createPolicyFiles = (requestId, policyFileList, context) => {
21
+ return requests.postRequestHandler(Endpoints.createPolicyFiles(requestId), policyFileList, context);
22
+ };
23
+
24
+ const uploadFileToS3 = (preSignedUrl, file) => {
25
+ return requests.putRequestHandler(preSignedUrl, file);
26
+ };
27
+
28
+ const uploadRelatedDoc = (recordId, uploadDocumentModel, context) => {
29
+ return requests.postRequestHandler(Endpoints.uploadRelatedDoc(recordId), uploadDocumentModel, context);
30
+ };
31
+
32
+ const uploadFile = data => {
33
+ return requests.postRequestHandler(Endpoints.fileUpload, data, null, data.getHeaders());
34
+ };
35
+
36
+ module.exports = {
37
+ getRelatedDocPreSignedUrl,
38
+ getCreatePolicyPreSignedUrl,
39
+ uploadRelatedDoc,
40
+ uploadFileToS3,
41
+ uploadFile,
42
+ createPolicyFiles
43
+ };
@@ -1,106 +1,107 @@
1
- const uploadFileApi = require('./upload.file.api');
2
- const fs = require('fs');
3
- const path = require('path');
4
- const FormData = require('form-data');
5
- const consts = require('../consts');
6
- const { DOCUMENT, TEMP_DOCUMENTS, TEMP_POLICY } = require('../../../../common/consts/s3FileTypes');
7
- const { CreatePolicyFileModel } = require('../../policyFile/models/create.policy.file.model');
8
- const { validateArray } = require('../../../../common/validations/typeValidations');
9
-
10
- const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
11
-
12
- const { RELATED_DOC_TYPES } = consts;
13
-
14
- const getRelatedDocPreSignedUrl = (recordId, context, { filePath }) => {
15
- const formData = new FormData();
16
- const fileName = path.basename(filePath);
17
- formData.append('recordId', recordId);
18
- formData.append('fileType', TEMP_DOCUMENTS);
19
- formData.append('fileName', fileName);
20
-
21
- return uploadFileApi.getRelatedDocPreSignedUrl(formData, context);
22
- };
23
-
24
- const getCreatePolicyPreSignedUrl = async (requestId, context, { shouldExpectError } = {}) => {
25
- const formData = new FormData();
26
- formData.append('requestId', requestId);
27
- const policyPreSignedUrlResponse = await uploadFileApi.getCreatePolicyPreSignedUrl(formData, context);
28
-
29
- if (policyPreSignedUrlResponse.status !== httpResponseStatusCodes.OK && !shouldExpectError) {
30
- throw new Error('Failed to get policy pre-signed url');
31
- }
32
-
33
- return policyPreSignedUrlResponse;
34
- };
35
-
36
- const uploadFileToS3 = async (preSignedUrl, filePath) => {
37
- const uploadFileToS3Response = await uploadFileApi.uploadFileToS3(preSignedUrl, fs.readFileSync(filePath));
38
-
39
- if (uploadFileToS3Response.status !== httpResponseStatusCodes.OK) {
40
- throw new Error('Failed to upload file to S3');
41
- }
42
-
43
- return uploadFileToS3Response;
44
- };
45
-
46
- const uploadRelatedDoc = async (recordId, context, { filePath, type = RELATED_DOC_TYPES.LEASE } = {}) => {
47
- const { data: { preSignedUrl, fileName: fullFilePath } } = await getRelatedDocPreSignedUrl(recordId, context, { filePath });
48
- await uploadFileToS3(preSignedUrl, filePath);
49
- const uploadResponse = await uploadFile(recordId, DOCUMENT, fullFilePath);
50
- const file = fs.statSync(filePath);
51
- const uploadedFileName = uploadResponse.data.fileName;
52
- return uploadFileApi.uploadRelatedDoc(recordId, { name: uploadedFileName, type, fullFilePath: uploadedFileName, fileSize: file.size }, context);
53
- };
54
-
55
- const uploadFile = (recordId, type, fileName) => {
56
- const formData = new FormData();
57
- formData.append('fileName', fileName) ;
58
- formData.append('fileType', type);
59
- formData.append('recordId', recordId);
60
- return uploadFileApi.uploadFile(formData);
61
- };
62
-
63
- const uploadPolicyFileAndGetPolicyModel = async (requestId, filePath, policyType, context) => {
64
- const { data } = await getCreatePolicyPreSignedUrl(requestId, context);
65
- const preSignedUrl = data.preSignedUrl;
66
- const tempFileName = data.fileName;
67
- const expectedPath = `/${TEMP_POLICY}/${tempFileName}`;
68
-
69
- if (!preSignedUrl.includes(expectedPath)) {
70
- throw new Error(`Pre-signed url is not as expected for policy ${policyType}`);
71
- }
72
-
73
- await uploadFileToS3(preSignedUrl, filePath);
74
-
75
- return new CreatePolicyFileModel(tempFileName, policyType);
76
- };
77
-
78
- const createPolicyFiles = async (requestId, policyFileList, context, { shouldExpectError } = {}) => {
79
- validateArray(policyFileList);
80
- const createPolicyFilesResponse = await uploadFileApi.createPolicyFiles(requestId, policyFileList, context);
81
-
82
- if (createPolicyFilesResponse.status !== httpResponseStatusCodes.OK && !shouldExpectError) {
83
- throw new Error('Failed to create policy files');
84
- }
85
-
86
- return createPolicyFilesResponse;
87
- };
88
-
89
- const uploadAndCreatePolicyFile = async (policyTypeList, policyFilePath, requestId, context) => {
90
- validateArray(policyTypeList);
91
-
92
- const uploadedPolicyModelsList = await Promise.all(policyTypeList.map(async fileType => {
93
- return uploadPolicyFileAndGetPolicyModel(requestId, policyFilePath, fileType, context);
94
- }));
95
-
96
- return createPolicyFiles(requestId, uploadedPolicyModelsList, context);
97
- };
98
-
99
- module.exports = {
100
- getCreatePolicyPreSignedUrl,
101
- uploadRelatedDoc,
102
- uploadFileToS3,
103
- uploadPolicyFileAndGetPolicyModel,
104
- createPolicyFiles,
105
- uploadAndCreatePolicyFile
106
- };
1
+ const uploadFileApi = require('./upload.file.api');
2
+ const fs = require('fs');
3
+ const path = require('path');
4
+ const FormData = require('form-data');
5
+ const consts = require('../consts');
6
+ const { DOCUMENT, TEMP_DOCUMENTS, TEMP_POLICY } = require('../../../../common/consts/s3FileTypes');
7
+ const { CreatePolicyFileModel } = require('../../policyFile/models/create.policy.file.model');
8
+ const { validateArray } = require('../../../../common/validations/typeValidations');
9
+ const { AGREEMENT_PATH } = require('../../agreement/consts/consts');
10
+
11
+ const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
12
+
13
+ const { RELATED_DOC_TYPES } = consts;
14
+
15
+ const getRelatedDocPreSignedUrl = (recordId, context, { filePath }) => {
16
+ const formData = new FormData();
17
+ const fileName = path.basename(filePath);
18
+ formData.append('recordId', recordId);
19
+ formData.append('fileType', TEMP_DOCUMENTS);
20
+ formData.append('fileName', fileName);
21
+
22
+ return uploadFileApi.getRelatedDocPreSignedUrl(formData, context);
23
+ };
24
+
25
+ const getCreatePolicyPreSignedUrl = async (requestId, context, { shouldExpectError } = {}) => {
26
+ const formData = new FormData();
27
+ formData.append('requestId', requestId);
28
+ const policyPreSignedUrlResponse = await uploadFileApi.getCreatePolicyPreSignedUrl(formData, context);
29
+
30
+ if (policyPreSignedUrlResponse.status !== httpResponseStatusCodes.OK && !shouldExpectError) {
31
+ throw new Error('Failed to get policy pre-signed url');
32
+ }
33
+
34
+ return policyPreSignedUrlResponse;
35
+ };
36
+
37
+ const uploadFileToS3 = async (preSignedUrl, filePath) => {
38
+ const uploadFileToS3Response = await uploadFileApi.uploadFileToS3(preSignedUrl, fs.readFileSync(filePath));
39
+
40
+ if (uploadFileToS3Response.status !== httpResponseStatusCodes.OK) {
41
+ throw new Error('Failed to upload file to S3');
42
+ }
43
+
44
+ return uploadFileToS3Response;
45
+ };
46
+
47
+ const uploadRelatedDoc = async (recordId, context, { filePath = AGREEMENT_PATH, type = RELATED_DOC_TYPES.LEASE } = {}) => {
48
+ const { data: { preSignedUrl, fileName: fullFilePath } } = await getRelatedDocPreSignedUrl(recordId, context, { filePath });
49
+ await uploadFileToS3(preSignedUrl, filePath);
50
+ const uploadResponse = await uploadFile(recordId, DOCUMENT, fullFilePath);
51
+ const file = fs.statSync(filePath);
52
+ const uploadedFileName = uploadResponse.data.fileName;
53
+ return uploadFileApi.uploadRelatedDoc(recordId, { name: uploadedFileName, type, fullFilePath: uploadedFileName, fileSize: file.size }, context);
54
+ };
55
+
56
+ const uploadFile = (recordId, type, fileName) => {
57
+ const formData = new FormData();
58
+ formData.append('fileName', fileName) ;
59
+ formData.append('fileType', type);
60
+ formData.append('recordId', recordId);
61
+ return uploadFileApi.uploadFile(formData);
62
+ };
63
+
64
+ const uploadPolicyFileAndGetPolicyModel = async (requestId, filePath, policyType, context) => {
65
+ const { data } = await getCreatePolicyPreSignedUrl(requestId, context);
66
+ const preSignedUrl = data.preSignedUrl;
67
+ const tempFileName = data.fileName;
68
+ const expectedPath = `/${TEMP_POLICY}/${tempFileName}`;
69
+
70
+ if (!preSignedUrl.includes(expectedPath)) {
71
+ throw new Error(`Pre-signed url is not as expected for policy ${policyType}`);
72
+ }
73
+
74
+ await uploadFileToS3(preSignedUrl, filePath);
75
+
76
+ return new CreatePolicyFileModel(tempFileName, policyType);
77
+ };
78
+
79
+ const createPolicyFiles = async (requestId, policyFileList, context, { shouldExpectError } = {}) => {
80
+ validateArray(policyFileList);
81
+ const createPolicyFilesResponse = await uploadFileApi.createPolicyFiles(requestId, policyFileList, context);
82
+
83
+ if (createPolicyFilesResponse.status !== httpResponseStatusCodes.OK && !shouldExpectError) {
84
+ throw new Error('Failed to create policy files');
85
+ }
86
+
87
+ return createPolicyFilesResponse;
88
+ };
89
+
90
+ const uploadAndCreatePolicyFile = async (policyTypeList, policyFilePath, requestId, context) => {
91
+ validateArray(policyTypeList);
92
+
93
+ const uploadedPolicyModelsList = await Promise.all(policyTypeList.map(async fileType => {
94
+ return uploadPolicyFileAndGetPolicyModel(requestId, policyFilePath, fileType, context);
95
+ }));
96
+
97
+ return createPolicyFiles(requestId, uploadedPolicyModelsList, context);
98
+ };
99
+
100
+ module.exports = {
101
+ getCreatePolicyPreSignedUrl,
102
+ uploadRelatedDoc,
103
+ uploadFileToS3,
104
+ uploadPolicyFileAndGetPolicyModel,
105
+ createPolicyFiles,
106
+ uploadAndCreatePolicyFile
107
+ };
@@ -1,12 +1,12 @@
1
- const RELATED_DOC_TYPES = {
2
- LEASE: 'LEASE',
3
- W9: 'W9',
4
- SIGNED_AGREEMENT: 'SIGNED_AGREEMENT',
5
- WAIVER_APPROVAL: 'WAIVER_APPROVAL',
6
- POLICIES: 'POLICIES',
7
- OTHER: 'OTHER'
8
- };
9
-
10
- module.exports = {
11
- RELATED_DOC_TYPES
12
- };
1
+ const RELATED_DOC_TYPES = {
2
+ LEASE: 'LEASE',
3
+ W9: 'W9',
4
+ SIGNED_AGREEMENT: 'SIGNED_AGREEMENT',
5
+ WAIVER_APPROVAL: 'WAIVER_APPROVAL',
6
+ POLICIES: 'POLICIES',
7
+ OTHER: 'OTHER'
8
+ };
9
+
10
+ module.exports = {
11
+ RELATED_DOC_TYPES
12
+ };
@@ -1,5 +1,5 @@
1
- const services = require('./api/upload.file.service');
2
-
3
- const consts = require('./consts');
4
-
5
- module.exports = { services, consts };
1
+ const services = require('./api/upload.file.service');
2
+
3
+ const consts = require('./consts');
4
+
5
+ module.exports = { services, consts };
@@ -1,38 +1,38 @@
1
- const requests = require('../../../../../common/requests/cookieAuth/requests');
2
- const { backendUrl } = require('../../../../../env').getEnv();
3
-
4
- const Endpoints = {
5
- invite: projectId => `${backendUrl}/saas/project/${projectId}/tenants`,
6
- getTenantsByProjectId: projectId => `${backendUrl}/saas/project/${projectId}/tenants`,
7
- getTenantsByAccountId: accountId => `${backendUrl}/saas/account/${accountId}/tenants`,
8
- signupUser: `${backendUrl}/_saas/guests/signup`,
9
- removeTenantUser: (projectId, userId) => `${backendUrl}/saas/project/${projectId}/tenant/${userId}`
10
- };
11
-
12
- const invite = (projectId, invitedTenantUser, context) => {
13
- return requests.putRequestHandler(Endpoints.invite(projectId), invitedTenantUser, context, {});
14
- };
15
-
16
- const getTenantUsersByProjectId = (projectId, context) => {
17
- return requests.getRequestHandler(Endpoints.getTenantsByProjectId(projectId), {}, context, {});
18
- };
19
-
20
- const getTenantsByAccountId = (accountId, context) => {
21
- return requests.getRequestHandler(Endpoints.getTenantsByAccountId(accountId), {}, context, {});
22
- };
23
-
24
- const signupUser = (signupUserModel, context) => {
25
- return requests.postRequestHandler(Endpoints.signupUser, signupUserModel, context, {}, {});
26
- };
27
-
28
- const removeTenantUser = (projectId, tenantId, context) => {
29
- return requests.deleteRequestHandler(Endpoints.removeTenantUser(projectId, tenantId), context);
30
- };
31
-
32
- module.exports = {
33
- invite,
34
- getTenantUsersByProjectId,
35
- signupUser,
36
- removeTenantUser,
37
- getTenantsByAccountId
38
- };
1
+ const requests = require('../../../../../common/requests/cookieAuth/requests');
2
+ const { backendUrl } = require('../../../../../env').getEnv();
3
+
4
+ const Endpoints = {
5
+ invite: projectId => `${backendUrl}/saas/project/${projectId}/tenants`,
6
+ getTenantsByProjectId: projectId => `${backendUrl}/saas/project/${projectId}/tenants`,
7
+ getTenantsByAccountId: accountId => `${backendUrl}/saas/account/${accountId}/tenants`,
8
+ signupUser: `${backendUrl}/_saas/guests/signup`,
9
+ removeTenantUser: (projectId, userId) => `${backendUrl}/saas/project/${projectId}/tenant/${userId}`
10
+ };
11
+
12
+ const invite = (projectId, invitedTenantUser, context) => {
13
+ return requests.putRequestHandler(Endpoints.invite(projectId), invitedTenantUser, context, {});
14
+ };
15
+
16
+ const getTenantUsersByProjectId = (projectId, context) => {
17
+ return requests.getRequestHandler(Endpoints.getTenantsByProjectId(projectId), {}, context, {});
18
+ };
19
+
20
+ const getTenantsByAccountId = (accountId, context) => {
21
+ return requests.getRequestHandler(Endpoints.getTenantsByAccountId(accountId), {}, context, {});
22
+ };
23
+
24
+ const signupUser = (signupUserModel, context) => {
25
+ return requests.postRequestHandler(Endpoints.signupUser, signupUserModel, context, {}, {});
26
+ };
27
+
28
+ const removeTenantUser = (projectId, tenantId, context) => {
29
+ return requests.deleteRequestHandler(Endpoints.removeTenantUser(projectId, tenantId), context);
30
+ };
31
+
32
+ module.exports = {
33
+ invite,
34
+ getTenantUsersByProjectId,
35
+ signupUser,
36
+ removeTenantUser,
37
+ getTenantsByAccountId
38
+ };
@@ -1,108 +1,108 @@
1
- const { expect } = require('chai');
2
-
3
- const { getEnv } = require('../../../../../env');
4
- const httpResponseStatusCodes = require('../../../../../common/httpResponseStatusCodes.json');
5
-
6
- const { credentials } = getEnv();
7
-
8
- const { InviteTenantUserModel } = require('../../models/tenent.user.model');
9
- const { validateType } = require('../../../../../common/validations/typeValidations');
10
- const tenantAPI = require('./tenant.app.api');
11
- const util = require('../../utils/util');
12
- const users = require('../users.service');
13
-
14
- const inviteTenantUser = (projectId, invitedTenantUser, context) => {
15
- validateType(invitedTenantUser, InviteTenantUserModel);
16
- return tenantAPI.invite(projectId, invitedTenantUser, context);
17
- };
18
-
19
- const signupUser = (signupUserModel, context) => {
20
- return tenantAPI.signupUser(signupUserModel, context);
21
- };
22
-
23
- const removeTenantUser = (projectId, tenantId, context) => {
24
- return tenantAPI.removeTenantUser(projectId, tenantId, context);
25
- };
26
-
27
- const getTenantUsersByProjectId = async (projectId, context) => {
28
- const tenantResponse = await tenantAPI.getTenantUsersByProjectId(projectId, context);
29
-
30
- if (tenantResponse.status !== httpResponseStatusCodes.OK) {
31
- throw new Error(`Failed to retrieve tenants users from project\n${tenantResponse.status}`);
32
- }
33
-
34
- return tenantResponse.data;
35
- };
36
-
37
- const getTenantsByAccountId = async (accountId, context) => {
38
- const tenantResponse = await tenantAPI.getTenantsByAccountId(accountId, context);
39
-
40
- if (tenantResponse.status !== httpResponseStatusCodes.OK) {
41
- throw new Error(`Failed to retrieve tenants users from tenant account, accountId - ${accountId} response status - \n${tenantResponse.status}`);
42
- }
43
-
44
- return tenantResponse.data;
45
- };
46
-
47
- const getTenantUserByEmail = async (projectId, email, context) => {
48
- const allTenants = await getTenantUsersByProjectId(projectId, context);
49
-
50
- const tenant = allTenants.find(tenant => tenant.email === email);
51
- return tenant;
52
- };
53
-
54
- const getOrCreateTenantUser = async (projectId, email, company, requestId, context, { fullName = 'Tenant User', password = credentials.strongPassword, toSignUp = true, expectError } = {}) => {
55
- let tenantUser = await getTenantUserByEmail(projectId, email, context);
56
-
57
- if (tenantUser && tenantUser.id && tenantUser.isVerified) {
58
- return tenantUser;
59
- }
60
-
61
- const inviteUserModel = new InviteTenantUserModel(email, company, requestId);
62
- const inviteResponse = await inviteTenantUser(projectId, inviteUserModel, context);
63
-
64
- if (inviteResponse.status !== httpResponseStatusCodes.OK) {
65
- if (expectError) {
66
- return inviteResponse;
67
- } else {
68
- throw new Error(`Failed to invite tenant user with email: ${email}\n${inviteResponse}`);
69
- }
70
- }
71
-
72
- tenantUser = await getTenantUserByEmail(projectId, email, context);
73
-
74
- //Already signup tenant user or pending user needed
75
- if (tenantUser.isVerified || !toSignUp) {
76
- return tenantUser;
77
- }
78
-
79
- const signupUserModel = await util.getSignupUserModel(email, 'Admin', fullName, password, context);
80
- const signupResponse = await signupUser(signupUserModel, context);
81
-
82
- if (signupResponse.status !== httpResponseStatusCodes.OK) {
83
- throw new Error(`Failed to signup tenant user with email: ${email}\n${signupResponse}`);
84
- }
85
-
86
- tenantUser = await getTenantUserByEmail(projectId, email, context);
87
- return tenantUser;
88
- };
89
-
90
- const removeAllTenantUsersFromProject = async (projectId, context) => {
91
- const tenantsListInProjects = await getTenantUsersByProjectId(projectId, context);
92
- for (const tenant of tenantsListInProjects) {
93
- const deleteInviteResponse = await removeTenantUser(projectId, tenant.id, context);
94
- expect(deleteInviteResponse.status, 'Failed to delete user invite').to.equal(httpResponseStatusCodes.OK);
95
-
96
- const deleteUserResponse = await users.removeAllUserTraceFromDb(tenant.id, context);
97
- expect(deleteUserResponse.status, 'Failed to completely delete user from DB').to.equal(httpResponseStatusCodes.NO_CONTENT);
98
- }
99
- };
100
-
101
- module.exports = {
102
- inviteTenantUser,
103
- getTenantUsersByProjectId,
104
- getOrCreateTenantUser,
105
- getTenantsByAccountId,
106
- removeTenantUser,
107
- removeAllTenantUsersFromProject
108
- };
1
+ const { expect } = require('chai');
2
+
3
+ const { getEnv } = require('../../../../../env');
4
+ const httpResponseStatusCodes = require('../../../../../common/httpResponseStatusCodes.json');
5
+
6
+ const { credentials } = getEnv();
7
+
8
+ const { InviteTenantUserModel } = require('../../models/tenent.user.model');
9
+ const { validateType } = require('../../../../../common/validations/typeValidations');
10
+ const tenantAPI = require('./tenant.app.api');
11
+ const util = require('../../utils/util');
12
+ const users = require('../users.service');
13
+
14
+ const inviteTenantUser = (projectId, invitedTenantUser, context) => {
15
+ validateType(invitedTenantUser, InviteTenantUserModel);
16
+ return tenantAPI.invite(projectId, invitedTenantUser, context);
17
+ };
18
+
19
+ const signupUser = (signupUserModel, context) => {
20
+ return tenantAPI.signupUser(signupUserModel, context);
21
+ };
22
+
23
+ const removeTenantUser = (projectId, tenantId, context) => {
24
+ return tenantAPI.removeTenantUser(projectId, tenantId, context);
25
+ };
26
+
27
+ const getTenantUsersByProjectId = async (projectId, context) => {
28
+ const tenantResponse = await tenantAPI.getTenantUsersByProjectId(projectId, context);
29
+
30
+ if (tenantResponse.status !== httpResponseStatusCodes.OK) {
31
+ throw new Error(`Failed to retrieve tenants users from project\n${tenantResponse.status}`);
32
+ }
33
+
34
+ return tenantResponse.data;
35
+ };
36
+
37
+ const getTenantsByAccountId = async (accountId, context) => {
38
+ const tenantResponse = await tenantAPI.getTenantsByAccountId(accountId, context);
39
+
40
+ if (tenantResponse.status !== httpResponseStatusCodes.OK) {
41
+ throw new Error(`Failed to retrieve tenants users from tenant account, accountId - ${accountId} response status - \n${tenantResponse.status}`);
42
+ }
43
+
44
+ return tenantResponse.data;
45
+ };
46
+
47
+ const getTenantUserByEmail = async (projectId, email, context) => {
48
+ const allTenants = await getTenantUsersByProjectId(projectId, context);
49
+
50
+ const tenant = allTenants.find(tenant => tenant.email === email);
51
+ return tenant;
52
+ };
53
+
54
+ const getOrCreateTenantUser = async (projectId, email, company, requestId, context, { fullName = 'Tenant User', password = credentials.strongPassword, toSignUp = true, expectError } = {}) => {
55
+ let tenantUser = await getTenantUserByEmail(projectId, email, context);
56
+
57
+ if (tenantUser && tenantUser.id && tenantUser.isVerified) {
58
+ return tenantUser;
59
+ }
60
+
61
+ const inviteUserModel = new InviteTenantUserModel(email, company, requestId);
62
+ const inviteResponse = await inviteTenantUser(projectId, inviteUserModel, context);
63
+
64
+ if (inviteResponse.status !== httpResponseStatusCodes.OK) {
65
+ if (expectError) {
66
+ return inviteResponse;
67
+ } else {
68
+ throw new Error(`Failed to invite tenant user with email: ${email}\n${inviteResponse}`);
69
+ }
70
+ }
71
+
72
+ tenantUser = await getTenantUserByEmail(projectId, email, context);
73
+
74
+ //Already signup tenant user or pending user needed
75
+ if (tenantUser.isVerified || !toSignUp) {
76
+ return tenantUser;
77
+ }
78
+
79
+ const signupUserModel = await util.getSignupUserModel(email, 'Admin', fullName, password, context);
80
+ const signupResponse = await signupUser(signupUserModel, context);
81
+
82
+ if (signupResponse.status !== httpResponseStatusCodes.OK) {
83
+ throw new Error(`Failed to signup tenant user with email: ${email}\n${signupResponse}`);
84
+ }
85
+
86
+ tenantUser = await getTenantUserByEmail(projectId, email, context);
87
+ return tenantUser;
88
+ };
89
+
90
+ const removeAllTenantUsersFromProject = async (projectId, context) => {
91
+ const tenantsListInProjects = await getTenantUsersByProjectId(projectId, context);
92
+ for (const tenant of tenantsListInProjects) {
93
+ const deleteInviteResponse = await removeTenantUser(projectId, tenant.id, context);
94
+ expect(deleteInviteResponse.status, 'Failed to delete user invite').to.equal(httpResponseStatusCodes.OK);
95
+
96
+ const deleteUserResponse = await users.removeAllUserTraceFromDb(tenant.id, context);
97
+ expect(deleteUserResponse.status, 'Failed to completely delete user from DB').to.equal(httpResponseStatusCodes.NO_CONTENT);
98
+ }
99
+ };
100
+
101
+ module.exports = {
102
+ inviteTenantUser,
103
+ getTenantUsersByProjectId,
104
+ getOrCreateTenantUser,
105
+ getTenantsByAccountId,
106
+ removeTenantUser,
107
+ removeAllTenantUsersFromProject
108
+ };