@friggframework/core 2.0.0--canary.461.bb7fcba.0 → 2.0.0--canary.461.5767fa4.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 (118) hide show
  1. package/generated/prisma-mongodb/client.d.ts +1 -0
  2. package/generated/prisma-mongodb/client.js +4 -0
  3. package/generated/prisma-mongodb/default.d.ts +1 -0
  4. package/generated/prisma-mongodb/default.js +4 -0
  5. package/generated/prisma-mongodb/edge.d.ts +1 -0
  6. package/generated/prisma-mongodb/edge.js +336 -0
  7. package/generated/prisma-mongodb/index-browser.js +318 -0
  8. package/generated/prisma-mongodb/index.d.ts +22993 -0
  9. package/generated/prisma-mongodb/index.js +361 -0
  10. package/generated/prisma-mongodb/package.json +183 -0
  11. package/generated/prisma-mongodb/query-engine-debian-openssl-3.0.x +0 -0
  12. package/generated/prisma-mongodb/query-engine-rhel-openssl-3.0.x +0 -0
  13. package/generated/prisma-mongodb/runtime/binary.d.ts +1 -0
  14. package/generated/prisma-mongodb/runtime/binary.js +289 -0
  15. package/generated/prisma-mongodb/runtime/edge-esm.js +34 -0
  16. package/generated/prisma-mongodb/runtime/edge.js +34 -0
  17. package/generated/prisma-mongodb/runtime/index-browser.d.ts +370 -0
  18. package/generated/prisma-mongodb/runtime/index-browser.js +16 -0
  19. package/generated/prisma-mongodb/runtime/library.d.ts +3977 -0
  20. package/generated/prisma-mongodb/runtime/react-native.js +83 -0
  21. package/generated/prisma-mongodb/runtime/wasm-compiler-edge.js +84 -0
  22. package/generated/prisma-mongodb/runtime/wasm-engine-edge.js +36 -0
  23. package/generated/prisma-mongodb/schema.prisma +364 -0
  24. package/generated/prisma-mongodb/wasm-edge-light-loader.mjs +4 -0
  25. package/generated/prisma-mongodb/wasm-worker-loader.mjs +4 -0
  26. package/generated/prisma-mongodb/wasm.d.ts +1 -0
  27. package/generated/prisma-mongodb/wasm.js +343 -0
  28. package/generated/prisma-postgresql/client.d.ts +1 -0
  29. package/generated/prisma-postgresql/client.js +4 -0
  30. package/generated/prisma-postgresql/default.d.ts +1 -0
  31. package/generated/prisma-postgresql/default.js +4 -0
  32. package/generated/prisma-postgresql/edge.d.ts +1 -0
  33. package/generated/prisma-postgresql/edge.js +358 -0
  34. package/generated/prisma-postgresql/index-browser.js +340 -0
  35. package/generated/prisma-postgresql/index.d.ts +25171 -0
  36. package/generated/prisma-postgresql/index.js +383 -0
  37. package/generated/prisma-postgresql/package.json +183 -0
  38. package/generated/prisma-postgresql/query-engine-debian-openssl-3.0.x +0 -0
  39. package/generated/prisma-postgresql/query-engine-rhel-openssl-3.0.x +0 -0
  40. package/generated/prisma-postgresql/query_engine_bg.js +2 -0
  41. package/generated/prisma-postgresql/query_engine_bg.wasm +0 -0
  42. package/generated/prisma-postgresql/runtime/binary.d.ts +1 -0
  43. package/generated/prisma-postgresql/runtime/binary.js +289 -0
  44. package/generated/prisma-postgresql/runtime/edge-esm.js +34 -0
  45. package/generated/prisma-postgresql/runtime/edge.js +34 -0
  46. package/generated/prisma-postgresql/runtime/index-browser.d.ts +370 -0
  47. package/generated/prisma-postgresql/runtime/index-browser.js +16 -0
  48. package/generated/prisma-postgresql/runtime/library.d.ts +3977 -0
  49. package/generated/prisma-postgresql/runtime/react-native.js +83 -0
  50. package/generated/prisma-postgresql/runtime/wasm-compiler-edge.js +84 -0
  51. package/generated/prisma-postgresql/runtime/wasm-engine-edge.js +36 -0
  52. package/generated/prisma-postgresql/schema.prisma +347 -0
  53. package/generated/prisma-postgresql/wasm-edge-light-loader.mjs +4 -0
  54. package/generated/prisma-postgresql/wasm-worker-loader.mjs +4 -0
  55. package/generated/prisma-postgresql/wasm.d.ts +1 -0
  56. package/generated/prisma-postgresql/wasm.js +365 -0
  57. package/package.json +5 -5
  58. package/application/commands/integration-commands.test.js +0 -123
  59. package/core/Worker.test.js +0 -159
  60. package/database/encryption/encryption-integration.test.js +0 -553
  61. package/database/encryption/encryption-schema-registry.test.js +0 -392
  62. package/database/encryption/field-encryption-service.test.js +0 -525
  63. package/database/encryption/mongo-decryption-fix-verification.test.js +0 -348
  64. package/database/encryption/postgres-decryption-fix-verification.test.js +0 -371
  65. package/database/encryption/postgres-relation-decryption.test.js +0 -245
  66. package/database/encryption/prisma-encryption-extension.test.js +0 -439
  67. package/database/repositories/migration-status-repository-s3.test.js +0 -158
  68. package/database/use-cases/check-encryption-health-use-case.test.js +0 -192
  69. package/database/use-cases/get-migration-status-use-case.test.js +0 -171
  70. package/database/use-cases/run-database-migration-use-case.test.js +0 -310
  71. package/database/use-cases/trigger-database-migration-use-case.test.js +0 -250
  72. package/database/utils/prisma-runner.test.js +0 -486
  73. package/encrypt/Cryptor.test.js +0 -144
  74. package/errors/base-error.test.js +0 -32
  75. package/errors/fetch-error.test.js +0 -79
  76. package/errors/halt-error.test.js +0 -11
  77. package/errors/validation-errors.test.js +0 -120
  78. package/handlers/auth-flow.integration.test.js +0 -147
  79. package/handlers/integration-event-dispatcher.test.js +0 -209
  80. package/handlers/routers/db-migration.test.js +0 -51
  81. package/handlers/routers/health.test.js +0 -210
  82. package/handlers/routers/integration-webhook-routers.test.js +0 -126
  83. package/handlers/use-cases/check-integrations-health-use-case.test.js +0 -125
  84. package/handlers/webhook-flow.integration.test.js +0 -356
  85. package/handlers/workers/db-migration.test.js +0 -50
  86. package/handlers/workers/integration-defined-workers.test.js +0 -184
  87. package/integrations/tests/integration-router-multi-auth.test.js +0 -369
  88. package/integrations/tests/use-cases/create-integration.test.js +0 -131
  89. package/integrations/tests/use-cases/delete-integration-for-user.test.js +0 -150
  90. package/integrations/tests/use-cases/find-integration-context-by-external-entity-id.test.js +0 -92
  91. package/integrations/tests/use-cases/get-integration-for-user.test.js +0 -150
  92. package/integrations/tests/use-cases/get-integration-instance.test.js +0 -176
  93. package/integrations/tests/use-cases/get-integrations-for-user.test.js +0 -176
  94. package/integrations/tests/use-cases/get-possible-integrations.test.js +0 -188
  95. package/integrations/tests/use-cases/update-integration-messages.test.js +0 -142
  96. package/integrations/tests/use-cases/update-integration-status.test.js +0 -103
  97. package/integrations/tests/use-cases/update-integration.test.js +0 -141
  98. package/integrations/use-cases/create-process.test.js +0 -178
  99. package/integrations/use-cases/get-process.test.js +0 -190
  100. package/integrations/use-cases/load-integration-context-full.test.js +0 -329
  101. package/integrations/use-cases/load-integration-context.test.js +0 -114
  102. package/integrations/use-cases/update-process-metrics.test.js +0 -308
  103. package/integrations/use-cases/update-process-state.test.js +0 -256
  104. package/lambda/TimeoutCatcher.test.js +0 -68
  105. package/logs/logger.test.js +0 -76
  106. package/modules/module-hydration.test.js +0 -205
  107. package/modules/requester/requester.test.js +0 -28
  108. package/queues/queuer-util.test.js +0 -132
  109. package/user/tests/use-cases/create-individual-user.test.js +0 -24
  110. package/user/tests/use-cases/create-organization-user.test.js +0 -28
  111. package/user/tests/use-cases/create-token-for-user-id.test.js +0 -19
  112. package/user/tests/use-cases/get-user-from-adopter-jwt.test.js +0 -113
  113. package/user/tests/use-cases/get-user-from-bearer-token.test.js +0 -64
  114. package/user/tests/use-cases/get-user-from-x-frigg-headers.test.js +0 -346
  115. package/user/tests/use-cases/login-user.test.js +0 -220
  116. package/user/tests/user-password-encryption-isolation.test.js +0 -237
  117. package/user/tests/user-password-hashing.test.js +0 -235
  118. package/websocket/repositories/websocket-connection-repository.test.js +0 -227
@@ -1,348 +0,0 @@
1
- /**
2
- * Verification Test: Repository Fix for MongoDB Decryption Bug
3
- *
4
- * This test verifies that the fix in ModuleRepositoryMongo successfully
5
- * decrypts credentials when fetching entities (after removing `include`).
6
- *
7
- * Expected Behavior After Fix:
8
- * - All repository methods should return decrypted credentials
9
- * - No encrypted tokens should leak through to the application layer
10
- */
11
-
12
- process.env.DB_TYPE = 'mongodb';
13
- process.env.DATABASE_URL = process.env.DATABASE_URL || 'mongodb://localhost:27017/frigg?replicaSet=rs0';
14
- process.env.STAGE = 'integration-test';
15
- process.env.AES_KEY_ID = 'test-key-id';
16
- process.env.AES_KEY = 'test-aes-key-32-characters-long!';
17
-
18
- jest.mock('../config', () => ({
19
- DB_TYPE: 'mongodb',
20
- getDatabaseType: jest.fn(() => 'mongodb'),
21
- PRISMA_LOG_LEVEL: 'error,warn',
22
- PRISMA_QUERY_LOGGING: false,
23
- }));
24
-
25
- const { prisma, connectPrisma, disconnectPrisma } = require('../prisma');
26
- const { ModuleRepositoryMongo } = require('../../modules/repositories/module-repository-mongo');
27
-
28
- describe('Repository Fix Verification - MongoDB Decryption', () => {
29
- let repository;
30
- let testCredentialId;
31
- let testEntityId;
32
- let testUserId;
33
- const TEST_TOKEN = 'my-secret-access-token-12345';
34
- const TEST_REFRESH_TOKEN = 'my-secret-refresh-token-67890';
35
- const TEST_DOMAIN = 'example-test.com';
36
-
37
- beforeAll(async () => {
38
- await connectPrisma();
39
- repository = new ModuleRepositoryMongo();
40
- });
41
-
42
- afterAll(async () => {
43
- if (testEntityId) {
44
- await prisma.entity.deleteMany({
45
- where: { id: testEntityId }
46
- }).catch(() => {});
47
- }
48
- if (testCredentialId) {
49
- await prisma.credential.deleteMany({
50
- where: { id: testCredentialId }
51
- }).catch(() => {});
52
- }
53
- if (testUserId) {
54
- await prisma.user.deleteMany({
55
- where: { id: testUserId }
56
- }).catch(() => {});
57
- }
58
-
59
- await disconnectPrisma();
60
- });
61
-
62
- afterEach(async () => {
63
- if (testEntityId) {
64
- await prisma.entity.deleteMany({
65
- where: { id: testEntityId }
66
- }).catch(() => {});
67
- testEntityId = null;
68
- }
69
- if (testCredentialId) {
70
- await prisma.credential.deleteMany({
71
- where: { id: testCredentialId }
72
- }).catch(() => {});
73
- testCredentialId = null;
74
- }
75
- if (testUserId) {
76
- await prisma.user.deleteMany({
77
- where: { id: testUserId }
78
- }).catch(() => {});
79
- testUserId = null;
80
- }
81
- });
82
-
83
- test('✅ FIX VERIFICATION: findEntityById returns decrypted credential', async () => {
84
- const user = await prisma.user.create({
85
- data: {
86
- type: 'INDIVIDUAL',
87
- hashword: 'test-hash'
88
- }
89
- });
90
- testUserId = user.id;
91
-
92
- const credential = await prisma.credential.create({
93
- data: {
94
- userId: testUserId,
95
- externalId: 'test-cred-findEntityById',
96
- data: {
97
- access_token: TEST_TOKEN,
98
- refresh_token: TEST_REFRESH_TOKEN,
99
- domain: TEST_DOMAIN,
100
- },
101
- },
102
- });
103
- testCredentialId = credential.id;
104
-
105
- const entity = await prisma.entity.create({
106
- data: {
107
- userId: testUserId,
108
- credentialId: testCredentialId,
109
- moduleName: 'test-module',
110
- externalId: 'test-entity-findById',
111
- },
112
- });
113
- testEntityId = entity.id;
114
-
115
- const result = await repository.findEntityById(testEntityId);
116
-
117
- expect(result).toBeDefined();
118
- expect(result.credential).toBeDefined();
119
- expect(result.credential.data.access_token).toBe(TEST_TOKEN);
120
- expect(result.credential.data.refresh_token).toBe(TEST_REFRESH_TOKEN);
121
- expect(result.credential.data.domain).toBe(TEST_DOMAIN);
122
-
123
- expect(result.credential.data.access_token).not.toContain(':');
124
-
125
- console.log('✅ findEntityById: Credential successfully decrypted!');
126
- });
127
-
128
- test('✅ FIX VERIFICATION: findEntitiesByUserId returns decrypted credentials', async () => {
129
- const user = await prisma.user.create({
130
- data: {
131
- type: 'INDIVIDUAL',
132
- hashword: 'test-hash'
133
- }
134
- });
135
- testUserId = user.id;
136
-
137
- const credential = await prisma.credential.create({
138
- data: {
139
- userId: testUserId,
140
- externalId: 'test-cred-findByUserId',
141
- data: {
142
- access_token: TEST_TOKEN,
143
- domain: TEST_DOMAIN,
144
- },
145
- },
146
- });
147
- testCredentialId = credential.id;
148
-
149
- const entity = await prisma.entity.create({
150
- data: {
151
- userId: testUserId,
152
- credentialId: testCredentialId,
153
- moduleName: 'test-module',
154
- externalId: 'test-entity-findByUserId',
155
- },
156
- });
157
- testEntityId = entity.id;
158
-
159
- const results = await repository.findEntitiesByUserId(testUserId);
160
-
161
- expect(results).toBeDefined();
162
- expect(results.length).toBeGreaterThan(0);
163
- const firstEntity = results[0];
164
- expect(firstEntity.credential).toBeDefined();
165
- expect(firstEntity.credential.data.access_token).toBe(TEST_TOKEN);
166
- expect(firstEntity.credential.data.access_token).not.toContain(':');
167
-
168
- console.log('✅ findEntitiesByUserId: Credentials successfully decrypted!');
169
- });
170
-
171
- test('✅ FIX VERIFICATION: findEntitiesByIds returns decrypted credentials', async () => {
172
- const user = await prisma.user.create({
173
- data: {
174
- type: 'INDIVIDUAL',
175
- hashword: 'test-hash'
176
- }
177
- });
178
- testUserId = user.id;
179
-
180
- const credential = await prisma.credential.create({
181
- data: {
182
- userId: testUserId,
183
- externalId: 'test-cred-findByIds',
184
- data: {
185
- access_token: TEST_TOKEN,
186
- domain: TEST_DOMAIN,
187
- },
188
- },
189
- });
190
- testCredentialId = credential.id;
191
-
192
- const entity = await prisma.entity.create({
193
- data: {
194
- userId: testUserId,
195
- credentialId: testCredentialId,
196
- moduleName: 'test-module',
197
- externalId: 'test-entity-findByIds',
198
- },
199
- });
200
- testEntityId = entity.id;
201
-
202
- const results = await repository.findEntitiesByIds([testEntityId]);
203
-
204
- expect(results).toBeDefined();
205
- expect(results.length).toBe(1);
206
- expect(results[0].credential).toBeDefined();
207
- expect(results[0].credential.data.access_token).toBe(TEST_TOKEN);
208
- expect(results[0].credential.data.access_token).not.toContain(':');
209
-
210
- console.log('✅ findEntitiesByIds: Credentials successfully decrypted!');
211
- });
212
-
213
- test('✅ FIX VERIFICATION: createEntity returns decrypted credential', async () => {
214
- const user = await prisma.user.create({
215
- data: {
216
- type: 'INDIVIDUAL',
217
- hashword: 'test-hash'
218
- }
219
- });
220
- testUserId = user.id;
221
-
222
- const credential = await prisma.credential.create({
223
- data: {
224
- userId: testUserId,
225
- externalId: 'test-cred-create',
226
- data: {
227
- access_token: TEST_TOKEN,
228
- domain: TEST_DOMAIN,
229
- },
230
- },
231
- });
232
- testCredentialId = credential.id;
233
-
234
- const entity = await repository.createEntity({
235
- userId: testUserId,
236
- credentialId: testCredentialId,
237
- moduleName: 'test-module',
238
- externalId: 'test-entity-create',
239
- });
240
-
241
- testEntityId = entity.id;
242
-
243
- expect(entity).toBeDefined();
244
- expect(entity.credential).toBeDefined();
245
- expect(entity.credential.data.access_token).toBe(TEST_TOKEN);
246
- expect(entity.credential.data.access_token).not.toContain(':');
247
-
248
- console.log('✅ createEntity: Credential successfully decrypted!');
249
- });
250
-
251
- test('✅ FIX VERIFICATION: updateEntity returns decrypted credential', async () => {
252
- const user = await prisma.user.create({
253
- data: {
254
- type: 'INDIVIDUAL',
255
- hashword: 'test-hash'
256
- }
257
- });
258
- testUserId = user.id;
259
-
260
- const credential = await prisma.credential.create({
261
- data: {
262
- userId: testUserId,
263
- externalId: 'test-cred-update',
264
- data: {
265
- access_token: TEST_TOKEN,
266
- domain: TEST_DOMAIN,
267
- },
268
- },
269
- });
270
- testCredentialId = credential.id;
271
-
272
- const entity = await prisma.entity.create({
273
- data: {
274
- userId: testUserId,
275
- credentialId: testCredentialId,
276
- moduleName: 'test-module',
277
- externalId: 'test-entity-update',
278
- },
279
- });
280
- testEntityId = entity.id;
281
-
282
- const updated = await repository.updateEntity(testEntityId, {
283
- name: 'Updated Name',
284
- });
285
-
286
- expect(updated).toBeDefined();
287
- expect(updated.name).toBe('Updated Name');
288
- expect(updated.credential).toBeDefined();
289
- expect(updated.credential.data.access_token).toBe(TEST_TOKEN);
290
- expect(updated.credential.data.access_token).not.toContain(':');
291
-
292
- console.log('✅ updateEntity: Credential successfully decrypted!');
293
- });
294
-
295
- test('📊 COMPARISON: Verify tokens are encrypted in database but decrypted in repository', async () => {
296
- const user = await prisma.user.create({
297
- data: {
298
- type: 'INDIVIDUAL',
299
- hashword: 'test-hash'
300
- }
301
- });
302
- testUserId = user.id;
303
-
304
- const credential = await prisma.credential.create({
305
- data: {
306
- userId: testUserId,
307
- externalId: 'test-cred-comparison',
308
- data: {
309
- access_token: TEST_TOKEN,
310
- domain: TEST_DOMAIN,
311
- },
312
- },
313
- });
314
- testCredentialId = credential.id;
315
-
316
- const entity = await prisma.entity.create({
317
- data: {
318
- userId: testUserId,
319
- credentialId: testCredentialId,
320
- moduleName: 'test-module',
321
- externalId: 'test-entity-comparison',
322
- },
323
- });
324
- testEntityId = entity.id;
325
-
326
- const rawCred = await prisma.$runCommandRaw({
327
- find: 'Credential',
328
- filter: { _id: { $oid: testCredentialId } }
329
- });
330
- const rawDoc = rawCred.cursor.firstBatch[0];
331
- const rawToken = rawDoc.data.access_token;
332
-
333
- const repoEntity = await repository.findEntityById(testEntityId);
334
- const repoToken = repoEntity.credential.data.access_token;
335
-
336
- console.log('\n📊 COMPARISON RESULTS:');
337
- console.log('Raw DB token (encrypted):', rawToken.substring(0, 50) + '...');
338
- console.log('Repository token (decrypted):', repoToken);
339
-
340
- expect(rawToken).toContain(':');
341
- expect(rawToken.split(':')).toHaveLength(4);
342
-
343
- expect(repoToken).toBe(TEST_TOKEN);
344
- expect(repoToken).not.toContain(':');
345
-
346
- console.log('✅ Database stores encrypted, repository returns decrypted - FIX WORKS!');
347
- });
348
- });