import { ExpirationValidator } from '../../../../src/validators/credential/expirationValidator.js'; describe('expirationValidator 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 an expired credential: checking exp', async () => { const expirationValidator = new ExpirationValidator(); const credential = { jti: 'https://api-conformance.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zvqBzv5apqKzHA6g9Je8XVG/proxies/0x814820933d8c307312423083bc3d35d100742e8319dc5c0d81184ddcc1ead843/status-list-credential/3140', sub: 'https://api-conformance.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zvqBzv5apqKzHA6g9Je8XVG/proxies/0x814820933d8c307312423083bc3d35d100742e8319dc5c0d81184ddcc1ead843/status-list-credential/3140#list', iss: 'did:ebsi:zvqBzv5apqKzHA6g9Je8XVG', nbf: 1710774502, exp: 1710860902, iat: 1710774502, vc: { '@context': [ 'https://www.w3.org/2018/credentials/v1', 'https://w3id.org/vc/status-list/2021/v1', ], id: 'https://api-conformance.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zvqBzv5apqKzHA6g9Je8XVG/proxies/0x814820933d8c307312423083bc3d35d100742e8319dc5c0d81184ddcc1ead843/status-list-credential/3140', type: [ 'VerifiableCredential', 'StatusList2021Credential', 'VerifiableAttestation', ], issuer: 'did:ebsi:zvqBzv5apqKzHA6g9Je8XVG', issued: '2024-03-18T15:08:22Z', credentialSubject: { id: 'https://api-conformance.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zvqBzv5apqKzHA6g9Je8XVG/proxies/0x814820933d8c307312423083bc3d35d100742e8319dc5c0d81184ddcc1ead843/status-list-credential/3140#list', type: 'StatusList2021', encodedList: 'eJztwTEBAAAAwqBK65/OxxhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwAXR8F0Q==', statusPurpose: 'revocation', }, issuanceDate: '2024-03-18T15:08:22Z', validFrom: '2024-03-18T15:08:22Z', credentialSchema: { id: 'https://api-pilot.ebsi.eu/trusted-schemas-registry/v3/schemas/z6WWNVGZkYCMyT5YifMSbBxJ5qrRY6GT3PqNBh6SbMQpW', type: 'FullJsonSchemaValidator2021', }, expirationDate: '2124-03-19T15:08:22Z', }, }; const validationResult = await expirationValidator.validate(credential); expect(validationResult).toEqual({ valid: false, message: `${credential.vc.id} is expired`, }); }); it('not validate an expired credential: checking expirationDate', async () => { const expirationValidator = new ExpirationValidator(); const credential = { jti: 'https://api-conformance.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zvqBzv5apqKzHA6g9Je8XVG/proxies/0x814820933d8c307312423083bc3d35d100742e8319dc5c0d81184ddcc1ead843/status-list-credential/3140', sub: 'https://api-conformance.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zvqBzv5apqKzHA6g9Je8XVG/proxies/0x814820933d8c307312423083bc3d35d100742e8319dc5c0d81184ddcc1ead843/status-list-credential/3140#list', iss: 'did:ebsi:zvqBzv5apqKzHA6g9Je8XVG', nbf: 1710774502, exp: 5109436800, iat: 1710774502, vc: { '@context': [ 'https://www.w3.org/2018/credentials/v1', 'https://w3id.org/vc/status-list/2021/v1', ], id: 'https://api-conformance.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zvqBzv5apqKzHA6g9Je8XVG/proxies/0x814820933d8c307312423083bc3d35d100742e8319dc5c0d81184ddcc1ead843/status-list-credential/3140', type: [ 'VerifiableCredential', 'StatusList2021Credential', 'VerifiableAttestation', ], issuer: 'did:ebsi:zvqBzv5apqKzHA6g9Je8XVG', issued: '2024-03-18T15:08:22Z', credentialSubject: { id: 'https://api-conformance.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zvqBzv5apqKzHA6g9Je8XVG/proxies/0x814820933d8c307312423083bc3d35d100742e8319dc5c0d81184ddcc1ead843/status-list-credential/3140#list', type: 'StatusList2021', encodedList: 'eJztwTEBAAAAwqBK65/OxxhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwAXR8F0Q==', statusPurpose: 'revocation', }, issuanceDate: '2024-03-18T15:08:22Z', validFrom: '2024-03-18T15:08:22Z', credentialSchema: { id: 'https://api-pilot.ebsi.eu/trusted-schemas-registry/v3/schemas/z6WWNVGZkYCMyT5YifMSbBxJ5qrRY6GT3PqNBh6SbMQpW', type: 'FullJsonSchemaValidator2021', }, expirationDate: '2024-03-19T15:08:22Z', }, }; const validationResult = await expirationValidator.validate(credential); expect(validationResult).toEqual({ valid: false, message: `${credential.vc.id} is expired`, }); }); });