@sphereon/ssi-sdk.data-store 0.30.2-next.103 → 0.30.2-next.125
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.
- package/dist/digitalCredential/DigitalCredentialStore.d.ts.map +1 -1
- package/dist/digitalCredential/DigitalCredentialStore.js +1 -3
- package/dist/digitalCredential/DigitalCredentialStore.js.map +1 -1
- package/dist/entities/eventLogger/AuditEventEntity.d.ts +10 -3
- package/dist/entities/eventLogger/AuditEventEntity.d.ts.map +1 -1
- package/dist/entities/eventLogger/AuditEventEntity.js +57 -1
- package/dist/entities/eventLogger/AuditEventEntity.js.map +1 -1
- package/dist/eventLogger/AbstractEventLoggerStore.d.ts +4 -2
- package/dist/eventLogger/AbstractEventLoggerStore.d.ts.map +1 -1
- package/dist/eventLogger/AbstractEventLoggerStore.js.map +1 -1
- package/dist/eventLogger/EventLoggerStore.d.ts +5 -3
- package/dist/eventLogger/EventLoggerStore.d.ts.map +1 -1
- package/dist/eventLogger/EventLoggerStore.js +31 -2
- package/dist/eventLogger/EventLoggerStore.js.map +1 -1
- package/dist/migrations/postgres/1701634812183-CreateAuditEvents.d.ts.map +1 -1
- package/dist/migrations/postgres/1701634812183-CreateAuditEvents.js +34 -6
- package/dist/migrations/postgres/1701634812183-CreateAuditEvents.js.map +1 -1
- package/dist/migrations/sqlite/1701634819487-CreateAuditEvents.d.ts.map +1 -1
- package/dist/migrations/sqlite/1701634819487-CreateAuditEvents.js +27 -1
- package/dist/migrations/sqlite/1701634819487-CreateAuditEvents.js.map +1 -1
- package/dist/types/eventLogger/IAbstractEventLoggerStore.d.ts +9 -2
- package/dist/types/eventLogger/IAbstractEventLoggerStore.d.ts.map +1 -1
- package/dist/types/eventLogger/eventLogger.d.ts +3 -2
- package/dist/types/eventLogger/eventLogger.d.ts.map +1 -1
- package/dist/utils/eventLogger/MappingUtils.d.ts +2 -1
- package/dist/utils/eventLogger/MappingUtils.d.ts.map +1 -1
- package/dist/utils/eventLogger/MappingUtils.js +8 -2
- package/dist/utils/eventLogger/MappingUtils.js.map +1 -1
- package/package.json +5 -5
- package/src/__tests__/digitalCredential.store.test.ts +83 -4
- package/src/__tests__/eventLogger.entities.test.ts +60 -5
- package/src/__tests__/eventLogger.store.test.ts +480 -3
- package/src/digitalCredential/DigitalCredentialStore.ts +1 -3
- package/src/entities/eventLogger/AuditEventEntity.ts +54 -3
- package/src/eventLogger/AbstractEventLoggerStore.ts +9 -2
- package/src/eventLogger/EventLoggerStore.ts +55 -11
- package/src/migrations/postgres/1701634812183-CreateAuditEvents.ts +34 -6
- package/src/migrations/sqlite/1701634819487-CreateAuditEvents.ts +27 -1
- package/src/types/eventLogger/IAbstractEventLoggerStore.ts +12 -2
- package/src/types/eventLogger/eventLogger.ts +3 -2
- 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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
|
7
|
-
import {
|
|
8
|
-
|
|
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)
|