@hed-hog/core 0.0.370 → 0.0.373

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 (248) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +2 -0
  3. package/dist/ai/ai.service.d.ts.map +1 -1
  4. package/dist/ai/ai.service.js +10 -7
  5. package/dist/ai/ai.service.js.map +1 -1
  6. package/dist/app-command/app-command.module.d.ts +3 -0
  7. package/dist/app-command/app-command.module.d.ts.map +1 -0
  8. package/dist/app-command/app-command.module.js +22 -0
  9. package/dist/app-command/app-command.module.js.map +1 -0
  10. package/dist/app-command/app-command.registry.d.ts +22 -0
  11. package/dist/app-command/app-command.registry.d.ts.map +1 -0
  12. package/dist/{webhook-integration/webhook-command.registry.js → app-command/app-command.registry.js} +6 -6
  13. package/dist/app-command/app-command.registry.js.map +1 -0
  14. package/dist/auth/auth.controller.d.ts +2 -2
  15. package/dist/auth/auth.controller.d.ts.map +1 -1
  16. package/dist/auth/auth.controller.js +20 -7
  17. package/dist/auth/auth.controller.js.map +1 -1
  18. package/dist/auth/auth.service.d.ts +3 -3
  19. package/dist/auth/auth.service.d.ts.map +1 -1
  20. package/dist/auth/auth.service.js +10 -36
  21. package/dist/auth/auth.service.js.map +1 -1
  22. package/dist/auth/dto/forget.dto.d.ts +1 -0
  23. package/dist/auth/dto/forget.dto.d.ts.map +1 -1
  24. package/dist/auth/dto/forget.dto.js +5 -0
  25. package/dist/auth/dto/forget.dto.js.map +1 -1
  26. package/dist/auth/guards/auth.guard.d.ts.map +1 -1
  27. package/dist/auth/guards/auth.guard.js +4 -1
  28. package/dist/auth/guards/auth.guard.js.map +1 -1
  29. package/dist/challenge/challenge.service.d.ts +8 -7
  30. package/dist/challenge/challenge.service.d.ts.map +1 -1
  31. package/dist/challenge/challenge.service.js +27 -19
  32. package/dist/challenge/challenge.service.js.map +1 -1
  33. package/dist/file/dto/upload.dto.d.ts +3 -0
  34. package/dist/file/dto/upload.dto.d.ts.map +1 -1
  35. package/dist/file/dto/upload.dto.js +22 -0
  36. package/dist/file/dto/upload.dto.js.map +1 -1
  37. package/dist/file/file.controller.d.ts +2 -1
  38. package/dist/file/file.controller.d.ts.map +1 -1
  39. package/dist/file/file.controller.js +29 -16
  40. package/dist/file/file.controller.js.map +1 -1
  41. package/dist/file/file.service.d.ts +51 -1
  42. package/dist/file/file.service.d.ts.map +1 -1
  43. package/dist/file/file.service.js +250 -18
  44. package/dist/file/file.service.js.map +1 -1
  45. package/dist/file/image-optimization.service.d.ts +17 -4
  46. package/dist/file/image-optimization.service.d.ts.map +1 -1
  47. package/dist/file/image-optimization.service.js +101 -46
  48. package/dist/file/image-optimization.service.js.map +1 -1
  49. package/dist/file/provider/s3.provider.d.ts.map +1 -1
  50. package/dist/file/provider/s3.provider.js +15 -7
  51. package/dist/file/provider/s3.provider.js.map +1 -1
  52. package/dist/file/provider/spaces.provider.d.ts.map +1 -1
  53. package/dist/file/provider/spaces.provider.js +18 -8
  54. package/dist/file/provider/spaces.provider.js.map +1 -1
  55. package/dist/index.d.ts +4 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +4 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/integration/services/event-subscriber.registry.d.ts +5 -0
  60. package/dist/integration/services/event-subscriber.registry.d.ts.map +1 -1
  61. package/dist/integration/services/event-subscriber.registry.js +15 -0
  62. package/dist/integration/services/event-subscriber.registry.js.map +1 -1
  63. package/dist/integration/services/outbox.processor.d.ts.map +1 -1
  64. package/dist/integration/services/outbox.processor.js +2 -4
  65. package/dist/integration/services/outbox.processor.js.map +1 -1
  66. package/dist/integration/services/outbox.service.d.ts +4 -2
  67. package/dist/integration/services/outbox.service.d.ts.map +1 -1
  68. package/dist/integration/services/outbox.service.js +26 -15
  69. package/dist/integration/services/outbox.service.js.map +1 -1
  70. package/dist/integration-profile/integration-credential-crypto.service.d.ts +43 -0
  71. package/dist/integration-profile/integration-credential-crypto.service.d.ts.map +1 -0
  72. package/dist/integration-profile/integration-credential-crypto.service.js +142 -0
  73. package/dist/integration-profile/integration-credential-crypto.service.js.map +1 -0
  74. package/dist/integration-profile/integration-profile.controller.d.ts +6 -7
  75. package/dist/integration-profile/integration-profile.controller.d.ts.map +1 -1
  76. package/dist/integration-profile/integration-profile.controller.js +4 -3
  77. package/dist/integration-profile/integration-profile.controller.js.map +1 -1
  78. package/dist/integration-profile/integration-profile.module.d.ts.map +1 -1
  79. package/dist/integration-profile/integration-profile.module.js +5 -2
  80. package/dist/integration-profile/integration-profile.module.js.map +1 -1
  81. package/dist/integration-profile/integration-profile.secrets.d.ts +16 -0
  82. package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -0
  83. package/dist/integration-profile/integration-profile.secrets.js +56 -0
  84. package/dist/integration-profile/integration-profile.secrets.js.map +1 -0
  85. package/dist/integration-profile/integration-profile.service.d.ts +125 -8
  86. package/dist/integration-profile/integration-profile.service.d.ts.map +1 -1
  87. package/dist/integration-profile/integration-profile.service.js +257 -68
  88. package/dist/integration-profile/integration-profile.service.js.map +1 -1
  89. package/dist/integration-profile/integration-profile.utils.d.ts +17 -0
  90. package/dist/integration-profile/integration-profile.utils.d.ts.map +1 -1
  91. package/dist/integration-profile/integration-profile.utils.js +31 -0
  92. package/dist/integration-profile/integration-profile.utils.js.map +1 -1
  93. package/dist/language/en.json +178 -0
  94. package/dist/language/pt.json +178 -0
  95. package/dist/mail/mail.controller.d.ts.map +1 -1
  96. package/dist/mail/mail.controller.js +5 -28
  97. package/dist/mail/mail.controller.js.map +1 -1
  98. package/dist/mail/mail.module.js +18 -18
  99. package/dist/mail/mail.module.js.map +1 -1
  100. package/dist/mail/mail.service.d.ts +13 -2
  101. package/dist/mail/mail.service.d.ts.map +1 -1
  102. package/dist/mail/mail.service.js +25 -15
  103. package/dist/mail/mail.service.js.map +1 -1
  104. package/dist/mcp-chat/mcp-chat.service.js +6 -5
  105. package/dist/mcp-chat/mcp-chat.service.js.map +1 -1
  106. package/dist/oauth/providers/facebook.provider.js +5 -5
  107. package/dist/oauth/providers/facebook.provider.js.map +1 -1
  108. package/dist/oauth/providers/github.provider.js +5 -5
  109. package/dist/oauth/providers/github.provider.js.map +1 -1
  110. package/dist/oauth/providers/google.provider.js +5 -5
  111. package/dist/oauth/providers/google.provider.js.map +1 -1
  112. package/dist/oauth/providers/microsoft-entra-id.provider.js +5 -5
  113. package/dist/oauth/providers/microsoft-entra-id.provider.js.map +1 -1
  114. package/dist/oauth/providers/microsoft.provider.js +5 -5
  115. package/dist/oauth/providers/microsoft.provider.js.map +1 -1
  116. package/dist/pdf/pdf.service.d.ts +4 -0
  117. package/dist/pdf/pdf.service.d.ts.map +1 -1
  118. package/dist/pdf/pdf.service.js +16 -9
  119. package/dist/pdf/pdf.service.js.map +1 -1
  120. package/dist/profile/profile.controller.d.ts +7 -7
  121. package/dist/profile/profile.controller.d.ts.map +1 -1
  122. package/dist/profile/profile.controller.js +28 -21
  123. package/dist/profile/profile.controller.js.map +1 -1
  124. package/dist/profile/profile.service.d.ts +7 -7
  125. package/dist/profile/profile.service.d.ts.map +1 -1
  126. package/dist/profile/profile.service.js +21 -25
  127. package/dist/profile/profile.service.js.map +1 -1
  128. package/dist/setting/setting.service.d.ts +1 -0
  129. package/dist/setting/setting.service.d.ts.map +1 -1
  130. package/dist/setting/setting.service.js +15 -2
  131. package/dist/setting/setting.service.js.map +1 -1
  132. package/dist/token/token.service.d.ts.map +1 -1
  133. package/dist/token/token.service.js +2 -1
  134. package/dist/token/token.service.js.map +1 -1
  135. package/dist/user/user.controller.d.ts +9 -0
  136. package/dist/user/user.controller.d.ts.map +1 -1
  137. package/dist/user/user.controller.js +13 -0
  138. package/dist/user/user.controller.js.map +1 -1
  139. package/dist/user/user.service.d.ts +7 -0
  140. package/dist/user/user.service.d.ts.map +1 -1
  141. package/dist/user/user.service.js +19 -0
  142. package/dist/user/user.service.js.map +1 -1
  143. package/dist/utils/webauthn-origin.d.ts +11 -0
  144. package/dist/utils/webauthn-origin.d.ts.map +1 -0
  145. package/dist/utils/webauthn-origin.js +37 -0
  146. package/dist/utils/webauthn-origin.js.map +1 -0
  147. package/dist/webhook-integration/webhook-integration.controller.d.ts +13 -0
  148. package/dist/webhook-integration/webhook-integration.controller.d.ts.map +1 -1
  149. package/dist/webhook-integration/webhook-integration.controller.js +29 -0
  150. package/dist/webhook-integration/webhook-integration.controller.js.map +1 -1
  151. package/dist/webhook-integration/webhook-integration.module.js +3 -3
  152. package/dist/webhook-integration/webhook-integration.module.js.map +1 -1
  153. package/dist/webhook-integration/webhook-integration.service.d.ts +18 -2
  154. package/dist/webhook-integration/webhook-integration.service.d.ts.map +1 -1
  155. package/dist/webhook-integration/webhook-integration.service.js +110 -6
  156. package/dist/webhook-integration/webhook-integration.service.js.map +1 -1
  157. package/hedhog/data/integration_provider.yaml +9 -0
  158. package/hedhog/data/integration_type.yaml +6 -0
  159. package/hedhog/data/menu.yaml +6 -0
  160. package/hedhog/data/role.yaml +7 -0
  161. package/hedhog/data/route.yaml +36 -0
  162. package/hedhog/data/setting_group.yaml +119 -13
  163. package/hedhog/frontend/app/access-log/page.tsx.ejs +35 -3
  164. package/hedhog/frontend/app/account/components/active-sessions.tsx.ejs +36 -3
  165. package/hedhog/frontend/app/account/components/mcp-tokens.tsx.ejs +39 -4
  166. package/hedhog/frontend/app/account/components/tokens.tsx.ejs +39 -4
  167. package/hedhog/frontend/app/ai_agent/page.tsx.ejs +35 -2
  168. package/hedhog/frontend/app/configurations/[slug]/components/byte-size-input.tsx.ejs +160 -0
  169. package/hedhog/frontend/app/configurations/[slug]/components/duration-input.tsx.ejs +157 -0
  170. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +244 -63
  171. package/hedhog/frontend/app/dashboard/[slug]/dashboard-content.tsx.ejs +33 -1
  172. package/hedhog/frontend/app/dashboard/management/tabs/component-roles-tab.tsx.ejs +35 -3
  173. package/hedhog/frontend/app/dashboard/management/tabs/components-tab.tsx.ejs +36 -4
  174. package/hedhog/frontend/app/dashboard/management/tabs/dashboard-roles-tab.tsx.ejs +35 -3
  175. package/hedhog/frontend/app/dashboard/management/tabs/dashboards-tab.tsx.ejs +36 -4
  176. package/hedhog/frontend/app/dashboard/management/tabs/items-tab.tsx.ejs +35 -3
  177. package/hedhog/frontend/app/integration/profiles/page.tsx.ejs +156 -38
  178. package/hedhog/frontend/app/integrations-webhooks/page.tsx.ejs +118 -11
  179. package/hedhog/frontend/app/mail/log/page.tsx.ejs +37 -4
  180. package/hedhog/frontend/app/menu/page.tsx.ejs +34 -2
  181. package/hedhog/frontend/app/preferences/page.tsx.ejs +77 -0
  182. package/hedhog/frontend/app/roles/menus.tsx.ejs +35 -3
  183. package/hedhog/frontend/app/roles/page.tsx.ejs +34 -2
  184. package/hedhog/frontend/app/roles/routes.tsx.ejs +36 -4
  185. package/hedhog/frontend/app/roles/users.tsx.ejs +36 -4
  186. package/hedhog/frontend/app/routes/page.tsx.ejs +34 -2
  187. package/hedhog/frontend/app/setting-list/page.tsx.ejs +34 -2
  188. package/hedhog/frontend/app/users/page.tsx.ejs +51 -21
  189. package/hedhog/frontend/messages/en.json +69 -4
  190. package/hedhog/frontend/messages/pt.json +69 -4
  191. package/hedhog/table/setting.yaml +2 -0
  192. package/hedhog/table/webhook_call_log.yaml +49 -46
  193. package/package.json +9 -4
  194. package/src/ai/ai.service.ts +9 -6
  195. package/src/app-command/app-command.module.ts +9 -0
  196. package/src/{webhook-integration/webhook-command.registry.ts → app-command/app-command.registry.ts} +9 -9
  197. package/src/auth/auth.controller.ts +20 -4
  198. package/src/auth/auth.service.ts +10 -36
  199. package/src/auth/dto/forget.dto.ts +5 -1
  200. package/src/auth/guards/auth.guard.ts +4 -1
  201. package/src/challenge/challenge.service.ts +30 -19
  202. package/src/file/dto/upload.dto.ts +25 -1
  203. package/src/file/file.controller.ts +31 -18
  204. package/src/file/file.service.ts +341 -16
  205. package/src/file/image-optimization.service.ts +111 -46
  206. package/src/file/provider/s3.provider.ts +16 -7
  207. package/src/file/provider/spaces.provider.ts +15 -5
  208. package/src/index.ts +4 -1
  209. package/src/integration/services/event-subscriber.registry.ts +15 -0
  210. package/src/integration/services/outbox.processor.ts +2 -5
  211. package/src/integration/services/outbox.service.ts +35 -17
  212. package/src/integration-profile/integration-credential-crypto.service.ts +146 -0
  213. package/src/integration-profile/integration-profile.controller.ts +2 -0
  214. package/src/integration-profile/integration-profile.module.ts +5 -2
  215. package/src/integration-profile/integration-profile.secrets.ts +51 -0
  216. package/src/integration-profile/integration-profile.service.ts +335 -54
  217. package/src/integration-profile/integration-profile.utils.ts +56 -0
  218. package/src/language/en.json +5 -1
  219. package/src/language/pt.json +5 -1
  220. package/src/mail/mail.controller.ts +5 -29
  221. package/src/mail/mail.module.ts +5 -5
  222. package/src/mail/mail.service.ts +37 -13
  223. package/src/mcp-chat/mcp-chat.service.ts +5 -5
  224. package/src/oauth/oauth-callback-coordinator.service.spec.ts +159 -0
  225. package/src/oauth/providers/facebook.provider.ts +3 -3
  226. package/src/oauth/providers/github.provider.ts +3 -3
  227. package/src/oauth/providers/google.provider.ts +3 -3
  228. package/src/oauth/providers/microsoft-entra-id.provider.ts +3 -3
  229. package/src/oauth/providers/microsoft.provider.ts +3 -3
  230. package/src/pdf/pdf.service.ts +19 -6
  231. package/src/profile/profile.controller.ts +21 -14
  232. package/src/profile/profile.service.ts +23 -20
  233. package/src/security/security.service.spec.ts +222 -0
  234. package/src/setting/setting.service.ts +15 -2
  235. package/src/token/token.service.ts +2 -1
  236. package/src/user/user.controller.ts +26 -16
  237. package/src/user/user.service.ts +25 -0
  238. package/src/utils/webauthn-origin.ts +38 -0
  239. package/src/webhook-integration/webhook-integration.controller.ts +23 -0
  240. package/src/webhook-integration/webhook-integration.module.ts +3 -3
  241. package/src/webhook-integration/webhook-integration.service.ts +115 -5
  242. package/dist/webhook-integration/webhook-command.registry.d.ts +0 -22
  243. package/dist/webhook-integration/webhook-command.registry.d.ts.map +0 -1
  244. package/dist/webhook-integration/webhook-command.registry.js.map +0 -1
  245. package/src/menu/menu.service.spec.ts +0 -247
  246. package/src/route/route.service.spec.ts +0 -300
  247. package/src/screen/screen.service.spec.ts +0 -298
  248. package/src/user/user.service.spec.ts +0 -294
@@ -1,294 +0,0 @@
1
- // import {
2
- // PageOrderDirection,
3
- // PaginationDTO,
4
- // PaginationService,
5
- // } from '@hed-hog/api-pagination';
6
- // import { PrismaService } from '@hed-hog/api-prisma';
7
- // import { BadRequestException } from '@nestjs/common';
8
- // import { Test, TestingModule } from '@nestjs/testing';
9
- // import { genSalt, hash } from 'bcrypt';
10
- // import { DeleteDTO } from '../dto/delete.dto';
11
- // import { UpdateIdsDTO } from '../dto/update-ids.dto';
12
- // import { SALT_ROUNDS } from './constants/user.constants';
13
- // import { CreateDTO } from './dto/create.dto';
14
- // import { UpdateDTO } from './dto/update.dto';
15
- // import { UserService } from './user.service';
16
-
17
- // jest.mock('bcrypt', () => ({
18
- // genSalt: jest.fn().mockResolvedValue('mockSalt'),
19
- // hash: jest.fn().mockResolvedValue('mockHashedPassword'),
20
- // }));
21
-
22
- // describe('UserService', () => {
23
- // let service: UserService;
24
- // let prismaService: PrismaService;
25
- // let paginationService: PaginationService;
26
-
27
- // beforeEach(async () => {
28
- // const module: TestingModule = await Test.createTestingModule({
29
- // providers: [
30
- // UserService,
31
- // {
32
- // provide: PrismaService,
33
- // useValue: {
34
- // user: {
35
- // findUnique: jest.fn(),
36
- // create: jest.fn(),
37
- // update: jest.fn(),
38
- // deleteMany: jest.fn(),
39
- // },
40
- // role_user: {
41
- // deleteMany: jest.fn(),
42
- // createMany: jest.fn(),
43
- // },
44
- // createInsensitiveSearch: jest.fn(),
45
- // },
46
- // },
47
- // {
48
- // provide: PaginationService,
49
- // useValue: {
50
- // paginate: jest.fn(),
51
- // },
52
- // },
53
- // ],
54
- // }).compile();
55
-
56
- // service = module.get<UserService>(UserService);
57
- // prismaService = module.get<PrismaService>(PrismaService);
58
- // paginationService = module.get<PaginationService>(PaginationService);
59
- // });
60
-
61
- // it('should be defined', () => {
62
- // expect(service).toBeDefined();
63
- // });
64
-
65
- // describe('listRoles', () => {
66
- // it('should return paginated role for a specific user', async () => {
67
- // const paginationParams: PaginationDTO = {
68
- // page: 1,
69
- // pageSize: 10,
70
- // search: '',
71
- // sortField: '',
72
- // sortOrder: PageOrderDirection.Asc,
73
- // fields: '',
74
- // };
75
-
76
- // const mockPaginatedRoles = {
77
- // data: [],
78
- // total: 10,
79
- // lastPage: 1,
80
- // page: 1,
81
- // prev: 0,
82
- // next: 2,
83
- // pageSize: 10,
84
- // };
85
-
86
- // jest
87
- // .spyOn(paginationService, 'paginate')
88
- // .mockResolvedValue(mockPaginatedRoles);
89
-
90
- // const result = await service.listRoles(1, paginationParams);
91
-
92
- // expect(paginationService.paginate).toHaveBeenCalledWith(
93
- // prismaService.role,
94
- // paginationParams,
95
- // {
96
- // include: {
97
- // role_user: {
98
- // where: { user_id: 1 },
99
- // select: { user_id: true, role_id: true },
100
- // },
101
- // },
102
- // },
103
- // );
104
- // expect(result).toEqual(mockPaginatedRoles);
105
- // });
106
- // });
107
-
108
- // describe('updateRoles', () => {
109
- // it('should update user role', async () => {
110
- // const updateIdsDTO: UpdateIdsDTO = { ids: [1, 2] };
111
-
112
- // jest
113
- // .spyOn(prismaService.role_user, 'deleteMany')
114
- // .mockResolvedValue({ count: 1 });
115
- // jest
116
- // .spyOn(prismaService.role_user, 'createMany')
117
- // .mockResolvedValue({ count: 2 });
118
-
119
- // await service.updateRoles(1, updateIdsDTO);
120
-
121
- // expect(prismaService.role_user.deleteMany).toHaveBeenCalledWith({
122
- // where: { user_id: 1 },
123
- // });
124
- // expect(prismaService.role_user.createMany).toHaveBeenCalledWith({
125
- // data: [
126
- // { user_id: 1, role_id: 1 },
127
- // { user_id: 1, role_id: 2 },
128
- // ],
129
- // skipDuplicates: true,
130
- // });
131
- // });
132
- // });
133
- // /*
134
- // describe('getUsers', () => {
135
- // it('should return paginated user', async () => {
136
- // const paginationParams: PaginationDTO = {
137
- // page: 1,
138
- // pageSize: 10,
139
- // search: '',
140
- // sortField: '',
141
- // sortOrder: PageOrderDirection.Asc,
142
- // fields: '',
143
- // };
144
-
145
- // const mockPaginatedUsers = {
146
- // data: [],
147
- // total: 10,
148
- // lastPage: 1,
149
- // page: 1,
150
- // prev: 0,
151
- // next: 2,
152
- // pageSize: 10,
153
- // };
154
-
155
- // jest.spyOn(prismaService, 'createInsensitiveSearch').mockReturnValue([]);
156
- // jest
157
- // .spyOn(paginationService, 'paginate')
158
- // .mockResolvedValue(mockPaginatedUsers);
159
-
160
- // const result = await service.getUsers(paginationParams);
161
-
162
- // expect(prismaService.createInsensitiveSearch).toHaveBeenCalledWith(
163
- // ['name', 'email'],
164
- // paginationParams,
165
- // );
166
- // expect(paginationService.paginate).toHaveBeenCalledWith(
167
- // prismaService.user,
168
- // paginationParams,
169
- // { where: { OR: [] } },
170
- // );
171
- // expect(result).toEqual(mockPaginatedUsers);
172
- // });
173
- // });
174
- // */
175
- // describe('get', () => {
176
- // it('should return a specific user by ID', async () => {
177
- // const mockUser = {
178
- // id: 1,
179
- // name: 'Test User',
180
- // email: 'user@email.com',
181
- // password: 'hashedpassword',
182
- // created_at: new Date(),
183
- // updated_at: new Date(),
184
- // multifactor_id: null,
185
- // code: null,
186
- // };
187
- // jest.spyOn(prismaService.user, 'findUnique').mockResolvedValue(mockUser);
188
-
189
- // const result = await service.get(1);
190
-
191
- // expect(prismaService.user.findUnique).toHaveBeenCalledWith({
192
- // where: { id: 1 },
193
- // });
194
- // expect(result).toEqual(mockUser);
195
- // });
196
- // });
197
-
198
- // describe('hashPassword', () => {
199
- // it('should hash the password correctly', async () => {
200
- // const password = 'plainPassword';
201
- // const result = await service.hashPassword(password);
202
-
203
- // expect(genSalt).toHaveBeenCalledWith(SALT_ROUNDS);
204
- // expect(hash).toHaveBeenCalledWith(password, 'mockSalt');
205
- // expect(result).toEqual('mockHashedPassword');
206
- // });
207
- // });
208
-
209
- // describe('create', () => {
210
- // it('should create a new user with hashed password', async () => {
211
- // const createDTO: CreateDTO = {
212
- // email: 'test@test.com',
213
- // name: 'Test User',
214
- // password: 'password123',
215
- // };
216
- // const mockUser = {
217
- // id: 1,
218
- // name: 'Test User',
219
- // email: 'user@email.com',
220
- // password: 'hashedpassword',
221
- // created_at: new Date(),
222
- // updated_at: new Date(),
223
- // multifactor_id: null,
224
- // code: null,
225
- // };
226
-
227
- // jest.spyOn(prismaService.user, 'create').mockResolvedValue(mockUser);
228
-
229
- // const result = await service.create(createDTO);
230
-
231
- // expect(prismaService.user.create).toHaveBeenCalledWith({
232
- // data: {
233
- // email: createDTO.email,
234
- // name: createDTO.name,
235
- // password: 'mockHashedPassword',
236
- // },
237
- // });
238
- // expect(result).toEqual(mockUser);
239
- // });
240
- // });
241
-
242
- // describe('update', () => {
243
- // it('should update an existing user', async () => {
244
- // const updateDTO: UpdateDTO = { name: 'Updated User' };
245
- // const updateInput = { id: 1, data: updateDTO };
246
- // const mockUser = {
247
- // id: 1,
248
- // name: 'Updated User',
249
- // email: 'user@email.com',
250
- // password: 'hashedpassword',
251
- // created_at: new Date(),
252
- // updated_at: new Date(),
253
- // multifactor_id: null,
254
- // code: null,
255
- // };
256
- // jest.spyOn(prismaService.user, 'update').mockResolvedValue(mockUser);
257
-
258
- // const result = await service.update(updateInput);
259
-
260
- // expect(prismaService.user.update).toHaveBeenCalledWith({
261
- // where: { id: updateInput.id },
262
- // data: updateInput.data,
263
- // });
264
- // expect(result).toEqual(mockUser);
265
- // });
266
- // });
267
-
268
- // describe('delete', () => {
269
- // it('should throw an error if no ids are provided', async () => {
270
- // const deleteDTO: DeleteDTO = { ids: null };
271
-
272
- // await expect(service.delete(deleteDTO)).rejects.toThrow(
273
- // new BadRequestException('You must select at least one user to delete.'),
274
- // );
275
- // });
276
-
277
- // it('should delete user by ids', async () => {
278
- // const deleteDTO: DeleteDTO = { ids: [1, 2] };
279
-
280
- // jest
281
- // .spyOn(prismaService.user, 'deleteMany')
282
- // .mockResolvedValue({ count: 2 });
283
-
284
- // await service.delete(deleteDTO);
285
-
286
- // expect(prismaService.user.deleteMany).toHaveBeenCalledWith({
287
- // where: {
288
- // id: { in: deleteDTO.ids },
289
- // email: { not: { startsWith: 'root@' } },
290
- // },
291
- // });
292
- // });
293
- // });
294
- // });