@@ -12,7 +12,7 @@ import {
12
12
} from './testDocumentLoader.js' ;
13
13
import { assertionController } from './mocks/assertionController.js' ;
14
14
import chai from 'chai' ;
15
- import { createTimeStamp } from './helpers.js' ;
15
+ import { createSkewedTimeStamp } from './helpers.js' ;
16
16
import { CredentialIssuancePurpose } from '../lib/CredentialIssuancePurpose.js' ;
17
17
import { DataIntegrityProof } from '@digitalbazaar/data-integrity' ;
18
18
import { Ed25519Signature2018 } from '@digitalbazaar/ed25519-signature-2018' ;
@@ -155,11 +155,8 @@ for(const [version, mockCredential] of versionedCredentials) {
155
155
it ( 'should issue "validUntil" in the future' , async ( ) => {
156
156
const credential = jsonld . clone ( mockCredential ) ;
157
157
credential . issuer = 'did:example:12345' ;
158
- const validUntil = new Date ( ) ;
159
158
// set validUntil one year in the future
160
- validUntil . setFullYear ( validUntil . getFullYear ( ) + 1 ) ;
161
- // turn it into an ISO Time Stamp
162
- credential . validUntil = createTimeStamp ( { date : validUntil } ) ;
159
+ credential . validUntil = createSkewedTimeStamp ( { skewYear : 1 } ) ;
163
160
let error ;
164
161
let verifiableCredential ;
165
162
try {
@@ -186,11 +183,8 @@ for(const [version, mockCredential] of versionedCredentials) {
186
183
it ( 'should issue "validUntil" in the past' , async ( ) => {
187
184
const credential = jsonld . clone ( mockCredential ) ;
188
185
credential . issuer = 'did:example:12345' ;
189
- const validUntil = new Date ( ) ;
190
186
// set validUntil one year in the past
191
- validUntil . setFullYear ( validUntil . getFullYear ( ) - 1 ) ;
192
- // turn it into an ISO Time Stamp
193
- credential . validUntil = createTimeStamp ( { date : validUntil } ) ;
187
+ credential . validUntil = createSkewedTimeStamp ( { skewYear : - 1 } ) ;
194
188
let error ;
195
189
let verifiableCredential ;
196
190
try {
@@ -217,9 +211,7 @@ for(const [version, mockCredential] of versionedCredentials) {
217
211
it ( 'should issue "validFrom" in the past' , async ( ) => {
218
212
const credential = jsonld . clone ( mockCredential ) ;
219
213
credential . issuer = 'did:example:12345' ;
220
- const validFrom = new Date ( ) ;
221
- validFrom . setFullYear ( validFrom . getFullYear ( ) - 1 ) ;
222
- credential . validFrom = createTimeStamp ( { date : validFrom } ) ;
214
+ credential . validFrom = createSkewedTimeStamp ( { skewYear : - 1 } ) ;
223
215
let error ;
224
216
let verifiableCredential ;
225
217
try {
@@ -246,9 +238,7 @@ for(const [version, mockCredential] of versionedCredentials) {
246
238
it ( 'should issue "validFrom" in the future' , async ( ) => {
247
239
const credential = jsonld . clone ( mockCredential ) ;
248
240
credential . issuer = 'did:example:12345' ;
249
- const validFrom = new Date ( ) ;
250
- validFrom . setFullYear ( validFrom . getFullYear ( ) + 1 ) ;
251
- credential . validFrom = createTimeStamp ( { date : validFrom } ) ;
241
+ credential . validFrom = createSkewedTimeStamp ( { skewYear : 1 } ) ;
252
242
let error ;
253
243
let verifiableCredential ;
254
244
try {
@@ -275,12 +265,8 @@ for(const [version, mockCredential] of versionedCredentials) {
275
265
it ( 'should issue both "validFrom" and "validUntil"' , async ( ) => {
276
266
const credential = jsonld . clone ( mockCredential ) ;
277
267
credential . issuer = 'did:example:12345' ;
278
- const validFrom = new Date ( ) ;
279
- validFrom . setFullYear ( validFrom . getFullYear ( ) - 1 ) ;
280
- credential . validFrom = createTimeStamp ( { date : validFrom } ) ;
281
- const validUntil = new Date ( ) ;
282
- validUntil . setFullYear ( validFrom . getFullYear ( ) + 1 ) ;
283
- credential . validUntil = createTimeStamp ( { date : validUntil } ) ;
268
+ credential . validFrom = createSkewedTimeStamp ( { skewYear : - 1 } ) ;
269
+ credential . validUntil = createSkewedTimeStamp ( { skewYear : 1 } ) ;
284
270
let error ;
285
271
let verifiableCredential ;
286
272
try {
@@ -792,11 +778,14 @@ for(const [version, mockCredential] of versionedCredentials) {
792
778
. contain ( 'Credential has expired.' ) ;
793
779
} ) ;
794
780
if ( version === 1.0 ) {
781
+ // we submit with second precission,
782
+ // but throw with millisecond precision
783
+ const getISOString = stamp => new Date ( stamp ) . toISOString ( ) ;
795
784
it ( 'should reject if "now" is before "issuanceDate"' , ( ) => {
796
785
const credential = jsonld . clone ( mockCredential ) ;
797
786
credential . issuer = 'did:example:12345' ;
798
- credential . issuanceDate = '2022-10-31T19:21:25Z' ;
799
- const now = '2022-06-30T19:21:25Z' ;
787
+ credential . issuanceDate = createSkewedTimeStamp ( { skewYear : 1 } ) ;
788
+ const now = createSkewedTimeStamp ( { skewYear : 0 } ) ;
800
789
let error ;
801
790
try {
802
791
vc . _checkCredential ( { credential, now} ) ;
@@ -806,19 +795,18 @@ for(const [version, mockCredential] of versionedCredentials) {
806
795
should . exist ( error ,
807
796
'Should throw error when "now" is before "issuanceDate"' ) ;
808
797
error . message . should . contain (
809
- ' The current date time (2022-06-30T19:21:25.000Z) is before the ' +
810
- ' "issuanceDate" (2022-10-31T19:21:25.000Z).' ) ;
798
+ ` The current date time (${ getISOString ( now ) } ) is before the ` +
799
+ ` "issuanceDate" (${ getISOString ( credential . issuanceDate ) } ).` ) ;
811
800
} ) ;
812
801
}
813
802
if ( version === 2.0 ) {
814
803
it ( 'should reject "validFrom" in the future' , ( ) => {
815
804
const credential = jsonld . clone ( mockCredential ) ;
816
805
credential . issuer = 'did:example:12345' ;
817
- credential . validFrom = '2022-10-30T19:21:25Z' ;
818
- const now = '2022-06-30T19:21:25Z' ;
806
+ credential . validFrom = createSkewedTimeStamp ( { skewYear : 1 } ) ;
819
807
let error ;
820
808
try {
821
- vc . _checkCredential ( { credential, now } ) ;
809
+ vc . _checkCredential ( { credential} ) ;
822
810
} catch ( e ) {
823
811
error = e ;
824
812
}
@@ -828,11 +816,10 @@ for(const [version, mockCredential] of versionedCredentials) {
828
816
it ( 'should accept "validFrom" in the past' , ( ) => {
829
817
const credential = jsonld . clone ( mockCredential ) ;
830
818
credential . issuer = 'did:example:12345' ;
831
- credential . validFrom = '2022-06-30T19:21:25Z' ;
832
- const now = '2022-10-30T19:21:25Z' ;
819
+ credential . validFrom = createSkewedTimeStamp ( { skewYear : - 1 } ) ;
833
820
let error ;
834
821
try {
835
- vc . _checkCredential ( { credential, now } ) ;
822
+ vc . _checkCredential ( { credential} ) ;
836
823
} catch ( e ) {
837
824
error = e ;
838
825
}
@@ -842,11 +829,10 @@ for(const [version, mockCredential] of versionedCredentials) {
842
829
it ( 'should reject "validUntil" in the past' , ( ) => {
843
830
const credential = jsonld . clone ( mockCredential ) ;
844
831
credential . issuer = 'did:example:12345' ;
845
- credential . validUntil = '2022-06-31T19:21:25Z' ;
846
- const now = '2025-10-30T19:21:25Z' ;
832
+ credential . validUntil = createSkewedTimeStamp ( { skewYear : - 1 } ) ;
847
833
let error ;
848
834
try {
849
- vc . _checkCredential ( { credential, now } ) ;
835
+ vc . _checkCredential ( { credential} ) ;
850
836
} catch ( e ) {
851
837
error = e ;
852
838
}
@@ -856,11 +842,10 @@ for(const [version, mockCredential] of versionedCredentials) {
856
842
it ( 'should accept "validUntil" in the future' , ( ) => {
857
843
const credential = jsonld . clone ( mockCredential ) ;
858
844
credential . issuer = 'did:example:12345' ;
859
- credential . validUntil = '2025-10-31T19:21:25Z' ;
860
- const now = '2022-06-30T19:21:25Z' ;
845
+ credential . validUntil = createSkewedTimeStamp ( { skewYear : 1 } ) ;
861
846
let error ;
862
847
try {
863
- vc . _checkCredential ( { credential, now } ) ;
848
+ vc . _checkCredential ( { credential} ) ;
864
849
} catch ( e ) {
865
850
error = e ;
866
851
}
@@ -870,12 +855,11 @@ for(const [version, mockCredential] of versionedCredentials) {
870
855
it ( 'should accept if now is between "validFrom" & "validUntil"' , ( ) => {
871
856
const credential = jsonld . clone ( mockCredential ) ;
872
857
credential . issuer = 'did:example:12345' ;
873
- credential . validFrom = '2022-05-30T19:21:25Z' ;
874
- credential . validUntil = '2025-05-30T19:21:25Z' ;
875
- const now = '2022-06-30T19:21:25Z' ;
858
+ credential . validFrom = createSkewedTimeStamp ( { skewYear : - 1 } ) ;
859
+ credential . validUntil = createSkewedTimeStamp ( { skewYear : 1 } ) ;
876
860
let error ;
877
861
try {
878
- vc . _checkCredential ( { credential, now } ) ;
862
+ vc . _checkCredential ( { credential} ) ;
879
863
} catch ( e ) {
880
864
error = e ;
881
865
}
@@ -886,7 +870,7 @@ for(const [version, mockCredential] of versionedCredentials) {
886
870
( ) => {
887
871
const credential = jsonld . clone ( mockCredential ) ;
888
872
credential . issuer = 'did:example:12345' ;
889
- const now = '2022-06-30T19:21:25Z' ;
873
+ const now = createSkewedTimeStamp ( { skewYear : 0 } ) ;
890
874
credential . validFrom = now ;
891
875
credential . validUntil = now ;
892
876
let error ;
@@ -901,12 +885,11 @@ for(const [version, mockCredential] of versionedCredentials) {
901
885
it ( 'should reject if now is after "validFrom" & "validUntil"' , ( ) => {
902
886
const credential = jsonld . clone ( mockCredential ) ;
903
887
credential . issuer = 'did:example:12345' ;
904
- credential . validFrom = '2022-05-30T19:21:25Z' ;
905
- credential . validUntil = '2023-05-30T19:21:25Z' ;
906
- const now = '2024-06-30T19:21:25Z' ;
888
+ credential . validFrom = createSkewedTimeStamp ( { skewYear : - 2 } ) ;
889
+ credential . validUntil = createSkewedTimeStamp ( { skewYear : - 1 } ) ;
907
890
let error ;
908
891
try {
909
- vc . _checkCredential ( { credential, now } ) ;
892
+ vc . _checkCredential ( { credential} ) ;
910
893
} catch ( e ) {
911
894
error = e ;
912
895
}
@@ -916,12 +899,11 @@ for(const [version, mockCredential] of versionedCredentials) {
916
899
it ( 'should reject if now is before "validFrom" & "validUntil"' , ( ) => {
917
900
const credential = jsonld . clone ( mockCredential ) ;
918
901
credential . issuer = 'did:example:12345' ;
919
- credential . validFrom = '2024-05-30T19:21:25Z' ;
920
- credential . validUntil = '2025-05-30T19:21:25Z' ;
921
- const now = '2023-06-30T19:21:25Z' ;
902
+ credential . validFrom = createSkewedTimeStamp ( { skewYear : 1 } ) ;
903
+ credential . validUntil = createSkewedTimeStamp ( { skewYear : 2 } ) ;
922
904
let error ;
923
905
try {
924
- vc . _checkCredential ( { credential, now } ) ;
906
+ vc . _checkCredential ( { credential} ) ;
925
907
} catch ( e ) {
926
908
error = e ;
927
909
}
0 commit comments