@sphereon/ssi-sdk.data-store 0.30.2-next.103 → 0.30.2-next.129

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 (41) hide show
  1. package/dist/digitalCredential/DigitalCredentialStore.d.ts.map +1 -1
  2. package/dist/digitalCredential/DigitalCredentialStore.js +1 -3
  3. package/dist/digitalCredential/DigitalCredentialStore.js.map +1 -1
  4. package/dist/entities/eventLogger/AuditEventEntity.d.ts +10 -3
  5. package/dist/entities/eventLogger/AuditEventEntity.d.ts.map +1 -1
  6. package/dist/entities/eventLogger/AuditEventEntity.js +57 -1
  7. package/dist/entities/eventLogger/AuditEventEntity.js.map +1 -1
  8. package/dist/eventLogger/AbstractEventLoggerStore.d.ts +4 -2
  9. package/dist/eventLogger/AbstractEventLoggerStore.d.ts.map +1 -1
  10. package/dist/eventLogger/AbstractEventLoggerStore.js.map +1 -1
  11. package/dist/eventLogger/EventLoggerStore.d.ts +5 -3
  12. package/dist/eventLogger/EventLoggerStore.d.ts.map +1 -1
  13. package/dist/eventLogger/EventLoggerStore.js +31 -2
  14. package/dist/eventLogger/EventLoggerStore.js.map +1 -1
  15. package/dist/migrations/postgres/1701634812183-CreateAuditEvents.d.ts.map +1 -1
  16. package/dist/migrations/postgres/1701634812183-CreateAuditEvents.js +34 -6
  17. package/dist/migrations/postgres/1701634812183-CreateAuditEvents.js.map +1 -1
  18. package/dist/migrations/sqlite/1701634819487-CreateAuditEvents.d.ts.map +1 -1
  19. package/dist/migrations/sqlite/1701634819487-CreateAuditEvents.js +27 -1
  20. package/dist/migrations/sqlite/1701634819487-CreateAuditEvents.js.map +1 -1
  21. package/dist/types/eventLogger/IAbstractEventLoggerStore.d.ts +9 -2
  22. package/dist/types/eventLogger/IAbstractEventLoggerStore.d.ts.map +1 -1
  23. package/dist/types/eventLogger/eventLogger.d.ts +3 -2
  24. package/dist/types/eventLogger/eventLogger.d.ts.map +1 -1
  25. package/dist/utils/eventLogger/MappingUtils.d.ts +2 -1
  26. package/dist/utils/eventLogger/MappingUtils.d.ts.map +1 -1
  27. package/dist/utils/eventLogger/MappingUtils.js +8 -2
  28. package/dist/utils/eventLogger/MappingUtils.js.map +1 -1
  29. package/package.json +5 -5
  30. package/src/__tests__/digitalCredential.store.test.ts +83 -4
  31. package/src/__tests__/eventLogger.entities.test.ts +60 -5
  32. package/src/__tests__/eventLogger.store.test.ts +480 -3
  33. package/src/digitalCredential/DigitalCredentialStore.ts +1 -3
  34. package/src/entities/eventLogger/AuditEventEntity.ts +54 -3
  35. package/src/eventLogger/AbstractEventLoggerStore.ts +9 -2
  36. package/src/eventLogger/EventLoggerStore.ts +55 -11
  37. package/src/migrations/postgres/1701634812183-CreateAuditEvents.ts +34 -6
  38. package/src/migrations/sqlite/1701634819487-CreateAuditEvents.ts +27 -1
  39. package/src/types/eventLogger/IAbstractEventLoggerStore.ts +12 -2
  40. package/src/types/eventLogger/eventLogger.ts +3 -2
  41. package/src/utils/eventLogger/MappingUtils.ts +34 -1
@@ -1,18 +1,20 @@
1
1
  import { DataSources } from '@sphereon/ssi-sdk.agent-config'
2
+ import { IVerifiablePresentation } from '@sphereon/ssi-types'
3
+ import { createHash } from 'crypto'
2
4
  import { DataSource } from 'typeorm'
3
5
  import { DataStoreDigitalCredentialMigrations } from '../migrations'
4
6
  import { CredentialRole, DataStoreDigitalCredentialEntities } from '../index'
5
7
  import { DigitalCredentialStore } from '../digitalCredential/DigitalCredentialStore'
6
8
  import {
9
+ AddCredentialArgs,
7
10
  CredentialCorrelationType,
8
11
  CredentialDocumentFormat,
9
12
  CredentialStateType,
10
13
  DocumentType,
11
14
  DigitalCredential,
12
- } from '../types/digitalCredential/digitalCredential'
13
- import { AddCredentialArgs, GetCredentialsArgs, GetCredentialsResponse } from '../types/digitalCredential/IAbstractDigitalCredentialStore'
14
- import { IVerifiablePresentation } from '@sphereon/ssi-types'
15
- import { createHash } from 'crypto'
15
+ GetCredentialsArgs,
16
+ GetCredentialsResponse,
17
+ } from '../types'
16
18
 
17
19
  describe('Database entities tests', (): void => {
18
20
  let dbConnection: DataSource
@@ -247,6 +249,83 @@ describe('Database entities tests', (): void => {
247
249
  expect(result).toEqual(true)
248
250
  })
249
251
 
252
+ it('should delete stored digital credential and children', async (): Promise<void> => {
253
+ const digitalCredentialParent: AddCredentialArgs = {
254
+ rawDocument:
255
+ 'eyJraWQiOiJkaWQ6a2V5Ono2TWtyaGt5M3B1c20yNk1laUZhWFUzbjJuZWtyYW13RlVtZ0dyZUdHa0RWNnpRaiN6Nk1rcmhreTNwdXNtMjZNZWlGYVhVM24ybmVrcmFtd0ZVbWdHcmVHR2tEVjZ6UWoiLCJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vc3BoZXJlb24tb3BlbnNvdXJjZS5naXRodWIuaW8vc3NpLW1vYmlsZS13YWxsZXQvY29udGV4dC9zcGhlcmVvbi13YWxsZXQtaWRlbnRpdHktdjEuanNvbmxkIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJTcGhlcmVvbldhbGxldElkZW50aXR5Q3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJmaXJzdE5hbWUiOiJTIiwibGFzdE5hbWUiOiJLIiwiZW1haWxBZGRyZXNzIjoic0BrIn19LCJzdWIiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJqdGkiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJuYmYiOjE3MDg0NDA4MDgsImlzcyI6ImRpZDprZXk6ejZNa3Joa3kzcHVzbTI2TWVpRmFYVTNuMm5la3JhbXdGVW1nR3JlR0drRFY2elFqIn0.G0M84XVAxSmzGY-NQuB9NBofNrINSn6lvxW6761Vlq6ypvYgtc2xNdpiRmw8ryVNfnpzrr4Z5cB1RlrC05rJAw',
256
+ kmsKeyRef: 'testRef',
257
+ identifierMethod: 'did',
258
+ issuerCorrelationType: CredentialCorrelationType.DID,
259
+ subjectCorrelationType: CredentialCorrelationType.DID,
260
+ issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
261
+ subjectCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
262
+ credentialRole: CredentialRole.VERIFIER,
263
+ tenantId: 'urn:uuid:nnag4b43-1e7a-98f8-a32c-a48dbc5b10mj'
264
+ }
265
+ const parentCredential: DigitalCredential = await digitalCredentialStore.addCredential(digitalCredentialParent)
266
+ expect(parentCredential).toBeDefined()
267
+
268
+ const digitalCredentialChild: AddCredentialArgs = {
269
+ rawDocument:
270
+ 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksiLCJraWQiOiJkaWQ6dmVsb2NpdHk6djI6MHhjMTY3MTUxNmMyMTQ1ZDcwYjM0MGY1NjBhYjFjYjU4Y2M0ZDhhMDUyOjE2Mzc4MjY4NTEwMzM4MToxOTg2I2tleS0xIn0.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSJdLCJ0eXBlIjpbIk9wZW5CYWRnZUNyZWRlbnRpYWwiLCJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIlZlcmlmaWFibGVDcmVkZW50aWFsIl0sImlkIjoiZGlkOnZlbG9jaXR5OnYyOjB4YzE2NzE1MTZjMjE0NWQ3MGIzNDBmNTYwYWIxY2I1OGNjNGQ4YTA1MjoxNjM3ODI2ODUxMDMzODE6MTk4NiIsImNyZWRlbnRpYWxTdGF0dXMiOnsidHlwZSI6IlZlbG9jaXR5UmV2b2NhdGlvbkxpc3RKYW4yMDIxIiwiaWQiOiJldGhlcmV1bToweDFDMjk0NjFDNzQ4MGQxZDg1NzBkZjdjMEE0RjMxNEQwYkU4Y0Q1QmYvZ2V0UmV2b2tlZFN0YXR1cz9hZGRyZXNzPTB4YzE2NzE1MTZDMjE0NUQ3MEIzNDBGNTYwQUIxQ0I1OENjNEQ4YTA1MiZsaXN0SWQ9NTI5NDcyODgxNzIzMTQmaW5kZXg9NTYyNCJ9LCJsaW5rQ29kZUNvbW1pdG1lbnQiOnsidHlwZSI6IlZlbG9jaXR5Q3JlZGVudGlhbExpbmtDb2RlQ29tbWl0bWVudDIwMjIiLCJ2YWx1ZSI6IkVpQ3dJQmRUcmE4MVkyMjEzSVNJSXo0UDh5ejNvNDlXMStYczRmczVIc1BvMXc9PSJ9LCJpc3N1ZXIiOnsiaWQiOiJkaWQ6aW9uOkVpQmFLaWRocEhma2ZzZWpaT1UxY09YVnlhdnE4WUtfaFJfTGgwX1dCNTVQX0EifSwiY29udGVudEhhc2giOnsidHlwZSI6IlZlbG9jaXR5Q29udGVudEhhc2gyMDIwIiwidmFsdWUiOiJkNWUzMGI5Y2FlNDljYjM5MjRjZjVhZjIwMDUwOTE4ZWZjZDQ4ZTk2MzAzZTZhMDQ4NmQzZmE0ODk4NjQ1NDFlIn0sImNyZWRlbnRpYWxTY2hlbWEiOnsiaWQiOiJodHRwczovL3N0YWdpbmdyZWdpc3RyYXIudmVsb2NpdHluZXR3b3JrLmZvdW5kYXRpb24vc2NoZW1hcy9vcGVuLWJhZGdlLWNyZWRlbnRpYWwuc2NoZW1hLmpzb24iLCJ0eXBlIjoiSnNvblNjaGVtYVZhbGlkYXRvcjIwMTgifSwiY29uc2VudGVkQXQiOiIyMDIyLTExLTA3VDIxOjI0OjQ3LjcwM1oiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJpZCI6ImRpZDpqd2s6ZXlKamNuWWlPaUp6WldOd01qVTJhekVpTENKcmRIa2lPaUpGUXlJc0luVnpaU0k2SW5OcFp5SXNJbmdpT2lKRFdVdEdjbmxOVWpOc2RubHpiemQ0UjBKeVN6QnJRMkZZYUdwSGFXdFdMV3MxT0dGSE1GSTBTWGh6SWl3aWVTSTZJakV0TkhoTFowcFBkRlZyYjNablJqVnFjVWMxTm1KeGFtbG5UMEpUTVdGT09FZEJOMUV5YURsUlJtc2lmUSJ9LCJpc3N1YW5jZURhdGUiOiIyMDIyLTExLTA3VDIxOjI5OjI5LjIzNVoifSwibmJmIjoxNjY3ODU2NTY5LCJqdGkiOiJkaWQ6dmVsb2NpdHk6djI6MHhjMTY3MTUxNmMyMTQ1ZDcwYjM0MGY1NjBhYjFjYjU4Y2M0ZDhhMDUyOjE2Mzc4MjY4NTEwMzM4MToxOTg2IiwiaXNzIjoiZGlkOmlvbjpFaUJhS2lkaHBIZmtmc2VqWk9VMWNPWFZ5YXZxOFlLX2hSX0xoMF9XQjU1UF9BIiwic3ViIjoiZGlkOmp3azpleUpqY25ZaU9pSnpaV053TWpVMmF6RWlMQ0pyZEhraU9pSkZReUlzSW5WelpTSTZJbk5wWnlJc0luZ2lPaUpEV1V0R2NubE5Vak5zZG5semJ6ZDRSMEp5U3pCclEyRllhR3BIYVd0V0xXczFPR0ZITUZJMFNYaHpJaXdpZVNJNklqRXROSGhMWjBwUGRGVnJiM1puUmpWcWNVYzFObUp4YW1sblQwSlRNV0ZPT0VkQk4xRXlhRGxSUm1zaWZRIiwiaWF0IjoxNjY3ODU2NTY5fQ.-SiM5d7UrYn1gdj2hU5T5LnLQzhIklOtoexbyebLMeha0K89vkujsbFN4HNFP2TSfRYFt0-jXwDaZ8RNKESwFA',
271
+ parentId: parentCredential.id,
272
+ kmsKeyRef: 'testRef',
273
+ identifierMethod: 'did',
274
+ issuerCorrelationType: CredentialCorrelationType.DID,
275
+ subjectCorrelationType: CredentialCorrelationType.DID,
276
+ issuerCorrelationId: 'did:key:z1Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
277
+ subjectCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
278
+ credentialRole: CredentialRole.VERIFIER,
279
+ tenantId: 'urn:uuid:nnag4b43-1e7a-98f8-a32c-a48dbc5b10mj'
280
+ }
281
+ const childCredential: DigitalCredential = await digitalCredentialStore.addCredential(digitalCredentialChild)
282
+ expect(childCredential).toBeDefined()
283
+
284
+ let deleteResult: boolean = await digitalCredentialStore.removeCredential({ id: parentCredential.id })
285
+ expect(deleteResult).toEqual(true)
286
+
287
+ await expect(digitalCredentialStore.getCredential({ id: childCredential.id })).rejects.toThrow(`No credential found for arg: ${JSON.stringify({ id: childCredential.id })}`)
288
+ })
289
+
290
+ it('should not delete stored parent digital credential if a child gets deleted', async (): Promise<void> => {
291
+ const digitalCredentialParent: AddCredentialArgs = {
292
+ rawDocument:
293
+ 'eyJraWQiOiJkaWQ6a2V5Ono2TWtyaGt5M3B1c20yNk1laUZhWFUzbjJuZWtyYW13RlVtZ0dyZUdHa0RWNnpRaiN6Nk1rcmhreTNwdXNtMjZNZWlGYVhVM24ybmVrcmFtd0ZVbWdHcmVHR2tEVjZ6UWoiLCJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vc3BoZXJlb24tb3BlbnNvdXJjZS5naXRodWIuaW8vc3NpLW1vYmlsZS13YWxsZXQvY29udGV4dC9zcGhlcmVvbi13YWxsZXQtaWRlbnRpdHktdjEuanNvbmxkIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJTcGhlcmVvbldhbGxldElkZW50aXR5Q3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJmaXJzdE5hbWUiOiJTIiwibGFzdE5hbWUiOiJLIiwiZW1haWxBZGRyZXNzIjoic0BrIn19LCJzdWIiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJqdGkiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJuYmYiOjE3MDg0NDA4MDgsImlzcyI6ImRpZDprZXk6ejZNa3Joa3kzcHVzbTI2TWVpRmFYVTNuMm5la3JhbXdGVW1nR3JlR0drRFY2elFqIn0.G0M84XVAxSmzGY-NQuB9NBofNrINSn6lvxW6761Vlq6ypvYgtc2xNdpiRmw8ryVNfnpzrr4Z5cB1RlrC05rJAw',
294
+ kmsKeyRef: 'testRef',
295
+ identifierMethod: 'did',
296
+ issuerCorrelationType: CredentialCorrelationType.DID,
297
+ subjectCorrelationType: CredentialCorrelationType.DID,
298
+ issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
299
+ subjectCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
300
+ credentialRole: CredentialRole.VERIFIER,
301
+ tenantId: 'urn:uuid:nnag4b43-1e7a-98f8-a32c-a48dbc5b10mj',
302
+ }
303
+ const parentCredential: DigitalCredential = await digitalCredentialStore.addCredential(digitalCredentialParent)
304
+ expect(parentCredential).toBeDefined()
305
+
306
+ const digitalCredentialChild: AddCredentialArgs = {
307
+ rawDocument:
308
+ 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksiLCJraWQiOiJkaWQ6dmVsb2NpdHk6djI6MHhjMTY3MTUxNmMyMTQ1ZDcwYjM0MGY1NjBhYjFjYjU4Y2M0ZDhhMDUyOjE2Mzc4MjY4NTEwMzM4MToxOTg2I2tleS0xIn0.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSJdLCJ0eXBlIjpbIk9wZW5CYWRnZUNyZWRlbnRpYWwiLCJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIlZlcmlmaWFibGVDcmVkZW50aWFsIl0sImlkIjoiZGlkOnZlbG9jaXR5OnYyOjB4YzE2NzE1MTZjMjE0NWQ3MGIzNDBmNTYwYWIxY2I1OGNjNGQ4YTA1MjoxNjM3ODI2ODUxMDMzODE6MTk4NiIsImNyZWRlbnRpYWxTdGF0dXMiOnsidHlwZSI6IlZlbG9jaXR5UmV2b2NhdGlvbkxpc3RKYW4yMDIxIiwiaWQiOiJldGhlcmV1bToweDFDMjk0NjFDNzQ4MGQxZDg1NzBkZjdjMEE0RjMxNEQwYkU4Y0Q1QmYvZ2V0UmV2b2tlZFN0YXR1cz9hZGRyZXNzPTB4YzE2NzE1MTZDMjE0NUQ3MEIzNDBGNTYwQUIxQ0I1OENjNEQ4YTA1MiZsaXN0SWQ9NTI5NDcyODgxNzIzMTQmaW5kZXg9NTYyNCJ9LCJsaW5rQ29kZUNvbW1pdG1lbnQiOnsidHlwZSI6IlZlbG9jaXR5Q3JlZGVudGlhbExpbmtDb2RlQ29tbWl0bWVudDIwMjIiLCJ2YWx1ZSI6IkVpQ3dJQmRUcmE4MVkyMjEzSVNJSXo0UDh5ejNvNDlXMStYczRmczVIc1BvMXc9PSJ9LCJpc3N1ZXIiOnsiaWQiOiJkaWQ6aW9uOkVpQmFLaWRocEhma2ZzZWpaT1UxY09YVnlhdnE4WUtfaFJfTGgwX1dCNTVQX0EifSwiY29udGVudEhhc2giOnsidHlwZSI6IlZlbG9jaXR5Q29udGVudEhhc2gyMDIwIiwidmFsdWUiOiJkNWUzMGI5Y2FlNDljYjM5MjRjZjVhZjIwMDUwOTE4ZWZjZDQ4ZTk2MzAzZTZhMDQ4NmQzZmE0ODk4NjQ1NDFlIn0sImNyZWRlbnRpYWxTY2hlbWEiOnsiaWQiOiJodHRwczovL3N0YWdpbmdyZWdpc3RyYXIudmVsb2NpdHluZXR3b3JrLmZvdW5kYXRpb24vc2NoZW1hcy9vcGVuLWJhZGdlLWNyZWRlbnRpYWwuc2NoZW1hLmpzb24iLCJ0eXBlIjoiSnNvblNjaGVtYVZhbGlkYXRvcjIwMTgifSwiY29uc2VudGVkQXQiOiIyMDIyLTExLTA3VDIxOjI0OjQ3LjcwM1oiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJpZCI6ImRpZDpqd2s6ZXlKamNuWWlPaUp6WldOd01qVTJhekVpTENKcmRIa2lPaUpGUXlJc0luVnpaU0k2SW5OcFp5SXNJbmdpT2lKRFdVdEdjbmxOVWpOc2RubHpiemQ0UjBKeVN6QnJRMkZZYUdwSGFXdFdMV3MxT0dGSE1GSTBTWGh6SWl3aWVTSTZJakV0TkhoTFowcFBkRlZyYjNablJqVnFjVWMxTm1KeGFtbG5UMEpUTVdGT09FZEJOMUV5YURsUlJtc2lmUSJ9LCJpc3N1YW5jZURhdGUiOiIyMDIyLTExLTA3VDIxOjI5OjI5LjIzNVoifSwibmJmIjoxNjY3ODU2NTY5LCJqdGkiOiJkaWQ6dmVsb2NpdHk6djI6MHhjMTY3MTUxNmMyMTQ1ZDcwYjM0MGY1NjBhYjFjYjU4Y2M0ZDhhMDUyOjE2Mzc4MjY4NTEwMzM4MToxOTg2IiwiaXNzIjoiZGlkOmlvbjpFaUJhS2lkaHBIZmtmc2VqWk9VMWNPWFZ5YXZxOFlLX2hSX0xoMF9XQjU1UF9BIiwic3ViIjoiZGlkOmp3azpleUpqY25ZaU9pSnpaV053TWpVMmF6RWlMQ0pyZEhraU9pSkZReUlzSW5WelpTSTZJbk5wWnlJc0luZ2lPaUpEV1V0R2NubE5Vak5zZG5semJ6ZDRSMEp5U3pCclEyRllhR3BIYVd0V0xXczFPR0ZITUZJMFNYaHpJaXdpZVNJNklqRXROSGhMWjBwUGRGVnJiM1puUmpWcWNVYzFObUp4YW1sblQwSlRNV0ZPT0VkQk4xRXlhRGxSUm1zaWZRIiwiaWF0IjoxNjY3ODU2NTY5fQ.-SiM5d7UrYn1gdj2hU5T5LnLQzhIklOtoexbyebLMeha0K89vkujsbFN4HNFP2TSfRYFt0-jXwDaZ8RNKESwFA',
309
+ parentId: parentCredential.id,
310
+ kmsKeyRef: 'testRef',
311
+ identifierMethod: 'did',
312
+ issuerCorrelationType: CredentialCorrelationType.DID,
313
+ subjectCorrelationType: CredentialCorrelationType.DID,
314
+ issuerCorrelationId: 'did:key:z1Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
315
+ subjectCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
316
+ credentialRole: CredentialRole.VERIFIER,
317
+ tenantId: 'urn:uuid:nnag4b43-1e7a-98f8-a32c-a48dbc5b10mj',
318
+ }
319
+ const childCredential: DigitalCredential = await digitalCredentialStore.addCredential(digitalCredentialChild)
320
+ expect(childCredential).toBeDefined()
321
+
322
+ let deleteResult: boolean = await digitalCredentialStore.removeCredential({ id: childCredential.id })
323
+ expect(deleteResult).toEqual(true)
324
+
325
+ const fetchedCredential: DigitalCredential = await digitalCredentialStore.getCredential({ id: parentCredential.id })
326
+ expect(fetchedCredential).toBeDefined()
327
+ })
328
+
250
329
  it('should not delete stored digital credential if id not found', async (): Promise<void> => {
251
330
  const result = await digitalCredentialStore.removeCredential({ id: 'unknown_id' })
252
331
  expect(result).toEqual(false)
@@ -1,11 +1,15 @@
1
1
  import { DataSources } from '@sphereon/ssi-sdk.agent-config'
2
- import { PartyCorrelationType } from '@sphereon/ssi-sdk.core'
3
- import { ActionType, InitiatorType, LogLevel, SubSystem, System, SystemCorrelationIdType } from '@sphereon/ssi-types'
2
+ import { CredentialType, PartyCorrelationType } from '@sphereon/ssi-sdk.core'
3
+ import { ActionType, InitiatorType, LoggingEventType, LogLevel, SubSystem, System, SystemCorrelationIdType } from '@sphereon/ssi-types'
4
4
  import { DataSource } from 'typeorm'
5
5
  import { DataStoreEventLoggerEntities } from '../index'
6
- import { DataStoreEventLoggerMigrations } from '../migrations/generic'
7
- import { auditEventEntityFrom, AuditEventEntity } from '../entities/eventLogger/AuditEventEntity'
8
- import { NonPersistedAuditLoggingEvent } from '../types'
6
+ import { DataStoreEventLoggerMigrations } from '../migrations'
7
+ import {
8
+ activityEventEntityFrom,
9
+ auditEventEntityFrom,
10
+ AuditEventEntity
11
+ } from '../entities/eventLogger/AuditEventEntity'
12
+ import { NonPersistedAuditLoggingEvent, NonPersistedActivityLoggingEvent } from '../types'
9
13
 
10
14
  describe('Database entities tests', (): void => {
11
15
  let dbConnection: DataSource
@@ -55,6 +59,57 @@ describe('Database entities tests', (): void => {
55
59
 
56
60
  expect(fromDb).toBeDefined()
57
61
  expect(fromDb?.id).not.toBeNull()
62
+ expect(fromDb?.type).toEqual(LoggingEventType.AUDIT)
63
+ expect(fromDb?.timestamp).toEqual(auditEvent.timestamp)
64
+ expect(fromDb?.level).toEqual(auditEvent.level)
65
+ expect(fromDb?.correlationId).toEqual(auditEvent.correlationId)
66
+ expect(fromDb?.system).toEqual(auditEvent.system)
67
+ expect(fromDb?.subSystemType).toEqual(auditEvent.subSystemType)
68
+ expect(fromDb?.actionType).toEqual(auditEvent.actionType)
69
+ expect(fromDb?.actionSubType).toEqual(auditEvent.actionSubType)
70
+ expect(fromDb?.initiatorType).toEqual(auditEvent.initiatorType)
71
+ expect(fromDb?.systemCorrelationIdType).toEqual(auditEvent.systemCorrelationIdType)
72
+ expect(fromDb?.systemCorrelationId).toEqual(auditEvent.systemCorrelationId)
73
+ expect(fromDb?.systemAlias).toEqual(auditEvent.systemAlias)
74
+ expect(fromDb?.partyCorrelationType).toEqual(auditEvent.partyCorrelationType)
75
+ expect(fromDb?.partyCorrelationId).toEqual(auditEvent.partyCorrelationId)
76
+ expect(fromDb?.partyAlias).toEqual(auditEvent.partyAlias)
77
+ expect(fromDb?.description).toEqual(auditEvent.description)
78
+ expect(fromDb?.data).toEqual(JSON.stringify(auditEvent.data))
79
+ expect(fromDb?.diagnosticData).toEqual(JSON.stringify(auditEvent.diagnosticData))
80
+ })
81
+
82
+ it('should save activity event to database', async (): Promise<void> => {
83
+ const auditEvent: NonPersistedActivityLoggingEvent = {
84
+ timestamp: new Date(),
85
+ level: LogLevel.DEBUG,
86
+ originalCredential: 'test_credential_string',
87
+ credentialHash: '341a7897df58e472f9bf19b3b9abf7d5',
88
+ parentCredentialHash: 'df7037831edbde7f0f65f723ef5494d6',
89
+ credentialType: CredentialType.SD_JWT,
90
+ correlationId: 'b40b8474-58a2-4b23-9fde-bd6ee1902cdb',
91
+ system: System.GENERAL,
92
+ subSystemType: SubSystem.DID_PROVIDER,
93
+ actionType: ActionType.CREATE,
94
+ actionSubType: 'Key generation',
95
+ initiatorType: InitiatorType.EXTERNAL,
96
+ systemCorrelationIdType: SystemCorrelationIdType.DID,
97
+ systemCorrelationId: 'did:example:123456789abcdefghi',
98
+ systemAlias: 'test_alias',
99
+ partyCorrelationType: PartyCorrelationType.DID,
100
+ partyCorrelationId: '75cfd84a-0f3b-4fb1-97a3-a1506c7ab850',
101
+ partyAlias: 'test_alias',
102
+ description: 'test_description',
103
+ data: 'test_data_string',
104
+ diagnosticData: { data: 'test_data_string' },
105
+ }
106
+
107
+ const activityEventEntity: AuditEventEntity = activityEventEntityFrom(auditEvent)
108
+ const fromDb: AuditEventEntity = await dbConnection.getRepository(AuditEventEntity).save(activityEventEntity)
109
+
110
+ expect(fromDb).toBeDefined()
111
+ expect(fromDb?.id).not.toBeNull()
112
+ expect(fromDb?.type).toEqual(LoggingEventType.ACTIVITY)
58
113
  expect(fromDb?.timestamp).toEqual(auditEvent.timestamp)
59
114
  expect(fromDb?.level).toEqual(auditEvent.level)
60
115
  expect(fromDb?.correlationId).toEqual(auditEvent.correlationId)