3636import eu .webeid .security .exceptions .UserCertificateWrongPurposeException ;
3737import eu .webeid .security .testutil .AbstractTestWithValidator ;
3838import eu .webeid .security .testutil .AuthTokenValidators ;
39- import eu .webeid .security .testutil .Dates ;
4039import eu .webeid .security .util .DateAndTime ;
41- import io .jsonwebtoken .Clock ;
4240import org .junit .jupiter .api .AfterEach ;
4341import org .junit .jupiter .api .BeforeEach ;
4442import org .junit .jupiter .api .Disabled ;
4543import org .junit .jupiter .api .Test ;
4644import org .mockito .MockedStatic ;
4745
4846import java .security .cert .CertificateException ;
49- import java .util .Date ;
5047
48+ import static eu .webeid .security .testutil .DateMocker .mockDate ;
5149import static org .assertj .core .api .Assertions .assertThatThrownBy ;
5250import static org .mockito .Mockito .mockStatic ;
5351
@@ -71,13 +69,14 @@ class AuthTokenCertificateTest extends AbstractTestWithValidator {
7169
7270 private MockedStatic <DateAndTime .DefaultClock > mockedClock ;
7371
72+
7473 @ Override
7574 @ BeforeEach
7675 protected void setup () {
7776 super .setup ();
7877 mockedClock = mockStatic (DateAndTime .DefaultClock .class );
7978 // Ensure that the certificates do not expire.
80- mockDate ("2021-08-01" );
79+ mockDate ("2021-08-01" , mockedClock );
8180 }
8281
8382 @ AfterEach
@@ -180,7 +179,7 @@ void whenCertificatePolicyIsDisallowed_thenValidationFails() throws Exception {
180179
181180 @ Test
182181 void whenUsingOldMobileIdCertificate_thenValidationFails () throws AuthTokenException {
183- mockDate ("2021-03-01" );
182+ mockDate ("2021-03-01" , mockedClock );
184183 final WebEidAuthToken token = replaceTokenField (AUTH_TOKEN , "X5C" , OLD_MOBILE_ID_CERT );
185184 assertThatThrownBy (() -> validator
186185 .validate (token , VALID_CHALLENGE_NONCE ))
@@ -222,7 +221,7 @@ void whenCertificateIsExpiredEcdsa_thenValidationFails() throws AuthTokenExcepti
222221
223222 @ Test
224223 void whenUserCertificateIsNotYetValid_thenValidationFails () {
225- mockDate ("2018-10-17" );
224+ mockDate ("2018-10-17" , mockedClock );
226225 assertThatThrownBy (() -> validator
227226 .validate (validAuthToken , VALID_CHALLENGE_NONCE ))
228227 .isInstanceOf (CertificateNotYetValidException .class )
@@ -231,7 +230,7 @@ void whenUserCertificateIsNotYetValid_thenValidationFails() {
231230
232231 @ Test
233232 void whenTrustedCACertificateIsNotYetValid_thenValidationFails () {
234- mockDate ("2018-08-17" );
233+ mockDate ("2018-08-17" , mockedClock );
235234 assertThatThrownBy (() -> validator
236235 .validate (validAuthToken , VALID_CHALLENGE_NONCE ))
237236 .isInstanceOf (CertificateNotYetValidException .class )
@@ -240,7 +239,7 @@ void whenTrustedCACertificateIsNotYetValid_thenValidationFails() {
240239
241240 @ Test
242241 void whenUserCertificateIsNoLongerValid_thenValidationFails () {
243- mockDate ("2026-10-19" );
242+ mockDate ("2026-10-19" , mockedClock );
244243 assertThatThrownBy (() -> validator
245244 .validate (validAuthToken , VALID_CHALLENGE_NONCE ))
246245 .isInstanceOf (CertificateExpiredException .class )
@@ -249,7 +248,7 @@ void whenUserCertificateIsNoLongerValid_thenValidationFails() {
249248
250249 @ Test
251250 void whenTrustedCACertificateIsNoLongerValid_thenValidationFails () {
252- mockDate ("2033-10-19" );
251+ mockDate ("2033-10-19" , mockedClock );
253252 assertThatThrownBy (() -> validator
254253 .validate (validAuthToken , VALID_CHALLENGE_NONCE ))
255254 .isInstanceOf (CertificateExpiredException .class )
@@ -259,7 +258,7 @@ void whenTrustedCACertificateIsNoLongerValid_thenValidationFails() {
259258 @ Test
260259 @ Disabled ("A new designated test OCSP responder certificate was issued whose validity period no longer overlaps with the revoked certificate" )
261260 void whenCertificateIsRevoked_thenOcspCheckFails () throws Exception {
262- mockDate ("2020-01-01" );
261+ mockDate ("2020-01-01" , mockedClock );
263262 final AuthTokenValidator validatorWithOcspCheck = AuthTokenValidators .getAuthTokenValidatorWithOcspCheck ();
264263 final WebEidAuthToken token = replaceTokenField (AUTH_TOKEN , "X5C" , REVOKED_CERT );
265264 assertThatThrownBy (() -> validatorWithOcspCheck
@@ -270,7 +269,7 @@ void whenCertificateIsRevoked_thenOcspCheckFails() throws Exception {
270269 @ Test
271270 @ Disabled ("A new designated test OCSP responder certificate was issued whose validity period no longer overlaps with the revoked certificate" )
272271 void whenCertificateIsRevoked_thenOcspCheckWithDesignatedOcspServiceFails () throws Exception {
273- mockDate ("2020-01-01" );
272+ mockDate ("2020-01-01" , mockedClock );
274273 final AuthTokenValidator validatorWithOcspCheck = AuthTokenValidators .getAuthTokenValidatorWithDesignatedOcspCheck ();
275274 final WebEidAuthToken token = replaceTokenField (AUTH_TOKEN , "X5C" , REVOKED_CERT );
276275 assertThatThrownBy (() -> validatorWithOcspCheck
@@ -286,9 +285,4 @@ void whenCertificateCaIsNotPartOfTrustChain_thenValidationFails() throws Excepti
286285 .isInstanceOf (CertificateNotTrustedException .class );
287286 }
288287
289- private void mockDate (String date ) {
290- final Date theDate = Dates .create (date );
291- mockedClock .when (DateAndTime .DefaultClock ::getInstance ).thenReturn ((Clock ) () -> theDate );
292- }
293-
294288}
0 commit comments