import { ExpirationValidator } from '../../../../src/validators/credential/expirationValidator.js'; import { NotYetValidValidator } from '../../../../src/validators/credential/notYetValidValidator.js'; describe('notYetValidator should', () => { it('validate a valid credential', async () => { const expirationValidator = new ExpirationValidator(); const credential = { jti: 'urn:did:123456', sub: 'did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9Kbp7cLZLRxsZuETk9BNg3oVaRTDQCN8uXayxyet5ZcjgZxvwnuMXYWGzs7LxX1s4GRbLUJwFJHFzEeNzBs6VwK8SJyjriKjE86xKFTEAwVs7qySHkr8Z3yimhsSL7bkcM7Nt', iss: 'did:ebsi:zrrmPutJM5cgdjGQF4cDy5b', nbf: 1635724800, exp: 5109436800, iat: 1635552000, vc: { '@context': ['https://www.w3.org/2018/credentials/v1'], id: 'urn:did:123456', type: ['VerifiableCredential', 'VerifiableAttestation'], issuer: 'did:ebsi:zrrmPutJM5cgdjGQF4cDy5b', issuanceDate: '2021-11-01T00:00:00Z', validFrom: '2021-11-01T00:00:00Z', issued: '2021-10-30T00:00:00Z', credentialSubject: { id: 'did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9Kbp7cLZLRxsZuETk9BNg3oVaRTDQCN8uXayxyet5ZcjgZxvwnuMXYWGzs7LxX1s4GRbLUJwFJHFzEeNzBs6VwK8SJyjriKjE86xKFTEAwVs7qySHkr8Z3yimhsSL7bkcM7Nt', personalIdentifier: 'IT/DE/1234', familyName: 'Castafiori', firstName: 'Bianca', dateOfBirth: '1930-10-01', }, credentialSchema: { id: 'https://api-pilot.ebsi.eu/trusted-schemas-registry/v2/schemas/0x0f41a1f4934e11f8f98e444ed34fb040645dcc04cead2ae28fca062eabfac181', type: 'FullJsonSchemaValidator2021', }, expirationDate: '2131-11-30T00:00:00Z', }, }; const validationResult = await expirationValidator.validate(credential); expect(validationResult).toEqual({ valid: true, }); }); it('not validate a not yet valid credential: checking nbf', async () => { const notYetValidValidator = new NotYetValidValidator(); const credential = { iss: 'did:ebsi:zvHWX359A3CvfJnCYaAiAde', sub: 'did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9KbsEYvdrjxMjQ4tpnje9BDBTzuNDP3knn6qLZErzd4bJ5go2CChoPjd5GAH3zpFJP5fuwSk66U5Pq6EhF4nKnHzDnznEP8fX99nZGgwbAh1o7Gj1X52Tdhf7U4KTk66xsA5r', iat: 1589699260, nbf: 1589699260, exp: 4104398151, jti: 'urn:uuidb6916c10-8b64-4428-8bf5-cdf48383310c', vc: { '@context': ['https://www.w3.org/2018/credentials/v1'], id: 'urn:uuid:b6916c10-8b64-4428-8bf5-cdf48383310c', type: ['VerifiableCredential', 'VerifiableAttestation'], issuer: 'did:ebsi:zvHWX359A3CvfJnCYaAiAde', issuanceDate: '2020-05-17T07:07:40Z', validFrom: '2120-05-17T07:07:40Z', validUntil: '2100-05-17T07:07:40Z', expirationDate: '2100-05-17T07:07:40Z', issued: '2020-05-17T07:07:40Z', credentialSubject: { id: 'did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9KbsEYvdrjxMjQ4tpnje9BDBTzuNDP3knn6qLZErzd4bJ5go2CChoPjd5GAH3zpFJP5fuwSk66U5Pq6EhF4nKnHzDnznEP8fX99nZGgwbAh1o7Gj1X52Tdhf7U4KTk66xsA5r', }, credentialSchema: { id: 'https://api-pilot.ebsi.eu/trusted-schemas-registry/v2/schemas/0x23039e6356ea6b703ce672e7cfac0b42765b150f63df78e2bd18ae785787f6a2', type: 'FullJsonSchemaValidator2021', }, }, }; const validationResult = await notYetValidValidator.validate(credential); expect(validationResult).toEqual({ valid: false, message: `${credential.vc.id} is not yet valid`, }); }); it('not validate a not yet valid credential: checking validFrom', async () => { const notYetValidValidator = new NotYetValidValidator(); const credential = { iss: 'did:ebsi:zvHWX359A3CvfJnCYaAiAde', sub: 'did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9KbsEYvdrjxMjQ4tpnje9BDBTzuNDP3knn6qLZErzd4bJ5go2CChoPjd5GAH3zpFJP5fuwSk66U5Pq6EhF4nKnHzDnznEP8fX99nZGgwbAh1o7Gj1X52Tdhf7U4KTk66xsA5r', iat: 1589699260, nbf: 1635724800, exp: 4104398151, jti: 'urn:uuidb6916c10-8b64-4428-8bf5-cdf48383310c', vc: { '@context': ['https://www.w3.org/2018/credentials/v1'], id: 'urn:uuid:b6916c10-8b64-4428-8bf5-cdf48383310c', type: ['VerifiableCredential', 'VerifiableAttestation'], issuer: 'did:ebsi:zvHWX359A3CvfJnCYaAiAde', issuanceDate: '2020-05-17T07:07:40Z', validFrom: '2120-05-17T07:07:40Z', validUntil: '2020-05-17T07:07:40Z', expirationDate: '2100-05-17T07:07:40Z', issued: '2020-05-17T07:07:40Z', credentialSubject: { id: 'did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9KbsEYvdrjxMjQ4tpnje9BDBTzuNDP3knn6qLZErzd4bJ5go2CChoPjd5GAH3zpFJP5fuwSk66U5Pq6EhF4nKnHzDnznEP8fX99nZGgwbAh1o7Gj1X52Tdhf7U4KTk66xsA5r', }, credentialSchema: { id: 'https://api-pilot.ebsi.eu/trusted-schemas-registry/v2/schemas/0x23039e6356ea6b703ce672e7cfac0b42765b150f63df78e2bd18ae785787f6a2', type: 'FullJsonSchemaValidator2021', }, }, }; const validationResult = await notYetValidValidator.validate(credential); expect(validationResult).toEqual({ valid: false, message: `${credential.vc.id} is not yet valid`, }); }); });