import { VerifiableCredentialsValidator } from '../../../../src/validators/credential/verifiableCredentialsValidator.js'; import { DidPublicKeyResolver } from '../../../../src/resolvers/didPublicKeyResolver.js'; import { HttpPublicKeyResolver } from '../../../../src/resolvers/httpPublicKeyResolver.js'; import { mock } from 'jest-mock-extended'; import { SignatureValidator } from '../../../../src/validators/credential/signatureValidator.js'; describe('verifiable credentials validator', () => { it('should validate all if report flag is true', async () => { const didPublicKeyResolverMock = mock(); const httpPublicKeyResolverMock = mock(); const signatureValidator = mock(); const expiredVcJwt = 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImRpZDp3ZWI6ZGV2LnZpZGNoYWluLm5ldDphcGk6djE6ZGlkLXdlYi1yZXNvbHZlcjoyMTU4MWViYi0wYTBlLTQyNzAtYThhMy01Mzg4ZDFhNDUzZWIja2V5LTAifQ.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSJdLCJpZCI6Imh0dHBzOi8vZXhhbXBsZS5jb20vY3JlZGVudGlhbC8yMzkwIiwiaXNzdWVyIjp7ImlkIjoiZGlkOndlYjpkZXYudmlkY2hhaW4ubmV0OmFwaTp2MTpkaWQtd2ViLXJlc29sdmVyOjIxNTgxZWJiLTBhMGUtNDI3MC1hOGEzLTUzODhkMWE0NTNlYiIsIm5hbWUiOiJWYWxpZGF0ZWQgSUQifSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJpZCI6ImRpZDprZXk6ejJkbXpEODFjZ1B4OFZraTdKYnV1TW1GWXJXUGdZb3l0eWtVWjNleXFodDFqOUtidDF1TGExWEtmVXlZUERWY1JHYUdWelIyampqOGtvdGpRVlNEQkZSVDhyUXR0S281dnp1Ylh4NXlzNk1zcm9TdGQxUXp1N1NYaktQeXVnYUE2blFDTVVpck1kUVB4SzU4dUNrNTRaVm5zV1c2YXNuU1hwUUVvbjl5SFR4Rm1HYVVBRyIsInBlcnNvbklkZW50aWZpZXIiOiJBQi9BQi8wMjYzNTU0MlkiLCJjdXJyZW50RmFtaWx5TmFtZSI6Ikp1bGlhIiwiY3VycmVudEdpdmVuTmFtZSI6IlJvYmVydHMiLCJiaXJ0aE5hbWUiOiJKdWxpYSIsImRhdGVPZkJpcnRoIjoiMTk5OC0wMi0xNCIsInBsYWNlT2ZCaXJ0aCI6IkJydXNzZWxzIiwiY3VycmVudEFkZHJlc3MiOiI0NCwgcnVlIGRlIEZhbWUiLCJnZW5kZXIiOiJGZW1hbGUifSwidmFsaWRVbnRpbCI6IjIwMjMtMTItMjBUMTM6MDc6MTBaIn0sImlhdCI6MTcxMTA5ODc0OSwiaXNzIjoiZGlkOndlYjpkZXYudmlkY2hhaW4ubmV0OmFwaTp2MTpkaWQtd2ViLXJlc29sdmVyOjIxNTgxZWJiLTBhMGUtNDI3MC1hOGEzLTUzODhkMWE0NTNlYiJ9.cjYPY0pX2ZZE01F52GEgf1ZZz2UB22L0RFkehApQzm2FPfrFiNQjanohlQQiC9Irg5KE2CwZaL6dI6KURkwm1w'; const verifiableCredentialsValidator = new VerifiableCredentialsValidator( didPublicKeyResolverMock, httpPublicKeyResolverMock, signatureValidator, ); await verifiableCredentialsValidator.validate(expiredVcJwt, { report: true, }); expect(didPublicKeyResolverMock.getPublicKeyJwk).toHaveBeenCalled(); expect(signatureValidator.validate).toHaveBeenCalled(); }); it('should not validate the signature if credential is expired and report flag is false', async () => { const didPublicKeyResolverMock = mock(); const httpPublicKeyResolverMock = mock(); const signatureValidator = mock(); const expiredVcJwt = 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImRpZDp3ZWI6ZGV2LnZpZGNoYWluLm5ldDphcGk6djE6ZGlkLXdlYi1yZXNvbHZlcjoyMTU4MWViYi0wYTBlLTQyNzAtYThhMy01Mzg4ZDFhNDUzZWIja2V5LTAifQ.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSJdLCJpZCI6Imh0dHBzOi8vZXhhbXBsZS5jb20vY3JlZGVudGlhbC8yMzkwIiwiaXNzdWVyIjp7ImlkIjoiZGlkOndlYjpkZXYudmlkY2hhaW4ubmV0OmFwaTp2MTpkaWQtd2ViLXJlc29sdmVyOjIxNTgxZWJiLTBhMGUtNDI3MC1hOGEzLTUzODhkMWE0NTNlYiIsIm5hbWUiOiJWYWxpZGF0ZWQgSUQifSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJpZCI6ImRpZDprZXk6ejJkbXpEODFjZ1B4OFZraTdKYnV1TW1GWXJXUGdZb3l0eWtVWjNleXFodDFqOUtidDF1TGExWEtmVXlZUERWY1JHYUdWelIyampqOGtvdGpRVlNEQkZSVDhyUXR0S281dnp1Ylh4NXlzNk1zcm9TdGQxUXp1N1NYaktQeXVnYUE2blFDTVVpck1kUVB4SzU4dUNrNTRaVm5zV1c2YXNuU1hwUUVvbjl5SFR4Rm1HYVVBRyIsInBlcnNvbklkZW50aWZpZXIiOiJBQi9BQi8wMjYzNTU0MlkiLCJjdXJyZW50RmFtaWx5TmFtZSI6Ikp1bGlhIiwiY3VycmVudEdpdmVuTmFtZSI6IlJvYmVydHMiLCJiaXJ0aE5hbWUiOiJKdWxpYSIsImRhdGVPZkJpcnRoIjoiMTk5OC0wMi0xNCIsInBsYWNlT2ZCaXJ0aCI6IkJydXNzZWxzIiwiY3VycmVudEFkZHJlc3MiOiI0NCwgcnVlIGRlIEZhbWUiLCJnZW5kZXIiOiJGZW1hbGUifSwidmFsaWRVbnRpbCI6IjIwMjMtMTItMjBUMTM6MDc6MTBaIn0sImlhdCI6MTcxMTA5ODc0OSwiaXNzIjoiZGlkOndlYjpkZXYudmlkY2hhaW4ubmV0OmFwaTp2MTpkaWQtd2ViLXJlc29sdmVyOjIxNTgxZWJiLTBhMGUtNDI3MC1hOGEzLTUzODhkMWE0NTNlYiJ9.cjYPY0pX2ZZE01F52GEgf1ZZz2UB22L0RFkehApQzm2FPfrFiNQjanohlQQiC9Irg5KE2CwZaL6dI6KURkwm1w'; const verifiableCredentialsValidator = new VerifiableCredentialsValidator( didPublicKeyResolverMock, httpPublicKeyResolverMock, signatureValidator, ); await verifiableCredentialsValidator.validate(expiredVcJwt); expect(didPublicKeyResolverMock.getPublicKeyJwk).not.toHaveBeenCalled(); expect(signatureValidator.validate).not.toHaveBeenCalled(); }); });