@tomei/sso 0.50.8 → 0.51.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (431) hide show
  1. package/.commitlintrc.json +22 -22
  2. package/.eslintrc +16 -16
  3. package/.eslintrc.js +35 -35
  4. package/.gitlab-ci.yml +16 -16
  5. package/.husky/commit-msg +15 -15
  6. package/.husky/pre-commit +7 -7
  7. package/.prettierrc +4 -4
  8. package/Jenkinsfile +57 -57
  9. package/README.md +23 -23
  10. package/__tests__/unit/components/group/group.spec.ts +79 -79
  11. package/__tests__/unit/components/group-object-privilege/group-object-privilege.spec.ts +88 -88
  12. package/__tests__/unit/components/group-privilege/group-privilege.spec.ts +68 -68
  13. package/__tests__/unit/components/group-reporting-user/group-reporting-user.spec.ts +66 -66
  14. package/__tests__/unit/components/group-system-access/group-system-access.spec.ts +83 -83
  15. package/__tests__/unit/components/login-user/l.spec.ts +746 -746
  16. package/__tests__/unit/components/login-user/login.spec.ts +1164 -1164
  17. package/__tests__/unit/components/password-hash/password-hash.service.spec.ts +31 -31
  18. package/__tests__/unit/components/system/system.spec.ts +254 -254
  19. package/__tests__/unit/components/system-privilege/system-privilege.spec.ts +83 -83
  20. package/__tests__/unit/components/user-group/user-group.spec.ts +86 -86
  21. package/__tests__/unit/components/user-object-privilege/user-object-privilege.spec.ts +78 -78
  22. package/__tests__/unit/components/user-privilege/user-privilege.spec.ts +72 -72
  23. package/__tests__/unit/components/user-system-access/user-system-access.spec.ts +89 -89
  24. package/__tests__/unit/redis-client/redis.service.spec.ts +23 -23
  25. package/__tests__/unit/session/session.service.spec.ts +47 -47
  26. package/__tests__/unit/system-privilege/system-privilage.spec.ts +91 -91
  27. package/coverage/clover.xml +1452 -1452
  28. package/coverage/coverage-final.json +47 -47
  29. package/coverage/lcov-report/base.css +224 -224
  30. package/coverage/lcov-report/block-navigation.js +87 -87
  31. package/coverage/lcov-report/components/group/group.repository.ts.html +117 -117
  32. package/coverage/lcov-report/components/group/group.ts.html +327 -327
  33. package/coverage/lcov-report/components/group/index.html +130 -130
  34. package/coverage/lcov-report/components/group-object-privilege/group-object-privilege.repository.ts.html +117 -117
  35. package/coverage/lcov-report/components/group-object-privilege/group-object-privilege.ts.html +321 -321
  36. package/coverage/lcov-report/components/group-object-privilege/index.html +130 -130
  37. package/coverage/lcov-report/components/group-privilege/group-privilege.repository.ts.html +117 -117
  38. package/coverage/lcov-report/components/group-privilege/group-privilege.ts.html +303 -303
  39. package/coverage/lcov-report/components/group-privilege/index.html +130 -130
  40. package/coverage/lcov-report/components/group-reporting-user/group-reporting-user.repository.ts.html +117 -117
  41. package/coverage/lcov-report/components/group-reporting-user/group-reporting-user.ts.html +327 -327
  42. package/coverage/lcov-report/components/group-reporting-user/index.html +130 -130
  43. package/coverage/lcov-report/components/group-system-access/group-system-access.repository.ts.html +117 -117
  44. package/coverage/lcov-report/components/group-system-access/group-system-access.ts.html +309 -309
  45. package/coverage/lcov-report/components/group-system-access/index.html +130 -130
  46. package/coverage/lcov-report/components/login-history/index.html +115 -115
  47. package/coverage/lcov-report/components/login-history/login-history.repository.ts.html +117 -117
  48. package/coverage/lcov-report/components/login-user/index.html +130 -130
  49. package/coverage/lcov-report/components/login-user/login-user.ts.html +5007 -5007
  50. package/coverage/lcov-report/components/login-user/user.repository.ts.html +117 -117
  51. package/coverage/lcov-report/components/password-hash/index.html +115 -115
  52. package/coverage/lcov-report/components/password-hash/password-hash.service.ts.html +126 -126
  53. package/coverage/lcov-report/components/system/index.html +130 -130
  54. package/coverage/lcov-report/components/system/system.repository.ts.html +117 -117
  55. package/coverage/lcov-report/components/system/system.ts.html +909 -909
  56. package/coverage/lcov-report/components/system-privilege/index.html +130 -130
  57. package/coverage/lcov-report/components/system-privilege/system-privilege.repository.ts.html +120 -120
  58. package/coverage/lcov-report/components/system-privilege/system-privilege.ts.html +390 -390
  59. package/coverage/lcov-report/components/user-group/index.html +130 -130
  60. package/coverage/lcov-report/components/user-group/user-group.repository.ts.html +117 -117
  61. package/coverage/lcov-report/components/user-group/user-group.ts.html +354 -354
  62. package/coverage/lcov-report/components/user-object-privilege/index.html +130 -130
  63. package/coverage/lcov-report/components/user-object-privilege/user-object-privilege.repository.ts.html +117 -117
  64. package/coverage/lcov-report/components/user-object-privilege/user-object-privilege.ts.html +312 -312
  65. package/coverage/lcov-report/components/user-privilege/index.html +130 -130
  66. package/coverage/lcov-report/components/user-privilege/user-privilege.repository.ts.html +117 -117
  67. package/coverage/lcov-report/components/user-privilege/user-privilege.ts.html +306 -306
  68. package/coverage/lcov-report/components/user-system-access/index.html +130 -130
  69. package/coverage/lcov-report/components/user-system-access/user-system-access.repository.ts.html +117 -117
  70. package/coverage/lcov-report/components/user-system-access/user-system-access.ts.html +312 -312
  71. package/coverage/lcov-report/enum/group-type.enum.ts.html +108 -108
  72. package/coverage/lcov-report/enum/index.html +160 -160
  73. package/coverage/lcov-report/enum/index.ts.html +93 -93
  74. package/coverage/lcov-report/enum/user-status.enum.ts.html +105 -105
  75. package/coverage/lcov-report/enum/yn.enum.ts.html +96 -96
  76. package/coverage/lcov-report/index.html +370 -370
  77. package/coverage/lcov-report/models/group-object-privilege.entity.ts.html +333 -333
  78. package/coverage/lcov-report/models/group-privilege.entity.ts.html +315 -315
  79. package/coverage/lcov-report/models/group-reporting-user.entity.ts.html +339 -339
  80. package/coverage/lcov-report/models/group-system-access.entity.ts.html +324 -324
  81. package/coverage/lcov-report/models/group.entity.ts.html +435 -435
  82. package/coverage/lcov-report/models/index.html +310 -310
  83. package/coverage/lcov-report/models/login-history.entity.ts.html +252 -252
  84. package/coverage/lcov-report/models/staff.entity.ts.html +411 -411
  85. package/coverage/lcov-report/models/system-privilege.entity.ts.html +354 -354
  86. package/coverage/lcov-report/models/system.entity.ts.html +423 -423
  87. package/coverage/lcov-report/models/user-group.entity.ts.html +354 -354
  88. package/coverage/lcov-report/models/user-object-privilege.entity.ts.html +330 -330
  89. package/coverage/lcov-report/models/user-privilege.entity.ts.html +315 -315
  90. package/coverage/lcov-report/models/user-system-access.entity.ts.html +315 -315
  91. package/coverage/lcov-report/models/user.entity.ts.html +522 -522
  92. package/coverage/lcov-report/prettify.css +1 -1
  93. package/coverage/lcov-report/prettify.js +2 -2
  94. package/coverage/lcov-report/redis-client/index.html +115 -115
  95. package/coverage/lcov-report/redis-client/redis.service.ts.html +240 -240
  96. package/coverage/lcov-report/session/index.html +115 -115
  97. package/coverage/lcov-report/session/session.service.ts.html +246 -246
  98. package/coverage/lcov-report/sorter.js +196 -196
  99. package/coverage/lcov.info +2490 -2490
  100. package/coverage/test-report.xml +128 -128
  101. package/create-sso-user.sql +39 -39
  102. package/dist/__tests__/unit/components/group/group.spec.d.ts +1 -1
  103. package/dist/__tests__/unit/components/group/group.spec.js +71 -71
  104. package/dist/__tests__/unit/components/group-object-privilege/group-object-privilege.spec.d.ts +1 -1
  105. package/dist/__tests__/unit/components/group-object-privilege/group-object-privilege.spec.js +85 -85
  106. package/dist/__tests__/unit/components/group-privilege/group-privilege.spec.d.ts +1 -1
  107. package/dist/__tests__/unit/components/group-privilege/group-privilege.spec.js +70 -70
  108. package/dist/__tests__/unit/components/group-privilege/group-privilege.test.d.ts +1 -0
  109. package/dist/__tests__/unit/components/group-privilege/group-privilege.test.js +71 -0
  110. package/dist/__tests__/unit/components/group-privilege/group-privilege.test.js.map +1 -0
  111. package/dist/__tests__/unit/components/group-reporting-user/group-reporting-user.spec.d.ts +1 -1
  112. package/dist/__tests__/unit/components/group-reporting-user/group-reporting-user.spec.js +57 -57
  113. package/dist/__tests__/unit/components/group-system-access/group-system-access.spec.d.ts +1 -1
  114. package/dist/__tests__/unit/components/group-system-access/group-system-access.spec.js +82 -82
  115. package/dist/__tests__/unit/components/login-user/l.spec.js +5 -5
  116. package/dist/__tests__/unit/components/login-user/login-user.spec.d.ts +0 -0
  117. package/dist/__tests__/unit/components/login-user/login-user.spec.js +6 -0
  118. package/dist/__tests__/unit/components/login-user/login-user.spec.js.map +1 -0
  119. package/dist/__tests__/unit/components/login-user/login.spec.d.ts +1 -1
  120. package/dist/__tests__/unit/components/login-user/login.spec.js +2 -2
  121. package/dist/__tests__/unit/components/password-hash/password-hash.service.spec.d.ts +1 -1
  122. package/dist/__tests__/unit/components/password-hash/password-hash.service.spec.js +37 -37
  123. package/dist/__tests__/unit/components/system/system.spec.d.ts +1 -1
  124. package/dist/__tests__/unit/components/system/system.spec.js +203 -203
  125. package/dist/__tests__/unit/components/system-privilege/system-privilege.spec.d.ts +1 -1
  126. package/dist/__tests__/unit/components/system-privilege/system-privilege.spec.js +84 -84
  127. package/dist/__tests__/unit/components/user-group/user-group.spec.d.ts +1 -1
  128. package/dist/__tests__/unit/components/user-group/user-group.spec.js +81 -81
  129. package/dist/__tests__/unit/components/user-object-privilege/user-object-privilege.spec.d.ts +1 -1
  130. package/dist/__tests__/unit/components/user-object-privilege/user-object-privilege.spec.js +78 -78
  131. package/dist/__tests__/unit/components/user-privilege/user-privilege.spec.d.ts +1 -1
  132. package/dist/__tests__/unit/components/user-privilege/user-privilege.spec.js +75 -75
  133. package/dist/__tests__/unit/components/user-system-access/user-system-access.spec.d.ts +1 -1
  134. package/dist/__tests__/unit/components/user-system-access/user-system-access.spec.js +82 -82
  135. package/dist/__tests__/unit/components/user-system-access/user-system-access.spec.js.map +1 -1
  136. package/dist/__tests__/unit/redis-client/redis.service.spec.d.ts +1 -1
  137. package/dist/__tests__/unit/redis-client/redis.service.spec.js +31 -31
  138. package/dist/__tests__/unit/session/session.service.spec.d.ts +1 -1
  139. package/dist/__tests__/unit/session/session.service.spec.js +54 -54
  140. package/dist/__tests__/unit/system-privilege/system-privilage.spec.js +5 -5
  141. package/dist/index.d.ts +1 -1
  142. package/dist/index.js +17 -17
  143. package/dist/src/components/api-key/api-key.d.ts +84 -84
  144. package/dist/src/components/api-key/api-key.js +255 -255
  145. package/dist/src/components/api-key/api-key.js.map +1 -1
  146. package/dist/src/components/api-key/api-key.repository.d.ts +6 -6
  147. package/dist/src/components/api-key/api-key.repository.js +25 -25
  148. package/dist/src/components/api-key/index.d.ts +3 -3
  149. package/dist/src/components/api-key/index.js +7 -7
  150. package/dist/src/components/building/building.repository.d.ts +6 -6
  151. package/dist/src/components/building/building.repository.js +37 -37
  152. package/dist/src/components/building/building.repository.js.map +1 -1
  153. package/dist/src/components/building/index.d.ts +1 -1
  154. package/dist/src/components/building/index.js +17 -17
  155. package/dist/src/components/group/group.d.ts +112 -112
  156. package/dist/src/components/group/group.js +1240 -1240
  157. package/dist/src/components/group/group.js.map +1 -1
  158. package/dist/src/components/group/group.repository.d.ts +7 -7
  159. package/dist/src/components/group/group.repository.js +36 -36
  160. package/dist/src/components/group/group.repository.js.map +1 -1
  161. package/dist/src/components/group/index.d.ts +2 -2
  162. package/dist/src/components/group/index.js +18 -18
  163. package/dist/src/components/group-object-privilege/group-object-privilege.d.ts +27 -27
  164. package/dist/src/components/group-object-privilege/group-object-privilege.js +177 -177
  165. package/dist/src/components/group-object-privilege/group-object-privilege.js.map +1 -1
  166. package/dist/src/components/group-object-privilege/group-object-privilege.repository.d.ts +6 -6
  167. package/dist/src/components/group-object-privilege/group-object-privilege.repository.js +33 -33
  168. package/dist/src/components/group-object-privilege/group-object-privilege.repository.js.map +1 -1
  169. package/dist/src/components/group-object-privilege/index.d.ts +2 -2
  170. package/dist/src/components/group-object-privilege/index.js +18 -18
  171. package/dist/src/components/group-privilege/group-privilege.d.ts +24 -24
  172. package/dist/src/components/group-privilege/group-privilege.js +77 -77
  173. package/dist/src/components/group-privilege/group-privilege.js.map +1 -1
  174. package/dist/src/components/group-privilege/group-privilege.repository.d.ts +6 -6
  175. package/dist/src/components/group-privilege/group-privilege.repository.js +35 -35
  176. package/dist/src/components/group-privilege/group-privilege.repository.js.map +1 -1
  177. package/dist/src/components/group-privilege/index.d.ts +2 -2
  178. package/dist/src/components/group-privilege/index.js +18 -18
  179. package/dist/src/components/group-reporting-user/group-reporting-user.d.ts +28 -28
  180. package/dist/src/components/group-reporting-user/group-reporting-user.js +208 -208
  181. package/dist/src/components/group-reporting-user/group-reporting-user.js.map +1 -1
  182. package/dist/src/components/group-reporting-user/group-reporting-user.repository.d.ts +6 -6
  183. package/dist/src/components/group-reporting-user/group-reporting-user.repository.js +30 -30
  184. package/dist/src/components/group-reporting-user/index.d.ts +2 -2
  185. package/dist/src/components/group-reporting-user/index.js +18 -18
  186. package/dist/src/components/group-system-access/group-system-access.d.ts +27 -27
  187. package/dist/src/components/group-system-access/group-system-access.js +80 -80
  188. package/dist/src/components/group-system-access/group-system-access.js.map +1 -1
  189. package/dist/src/components/group-system-access/group-system-access.repository.d.ts +7 -7
  190. package/dist/src/components/group-system-access/group-system-access.repository.js +55 -54
  191. package/dist/src/components/group-system-access/group-system-access.repository.js.map +1 -1
  192. package/dist/src/components/group-system-access/index.d.ts +2 -2
  193. package/dist/src/components/group-system-access/index.js +18 -18
  194. package/dist/src/components/index.d.ts +17 -17
  195. package/dist/src/components/index.js +33 -33
  196. package/dist/src/components/login-history/index.d.ts +1 -1
  197. package/dist/src/components/login-history/index.js +17 -17
  198. package/dist/src/components/login-history/login-history.repository.d.ts +5 -5
  199. package/dist/src/components/login-history/login-history.repository.js +11 -11
  200. package/dist/src/components/login-user/index.d.ts +4 -4
  201. package/dist/src/components/login-user/index.js +20 -20
  202. package/dist/src/components/login-user/interfaces/check-user-info-duplicated.interface.d.ts +7 -7
  203. package/dist/src/components/login-user/interfaces/check-user-info-duplicated.interface.js +2 -2
  204. package/dist/src/components/login-user/interfaces/index.d.ts +1 -1
  205. package/dist/src/components/login-user/interfaces/index.js +17 -17
  206. package/dist/src/components/login-user/interfaces/system-access.interface.d.ts +13 -13
  207. package/dist/src/components/login-user/interfaces/system-access.interface.js +2 -2
  208. package/dist/src/components/login-user/interfaces/user-info.interface.d.ts +30 -30
  209. package/dist/src/components/login-user/interfaces/user-info.interface.js +2 -2
  210. package/dist/src/components/login-user/login-user.d.ts +13 -13
  211. package/dist/src/components/login-user/login-user.js +140 -140
  212. package/dist/src/components/login-user/login-user.js.map +1 -1
  213. package/dist/src/components/login-user/user.d.ts +143 -142
  214. package/dist/src/components/login-user/user.js +1791 -1767
  215. package/dist/src/components/login-user/user.js.map +1 -1
  216. package/dist/src/components/login-user/user.repository.d.ts +5 -5
  217. package/dist/src/components/login-user/user.repository.js +11 -11
  218. package/dist/src/components/password-hash/index.d.ts +2 -2
  219. package/dist/src/components/password-hash/index.js +18 -18
  220. package/dist/src/components/password-hash/interfaces/index.d.ts +1 -1
  221. package/dist/src/components/password-hash/interfaces/index.js +17 -17
  222. package/dist/src/components/password-hash/interfaces/password-hash-service.interface.d.ts +4 -4
  223. package/dist/src/components/password-hash/interfaces/password-hash-service.interface.js +2 -2
  224. package/dist/src/components/password-hash/password-hash.service.d.ts +6 -6
  225. package/dist/src/components/password-hash/password-hash.service.js +27 -27
  226. package/dist/src/components/staff/index.d.ts +1 -1
  227. package/dist/src/components/staff/index.js +17 -17
  228. package/dist/src/components/staff/staff.repository.d.ts +6 -6
  229. package/dist/src/components/staff/staff.repository.js +37 -37
  230. package/dist/src/components/staff/staff.repository.js.map +1 -1
  231. package/dist/src/components/system/index.d.ts +2 -2
  232. package/dist/src/components/system/index.js +18 -18
  233. package/dist/src/components/system/system.d.ts +39 -39
  234. package/dist/src/components/system/system.js +300 -300
  235. package/dist/src/components/system/system.js.map +1 -1
  236. package/dist/src/components/system/system.repository.d.ts +5 -5
  237. package/dist/src/components/system/system.repository.js +11 -11
  238. package/dist/src/components/system-privilege/index.d.ts +3 -3
  239. package/dist/src/components/system-privilege/index.js +7 -7
  240. package/dist/src/components/system-privilege/system-privilege.d.ts +52 -52
  241. package/dist/src/components/system-privilege/system-privilege.js +335 -335
  242. package/dist/src/components/system-privilege/system-privilege.js.map +1 -1
  243. package/dist/src/components/system-privilege/system-privilege.repository.d.ts +6 -6
  244. package/dist/src/components/system-privilege/system-privilege.repository.js +28 -28
  245. package/dist/src/components/user-group/index.d.ts +2 -2
  246. package/dist/src/components/user-group/index.js +18 -18
  247. package/dist/src/components/user-group/user-group.d.ts +50 -50
  248. package/dist/src/components/user-group/user-group.js +352 -352
  249. package/dist/src/components/user-group/user-group.js.map +1 -1
  250. package/dist/src/components/user-group/user-group.repository.d.ts +5 -5
  251. package/dist/src/components/user-group/user-group.repository.js +11 -11
  252. package/dist/src/components/user-object-privilege/index.d.ts +2 -2
  253. package/dist/src/components/user-object-privilege/index.js +18 -18
  254. package/dist/src/components/user-object-privilege/user-object-privilege.d.ts +23 -23
  255. package/dist/src/components/user-object-privilege/user-object-privilege.js +69 -69
  256. package/dist/src/components/user-object-privilege/user-object-privilege.js.map +1 -1
  257. package/dist/src/components/user-object-privilege/user-object-privilege.repository.d.ts +5 -5
  258. package/dist/src/components/user-object-privilege/user-object-privilege.repository.js +11 -11
  259. package/dist/src/components/user-privilege/index.d.ts +2 -2
  260. package/dist/src/components/user-privilege/index.js +18 -18
  261. package/dist/src/components/user-privilege/user-privilege.d.ts +64 -64
  262. package/dist/src/components/user-privilege/user-privilege.js +406 -406
  263. package/dist/src/components/user-privilege/user-privilege.js.map +1 -1
  264. package/dist/src/components/user-privilege/user-privilege.repository.d.ts +6 -6
  265. package/dist/src/components/user-privilege/user-privilege.repository.js +36 -36
  266. package/dist/src/components/user-privilege/user-privilege.repository.js.map +1 -1
  267. package/dist/src/components/user-system-access/index.d.ts +2 -2
  268. package/dist/src/components/user-system-access/index.js +18 -18
  269. package/dist/src/components/user-system-access/user-system-access.d.ts +56 -56
  270. package/dist/src/components/user-system-access/user-system-access.js +277 -277
  271. package/dist/src/components/user-system-access/user-system-access.js.map +1 -1
  272. package/dist/src/components/user-system-access/user-system-access.repository.d.ts +6 -6
  273. package/dist/src/components/user-system-access/user-system-access.repository.js +36 -36
  274. package/dist/src/components/user-system-access/user-system-access.repository.js.map +1 -1
  275. package/dist/src/database.d.ts +4 -4
  276. package/dist/src/database.js +13 -14
  277. package/dist/src/database.js.map +1 -1
  278. package/dist/src/enum/api-key.enum.d.ts +5 -5
  279. package/dist/src/enum/api-key.enum.js +9 -9
  280. package/dist/src/enum/api-key.enum.js.map +1 -1
  281. package/dist/src/enum/group-type.enum.d.ts +8 -8
  282. package/dist/src/enum/group-type.enum.js +12 -12
  283. package/dist/src/enum/group-type.enum.js.map +1 -1
  284. package/dist/src/enum/index.d.ts +6 -6
  285. package/dist/src/enum/index.js +22 -22
  286. package/dist/src/enum/login-status.enum.d.ts +4 -4
  287. package/dist/src/enum/login-status.enum.js +8 -8
  288. package/dist/src/enum/login-status.enum.js.map +1 -1
  289. package/dist/src/enum/object-status.enum.d.ts +4 -4
  290. package/dist/src/enum/object-status.enum.js +8 -8
  291. package/dist/src/enum/object-status.enum.js.map +1 -1
  292. package/dist/src/enum/user-status.enum.d.ts +7 -7
  293. package/dist/src/enum/user-status.enum.js +11 -11
  294. package/dist/src/enum/user-status.enum.js.map +1 -1
  295. package/dist/src/enum/yn.enum.d.ts +4 -4
  296. package/dist/src/enum/yn.enum.js +8 -8
  297. package/dist/src/enum/yn.enum.js.map +1 -1
  298. package/dist/src/index.d.ts +6 -6
  299. package/dist/src/index.js +24 -24
  300. package/dist/src/interfaces/api-key-attr.interface.d.ts +15 -15
  301. package/dist/src/interfaces/api-key-attr.interface.js +2 -2
  302. package/dist/src/interfaces/group-object-privilege.interface.d.ts +13 -13
  303. package/dist/src/interfaces/group-object-privilege.interface.js +2 -2
  304. package/dist/src/interfaces/group-privilege.interface.d.ts +10 -10
  305. package/dist/src/interfaces/group-privilege.interface.js +2 -2
  306. package/dist/src/interfaces/group-reporting-user.interface.d.ts +11 -11
  307. package/dist/src/interfaces/group-reporting-user.interface.js +2 -2
  308. package/dist/src/interfaces/group-search-attr.interface.d.ts +8 -8
  309. package/dist/src/interfaces/group-search-attr.interface.js +2 -2
  310. package/dist/src/interfaces/group-system-access.interface.d.ts +10 -10
  311. package/dist/src/interfaces/group-system-access.interface.js +2 -2
  312. package/dist/src/interfaces/group.interface.d.ts +16 -16
  313. package/dist/src/interfaces/group.interface.js +2 -2
  314. package/dist/src/interfaces/index.d.ts +13 -13
  315. package/dist/src/interfaces/index.js +29 -29
  316. package/dist/src/interfaces/system-login.interface.d.ts +6 -6
  317. package/dist/src/interfaces/system-login.interface.js +2 -2
  318. package/dist/src/interfaces/system-privilege-search.interface.d.ts +5 -5
  319. package/dist/src/interfaces/system-privilege-search.interface.js +2 -2
  320. package/dist/src/interfaces/system-privilege.interface.d.ts +11 -11
  321. package/dist/src/interfaces/system-privilege.interface.js +2 -2
  322. package/dist/src/interfaces/system-search-attr.interface.d.ts +5 -5
  323. package/dist/src/interfaces/system-search-attr.interface.js +2 -2
  324. package/dist/src/interfaces/system.interface.d.ts +15 -15
  325. package/dist/src/interfaces/system.interface.js +2 -2
  326. package/dist/src/interfaces/user-group.interface.d.ts +12 -12
  327. package/dist/src/interfaces/user-group.interface.js +2 -2
  328. package/dist/src/interfaces/user-object-privilege.interface.d.ts +13 -13
  329. package/dist/src/interfaces/user-object-privilege.interface.js +2 -2
  330. package/dist/src/interfaces/user-privilege.interface.d.ts +10 -10
  331. package/dist/src/interfaces/user-privilege.interface.js +2 -2
  332. package/dist/src/interfaces/user-session.interface.d.ts +4 -4
  333. package/dist/src/interfaces/user-session.interface.js +2 -2
  334. package/dist/src/interfaces/user-system-access.interface.d.ts +10 -10
  335. package/dist/src/interfaces/user-system-access.interface.js +2 -2
  336. package/dist/src/models/api-key-entity.d.ts +21 -21
  337. package/dist/src/models/api-key-entity.js +121 -121
  338. package/dist/src/models/api-key-entity.js.map +1 -1
  339. package/dist/src/models/building.entity.d.ts +29 -29
  340. package/dist/src/models/building.entity.js +212 -212
  341. package/dist/src/models/building.entity.js.map +1 -1
  342. package/dist/src/models/group-object-privilege.entity.d.ts +21 -21
  343. package/dist/src/models/group-object-privilege.entity.js +110 -110
  344. package/dist/src/models/group-object-privilege.entity.js.map +1 -1
  345. package/dist/src/models/group-privilege.entity.d.ts +18 -18
  346. package/dist/src/models/group-privilege.entity.js +95 -95
  347. package/dist/src/models/group-privilege.entity.js.map +1 -1
  348. package/dist/src/models/group-reporting-user.entity.d.ts +17 -17
  349. package/dist/src/models/group-reporting-user.entity.js +113 -113
  350. package/dist/src/models/group-reporting-user.entity.js.map +1 -1
  351. package/dist/src/models/group-system-access.entity.d.ts +18 -18
  352. package/dist/src/models/group-system-access.entity.js +98 -98
  353. package/dist/src/models/group-system-access.entity.js.map +1 -1
  354. package/dist/src/models/group.entity.d.ts +32 -32
  355. package/dist/src/models/group.entity.js +153 -154
  356. package/dist/src/models/group.entity.js.map +1 -1
  357. package/dist/src/models/login-history.entity.d.ts +14 -14
  358. package/dist/src/models/login-history.entity.js +77 -77
  359. package/dist/src/models/login-history.entity.js.map +1 -1
  360. package/dist/src/models/staff.entity.d.ts +18 -18
  361. package/dist/src/models/staff.entity.js +109 -109
  362. package/dist/src/models/staff.entity.js.map +1 -1
  363. package/dist/src/models/system-privilege.entity.d.ts +18 -18
  364. package/dist/src/models/system-privilege.entity.js +107 -107
  365. package/dist/src/models/system-privilege.entity.js.map +1 -1
  366. package/dist/src/models/system.entity.d.ts +25 -25
  367. package/dist/src/models/system.entity.js +135 -135
  368. package/dist/src/models/system.entity.js.map +1 -1
  369. package/dist/src/models/user-group.entity.d.ts +19 -19
  370. package/dist/src/models/user-group.entity.js +110 -110
  371. package/dist/src/models/user-group.entity.js.map +1 -1
  372. package/dist/src/models/user-object-privilege.entity.d.ts +20 -20
  373. package/dist/src/models/user-object-privilege.entity.js +109 -109
  374. package/dist/src/models/user-object-privilege.entity.js.map +1 -1
  375. package/dist/src/models/user-privilege.entity.d.ts +17 -17
  376. package/dist/src/models/user-privilege.entity.js +95 -95
  377. package/dist/src/models/user-privilege.entity.js.map +1 -1
  378. package/dist/src/models/user-system-access.entity.d.ts +17 -17
  379. package/dist/src/models/user-system-access.entity.js +104 -104
  380. package/dist/src/models/user-system-access.entity.js.map +1 -1
  381. package/dist/src/models/user.entity.d.ts +40 -40
  382. package/dist/src/models/user.entity.js +214 -215
  383. package/dist/src/models/user.entity.js.map +1 -1
  384. package/dist/src/redis-client/__mocks__/jest-initial-setup.d.ts +1 -1
  385. package/dist/src/redis-client/__mocks__/jest-initial-setup.js +4 -4
  386. package/dist/src/redis-client/__mocks__/redis-mock.d.ts +2 -2
  387. package/dist/src/redis-client/__mocks__/redis-mock.js +22 -22
  388. package/dist/src/redis-client/index.d.ts +1 -1
  389. package/dist/src/redis-client/index.js +17 -17
  390. package/dist/src/redis-client/redis.service.d.ts +9 -9
  391. package/dist/src/redis-client/redis.service.js +87 -87
  392. package/dist/src/redis-client/redis.service.js.map +1 -1
  393. package/dist/src/session/index.d.ts +2 -2
  394. package/dist/src/session/index.js +18 -18
  395. package/dist/src/session/interfaces/index.d.ts +1 -1
  396. package/dist/src/session/interfaces/index.js +17 -17
  397. package/dist/src/session/interfaces/session-service.interface.d.ts +9 -9
  398. package/dist/src/session/interfaces/session-service.interface.js +2 -2
  399. package/dist/src/session/session.service.d.ts +13 -13
  400. package/dist/src/session/session.service.js +95 -95
  401. package/dist/src/session/session.service.js.map +1 -1
  402. package/dist/tsconfig.tsbuildinfo +1 -1
  403. package/jest.config.js +14 -14
  404. package/migrations/20240314080602-create-user-table.js +124 -124
  405. package/migrations/20240314080603-create-user-group-table.js +85 -85
  406. package/migrations/20240314080604-create-user-user-group-table.js +55 -55
  407. package/migrations/20240314080605-create-login-history-table.js +53 -53
  408. package/migrations/20240527064925-create-system-table.js +78 -78
  409. package/migrations/20240527064926-create-system-privilege-table.js +71 -71
  410. package/migrations/20240527065342-create-group-table.js +93 -93
  411. package/migrations/20240527065633-create-group-reporting-user-table.js +76 -76
  412. package/migrations/20240528011551-create-group-system-access-table.js +72 -72
  413. package/migrations/20240528023018-user-system-access-table.js +75 -75
  414. package/migrations/20240528032229-user-privilege-table.js +76 -76
  415. package/migrations/20240528063003-create-group-privilege-table.js +76 -76
  416. package/migrations/20240528063051-create-group-object-privilege-table.js +84 -84
  417. package/migrations/20240528063107-create-user-object-privilege-table.js +84 -84
  418. package/migrations/20240528063108-create-api-key-table.js +85 -85
  419. package/migrations/20241104104802-create-building-table.js +95 -95
  420. package/package.json +88 -89
  421. package/sampledotenv +7 -7
  422. package/sonar-project.properties +22 -22
  423. package/src/components/group/group.ts +2 -3
  424. package/src/components/group-system-access/group-system-access.repository.ts +2 -3
  425. package/src/components/login-user/login-user.ts +2 -3
  426. package/src/components/login-user/user.ts +44 -6
  427. package/src/components/system-privilege/system-privilege.ts +2 -3
  428. package/src/components/user-privilege/user-privilege.ts +2 -3
  429. package/src/components/user-system-access/user-system-access.ts +2 -3
  430. package/tsconfig.build.json +5 -5
  431. package/tsconfig.json +22 -22
@@ -1,32 +1,32 @@
1
- import { PasswordHashService } from "../../../../src/components/password-hash/password-hash.service";
2
-
3
- jest.mock('argon2', () => {
4
- return {
5
- hash: jest.fn((passowrd) => {
6
- return `hash${passowrd}`;
7
- }),
8
- verify: jest.fn().mockResolvedValue(true)
9
- }
10
- })
11
-
12
- describe('password-hash.service', () => {
13
- const passwordHashService = new PasswordHashService();
14
- afterEach(() => {
15
- jest.clearAllMocks();
16
- });
17
-
18
- it('should return hash password', async () => {
19
- const password = 'password';
20
- const hash = await passwordHashService.hashPassword(password);
21
- expect(hash).toEqual('hashpassword');
22
- })
23
-
24
- it('should return true when verify password', async () => {
25
- const password = 'password';
26
- const hash = 'hashpassword10';
27
- const result = await passwordHashService.verify(password, hash);
28
- expect(result).toEqual(true);
29
- });
30
-
31
-
1
+ import { PasswordHashService } from "../../../../src/components/password-hash/password-hash.service";
2
+
3
+ jest.mock('argon2', () => {
4
+ return {
5
+ hash: jest.fn((passowrd) => {
6
+ return `hash${passowrd}`;
7
+ }),
8
+ verify: jest.fn().mockResolvedValue(true)
9
+ }
10
+ })
11
+
12
+ describe('password-hash.service', () => {
13
+ const passwordHashService = new PasswordHashService();
14
+ afterEach(() => {
15
+ jest.clearAllMocks();
16
+ });
17
+
18
+ it('should return hash password', async () => {
19
+ const password = 'password';
20
+ const hash = await passwordHashService.hashPassword(password);
21
+ expect(hash).toEqual('hashpassword');
22
+ })
23
+
24
+ it('should return true when verify password', async () => {
25
+ const password = 'password';
26
+ const hash = 'hashpassword10';
27
+ const result = await passwordHashService.verify(password, hash);
28
+ expect(result).toEqual(true);
29
+ });
30
+
31
+
32
32
  })
@@ -1,255 +1,255 @@
1
- import { System } from '../../../../src/components/system/system';
2
- import { SystemRepository } from '../../../../src/components/system/system.repository';
3
- import { LoginUser } from '../../../../src/components/login-user/login-user';
4
- import { ClassError } from '@tomei/general';
5
- import { ApplicationConfig } from '@tomei/config';
6
-
7
- describe('System', () => {
8
- let system: System;
9
- let systemRepositoryMock: jest.Mocked<SystemRepository>;
10
- let loginUserMock: jest.Mocked<LoginUser>;
11
-
12
- beforeEach(() => {
13
- systemRepositoryMock = new SystemRepository() as jest.Mocked<SystemRepository>;
14
- loginUserMock = new (LoginUser.prototype as any).constructor() as jest.Mocked<LoginUser>;
15
- system = new (System.prototype as any).constructor();
16
- });
17
-
18
- afterEach(() => {
19
- jest.clearAllMocks();
20
- });
21
-
22
- const systemAttr = {
23
- SystemCode: 'TEST',
24
- Name: 'Test System',
25
- Description: 'This is a test system',
26
- AccessURL: undefined,
27
- GooglePlayURL: undefined,
28
- AppleStoreURL: undefined,
29
- APIKey: undefined,
30
- APISecret: undefined,
31
- Status: undefined,
32
- CreatedById: 1,
33
- CreatedAt: expect.any(Date),
34
- UpdatedById: 1,
35
- UpdatedAt: expect.any(Date),
36
- }
37
-
38
- describe('init', () => {
39
- it('should initialize a system when SystemCode is provided', async () => {
40
- const dbTransaction = {};
41
- const systemCode = 'TEST';
42
- const findOneMock = jest
43
- .spyOn(SystemRepository.prototype, 'findByPk')
44
- .mockResolvedValueOnce({ ...systemAttr } as any);
45
-
46
- const result = await System.init(dbTransaction, systemCode);
47
-
48
- expect(findOneMock).toBeCalledWith(systemCode, {
49
- transaction: dbTransaction,
50
- });
51
- expect(result).toBeInstanceOf(System);
52
- });
53
-
54
- it('should throw an error when SystemCode is not found', async () => {
55
- const dbTransaction = {};
56
- const systemCode = 'TEST';
57
-
58
- jest
59
- .spyOn(SystemRepository.prototype, 'findByPk')
60
- .mockResolvedValueOnce(null);
61
- await expect(System.init(dbTransaction, systemCode)).rejects.toThrow(
62
- new ClassError('System', 'SystemErrMsg01', 'Failed To Initialize System')
63
- );
64
- });
65
-
66
- it('should initialize a new system when SystemCode is not provided', async () => {
67
- const dbTransaction = {};
68
-
69
- const result = await System.init(dbTransaction);
70
-
71
- expect(result).toBeInstanceOf(System);
72
- });
73
- });
74
-
75
- describe('createSystem', () => {
76
- const loginUser = new (LoginUser.prototype as any).constructor();
77
- const dbTransaction = {};
78
- const checkPrivilegesMock = jest.spyOn(LoginUser.prototype, 'checkPrivileges').mockResolvedValue(true);
79
- const getComponentConfigMock = jest
80
- .spyOn(ApplicationConfig, 'getComponentConfigValue')
81
- .mockReturnValue('system-code');
82
-
83
- beforeEach(() => {
84
- getComponentConfigMock.mockReturnValue('system-code');
85
- checkPrivilegesMock.mockResolvedValue(true);
86
- loginUser.ObjectId = '1';
87
- });
88
-
89
- const createMock = jest
90
- .spyOn(SystemRepository.prototype, 'create')
91
- .mockResolvedValue({} as any);
92
-
93
- it('should create a new system', async () => {
94
- const createDate = new Date();
95
- const system = await System.init(dbTransaction);
96
- system.SystemCode = 'TEST';
97
- system.Name = 'Test System';
98
- system.Description = 'This is a test system';
99
- system['_CreatedById'] = 1;
100
- system['__CreatedAt'] = createDate;
101
- system['__UpdatedById'] = 1;
102
- system['__UpdatedAt'] = createDate;
103
-
104
- await system.createSystem(loginUser, dbTransaction);
105
-
106
- expect(checkPrivilegesMock).toBeCalledWith('system-code', 'System - Create');
107
- expect(createMock).toBeCalledWith(
108
- {
109
- SystemCode: 'TEST',
110
- Name: 'Test System',
111
- Description: 'This is a test system',
112
- AccessURL: undefined,
113
- GooglePlayURL: undefined,
114
- AppleStoreURL: undefined,
115
- APIKey: undefined,
116
- APISecret: undefined,
117
- Status: undefined,
118
- CreatedById: 1,
119
- CreatedAt: expect.any(Date),
120
- UpdatedById: 1,
121
- UpdatedAt: expect.any(Date),
122
- }, {
123
- transaction: dbTransaction,
124
- });
125
- });
126
-
127
- it('should throw an error when user does not have permission', async () => {
128
- loginUser.checkPrivileges.mockResolvedValue(false);
129
-
130
- await expect(system.createSystem(loginUser, dbTransaction)).rejects.toThrow(
131
- new Error('You do not have permission to list UserGroup.')
132
- );
133
- });
134
-
135
- it('should throw an error when SystemCode is missing', async () => {
136
- system.Name = 'Test System';
137
- system.Description = 'This is a test system';
138
-
139
- await expect(system.createSystem(loginUser, dbTransaction)).rejects.toThrow(
140
- new ClassError('System', 'SystemErrMsg02', 'SystemCode must have value.')
141
- );
142
- });
143
-
144
- it('should throw an error when Name is missing', async () => {
145
- system.SystemCode = 'TEST';
146
- system.Description = 'This is a test system';
147
-
148
- await expect(system.createSystem(loginUser, dbTransaction)).rejects.toThrow(
149
- new ClassError('System', 'SystemErrMsg03', 'Name must have value.')
150
- );
151
- });
152
-
153
- it('should throw an error when Description is missing', async () => {
154
- system.SystemCode = 'TEST';
155
- system.Name = 'Test System';
156
-
157
- await expect(system.createSystem(loginUser, dbTransaction)).rejects.toThrow(
158
- new ClassError('System', 'SystemErrMsg04', 'Description must have value.')
159
- );
160
- });
161
-
162
- it('should throw an error when failed to create system', async () => {
163
- system.SystemCode = 'TEST';
164
- system.Name = 'Test System';
165
- system.Description = 'This is a test system';
166
-
167
- systemRepositoryMock.create.mockRejectedValueOnce(new Error());
168
-
169
- await expect(system.createSystem(loginUser, dbTransaction)).rejects.toThrow(
170
- new Error()
171
- );
172
- });
173
- });
174
-
175
- describe('setSystemCode', () => {
176
- const dbTransaction = {};
177
- const systemRepositoryMock = jest.spyOn(SystemRepository.prototype, 'findOne');
178
- beforeEach(() => {
179
- systemRepositoryMock.mockResolvedValue(null);
180
- });
181
-
182
- it('should set the SystemCode when there is no duplicate', async () => {
183
- const systemCode = 'TEST';
184
-
185
- await system.setSystemCode(dbTransaction, systemCode);
186
-
187
- expect(systemRepositoryMock).toBeCalledWith({
188
- where: {
189
- SystemCode: systemCode,
190
- },
191
- transaction: dbTransaction,
192
- });
193
- expect(system.SystemCode).toBe(systemCode);
194
- });
195
-
196
- it('should throw an error when SystemCode already exists', async () => {
197
- const systemCode = 'TEST';
198
-
199
- systemRepositoryMock.mockResolvedValue({} as any);
200
-
201
- await expect(system.setSystemCode(dbTransaction, systemCode)).rejects.toThrow(
202
- new ClassError('System', 'SystemErrMsg05', 'System Code already exists.')
203
- );
204
- });
205
-
206
- it('should throw an error when failed to check duplicate SystemCode', async () => {
207
- const systemCode = 'TEST';
208
-
209
- systemRepositoryMock.mockRejectedValueOnce(new Error());
210
-
211
- await expect(system.setSystemCode(dbTransaction, systemCode)).rejects.toThrow(
212
- new Error()
213
- );
214
- });
215
- });
216
-
217
- describe('findAll', () => {
218
- const loginUser = new (LoginUser.prototype as any).constructor();
219
- const dbTransaction = {};
220
-
221
- it('should find all systems based on filter', async () => {
222
- const page = 1;
223
- const rows = 10;
224
- const search = { Name: 'exampleName' };
225
- const findAllWithPaginationSpy = jest.spyOn(System['_Repo'], 'findAllWithPagination').mockResolvedValueOnce({
226
- count: 1,
227
- rows: [{} as any],
228
- });
229
-
230
- const result = await System.findAll(dbTransaction, loginUser, page, rows, search);
231
-
232
- expect(result.count).toBe(1);
233
- expect(result.systems).toHaveLength(1);
234
- expect(result.systems[0]).toBeInstanceOf(System);
235
- });
236
-
237
- it('should find all systems without pagination when page and rows are not provided', async () => {
238
- const findAllWithPaginationSpy = jest.spyOn(System['_Repo'], 'findAllWithPagination').mockResolvedValueOnce({
239
- count: 1,
240
- rows: [{} as any],
241
- });
242
-
243
- const result = await System.findAll(dbTransaction, loginUser);
244
-
245
- expect(findAllWithPaginationSpy).toHaveBeenCalledWith({
246
- where: {},
247
- order: [['CreatedAt', 'DESC']],
248
- transaction: dbTransaction,
249
- });
250
- expect(result.count).toBe(1);
251
- expect(result.systems).toHaveLength(1);
252
- expect(result.systems[0]).toBeInstanceOf(System);
253
- });
254
- });
1
+ import { System } from '../../../../src/components/system/system';
2
+ import { SystemRepository } from '../../../../src/components/system/system.repository';
3
+ import { LoginUser } from '../../../../src/components/login-user/login-user';
4
+ import { ClassError } from '@tomei/general';
5
+ import { ApplicationConfig } from '@tomei/config';
6
+
7
+ describe('System', () => {
8
+ let system: System;
9
+ let systemRepositoryMock: jest.Mocked<SystemRepository>;
10
+ let loginUserMock: jest.Mocked<LoginUser>;
11
+
12
+ beforeEach(() => {
13
+ systemRepositoryMock = new SystemRepository() as jest.Mocked<SystemRepository>;
14
+ loginUserMock = new (LoginUser.prototype as any).constructor() as jest.Mocked<LoginUser>;
15
+ system = new (System.prototype as any).constructor();
16
+ });
17
+
18
+ afterEach(() => {
19
+ jest.clearAllMocks();
20
+ });
21
+
22
+ const systemAttr = {
23
+ SystemCode: 'TEST',
24
+ Name: 'Test System',
25
+ Description: 'This is a test system',
26
+ AccessURL: undefined,
27
+ GooglePlayURL: undefined,
28
+ AppleStoreURL: undefined,
29
+ APIKey: undefined,
30
+ APISecret: undefined,
31
+ Status: undefined,
32
+ CreatedById: 1,
33
+ CreatedAt: expect.any(Date),
34
+ UpdatedById: 1,
35
+ UpdatedAt: expect.any(Date),
36
+ }
37
+
38
+ describe('init', () => {
39
+ it('should initialize a system when SystemCode is provided', async () => {
40
+ const dbTransaction = {};
41
+ const systemCode = 'TEST';
42
+ const findOneMock = jest
43
+ .spyOn(SystemRepository.prototype, 'findByPk')
44
+ .mockResolvedValueOnce({ ...systemAttr } as any);
45
+
46
+ const result = await System.init(dbTransaction, systemCode);
47
+
48
+ expect(findOneMock).toBeCalledWith(systemCode, {
49
+ transaction: dbTransaction,
50
+ });
51
+ expect(result).toBeInstanceOf(System);
52
+ });
53
+
54
+ it('should throw an error when SystemCode is not found', async () => {
55
+ const dbTransaction = {};
56
+ const systemCode = 'TEST';
57
+
58
+ jest
59
+ .spyOn(SystemRepository.prototype, 'findByPk')
60
+ .mockResolvedValueOnce(null);
61
+ await expect(System.init(dbTransaction, systemCode)).rejects.toThrow(
62
+ new ClassError('System', 'SystemErrMsg01', 'Failed To Initialize System')
63
+ );
64
+ });
65
+
66
+ it('should initialize a new system when SystemCode is not provided', async () => {
67
+ const dbTransaction = {};
68
+
69
+ const result = await System.init(dbTransaction);
70
+
71
+ expect(result).toBeInstanceOf(System);
72
+ });
73
+ });
74
+
75
+ describe('createSystem', () => {
76
+ const loginUser = new (LoginUser.prototype as any).constructor();
77
+ const dbTransaction = {};
78
+ const checkPrivilegesMock = jest.spyOn(LoginUser.prototype, 'checkPrivileges').mockResolvedValue(true);
79
+ const getComponentConfigMock = jest
80
+ .spyOn(ApplicationConfig, 'getComponentConfigValue')
81
+ .mockReturnValue('system-code');
82
+
83
+ beforeEach(() => {
84
+ getComponentConfigMock.mockReturnValue('system-code');
85
+ checkPrivilegesMock.mockResolvedValue(true);
86
+ loginUser.ObjectId = '1';
87
+ });
88
+
89
+ const createMock = jest
90
+ .spyOn(SystemRepository.prototype, 'create')
91
+ .mockResolvedValue({} as any);
92
+
93
+ it('should create a new system', async () => {
94
+ const createDate = new Date();
95
+ const system = await System.init(dbTransaction);
96
+ system.SystemCode = 'TEST';
97
+ system.Name = 'Test System';
98
+ system.Description = 'This is a test system';
99
+ system['_CreatedById'] = 1;
100
+ system['__CreatedAt'] = createDate;
101
+ system['__UpdatedById'] = 1;
102
+ system['__UpdatedAt'] = createDate;
103
+
104
+ await system.createSystem(loginUser, dbTransaction);
105
+
106
+ expect(checkPrivilegesMock).toBeCalledWith('system-code', 'System - Create');
107
+ expect(createMock).toBeCalledWith(
108
+ {
109
+ SystemCode: 'TEST',
110
+ Name: 'Test System',
111
+ Description: 'This is a test system',
112
+ AccessURL: undefined,
113
+ GooglePlayURL: undefined,
114
+ AppleStoreURL: undefined,
115
+ APIKey: undefined,
116
+ APISecret: undefined,
117
+ Status: undefined,
118
+ CreatedById: 1,
119
+ CreatedAt: expect.any(Date),
120
+ UpdatedById: 1,
121
+ UpdatedAt: expect.any(Date),
122
+ }, {
123
+ transaction: dbTransaction,
124
+ });
125
+ });
126
+
127
+ it('should throw an error when user does not have permission', async () => {
128
+ loginUser.checkPrivileges.mockResolvedValue(false);
129
+
130
+ await expect(system.createSystem(loginUser, dbTransaction)).rejects.toThrow(
131
+ new Error('You do not have permission to list UserGroup.')
132
+ );
133
+ });
134
+
135
+ it('should throw an error when SystemCode is missing', async () => {
136
+ system.Name = 'Test System';
137
+ system.Description = 'This is a test system';
138
+
139
+ await expect(system.createSystem(loginUser, dbTransaction)).rejects.toThrow(
140
+ new ClassError('System', 'SystemErrMsg02', 'SystemCode must have value.')
141
+ );
142
+ });
143
+
144
+ it('should throw an error when Name is missing', async () => {
145
+ system.SystemCode = 'TEST';
146
+ system.Description = 'This is a test system';
147
+
148
+ await expect(system.createSystem(loginUser, dbTransaction)).rejects.toThrow(
149
+ new ClassError('System', 'SystemErrMsg03', 'Name must have value.')
150
+ );
151
+ });
152
+
153
+ it('should throw an error when Description is missing', async () => {
154
+ system.SystemCode = 'TEST';
155
+ system.Name = 'Test System';
156
+
157
+ await expect(system.createSystem(loginUser, dbTransaction)).rejects.toThrow(
158
+ new ClassError('System', 'SystemErrMsg04', 'Description must have value.')
159
+ );
160
+ });
161
+
162
+ it('should throw an error when failed to create system', async () => {
163
+ system.SystemCode = 'TEST';
164
+ system.Name = 'Test System';
165
+ system.Description = 'This is a test system';
166
+
167
+ systemRepositoryMock.create.mockRejectedValueOnce(new Error());
168
+
169
+ await expect(system.createSystem(loginUser, dbTransaction)).rejects.toThrow(
170
+ new Error()
171
+ );
172
+ });
173
+ });
174
+
175
+ describe('setSystemCode', () => {
176
+ const dbTransaction = {};
177
+ const systemRepositoryMock = jest.spyOn(SystemRepository.prototype, 'findOne');
178
+ beforeEach(() => {
179
+ systemRepositoryMock.mockResolvedValue(null);
180
+ });
181
+
182
+ it('should set the SystemCode when there is no duplicate', async () => {
183
+ const systemCode = 'TEST';
184
+
185
+ await system.setSystemCode(dbTransaction, systemCode);
186
+
187
+ expect(systemRepositoryMock).toBeCalledWith({
188
+ where: {
189
+ SystemCode: systemCode,
190
+ },
191
+ transaction: dbTransaction,
192
+ });
193
+ expect(system.SystemCode).toBe(systemCode);
194
+ });
195
+
196
+ it('should throw an error when SystemCode already exists', async () => {
197
+ const systemCode = 'TEST';
198
+
199
+ systemRepositoryMock.mockResolvedValue({} as any);
200
+
201
+ await expect(system.setSystemCode(dbTransaction, systemCode)).rejects.toThrow(
202
+ new ClassError('System', 'SystemErrMsg05', 'System Code already exists.')
203
+ );
204
+ });
205
+
206
+ it('should throw an error when failed to check duplicate SystemCode', async () => {
207
+ const systemCode = 'TEST';
208
+
209
+ systemRepositoryMock.mockRejectedValueOnce(new Error());
210
+
211
+ await expect(system.setSystemCode(dbTransaction, systemCode)).rejects.toThrow(
212
+ new Error()
213
+ );
214
+ });
215
+ });
216
+
217
+ describe('findAll', () => {
218
+ const loginUser = new (LoginUser.prototype as any).constructor();
219
+ const dbTransaction = {};
220
+
221
+ it('should find all systems based on filter', async () => {
222
+ const page = 1;
223
+ const rows = 10;
224
+ const search = { Name: 'exampleName' };
225
+ const findAllWithPaginationSpy = jest.spyOn(System['_Repo'], 'findAllWithPagination').mockResolvedValueOnce({
226
+ count: 1,
227
+ rows: [{} as any],
228
+ });
229
+
230
+ const result = await System.findAll(dbTransaction, loginUser, page, rows, search);
231
+
232
+ expect(result.count).toBe(1);
233
+ expect(result.systems).toHaveLength(1);
234
+ expect(result.systems[0]).toBeInstanceOf(System);
235
+ });
236
+
237
+ it('should find all systems without pagination when page and rows are not provided', async () => {
238
+ const findAllWithPaginationSpy = jest.spyOn(System['_Repo'], 'findAllWithPagination').mockResolvedValueOnce({
239
+ count: 1,
240
+ rows: [{} as any],
241
+ });
242
+
243
+ const result = await System.findAll(dbTransaction, loginUser);
244
+
245
+ expect(findAllWithPaginationSpy).toHaveBeenCalledWith({
246
+ where: {},
247
+ order: [['CreatedAt', 'DESC']],
248
+ transaction: dbTransaction,
249
+ });
250
+ expect(result.count).toBe(1);
251
+ expect(result.systems).toHaveLength(1);
252
+ expect(result.systems[0]).toBeInstanceOf(System);
253
+ });
254
+ });
255
255
  });