Fix test isolation/race issue in OAuth2AdminControllerTest

The testCleanExpiredTokensUsingAdminToken test was failing on clean
clones because it depended on expired refresh tokens existing in the
database from previous test runs. The createExpiredAccessToken() helper
method only created expired access tokens, not refresh tokens.

141.2 [ERROR] Tests run: 3, Failures: 1, Errors: 0, Skipped: 0, Time
elapsed: 1.033 s <<< FAILURE! -- in
de.ids_mannheim.korap.web.controller.oauth2.OAuth2AdminControllerTest
141.2 [ERROR]
de.ids_mannheim.korap.web.controller.oauth2.OAuth2AdminControllerTest.testCleanExpiredTokensUsingAdminToken
-- Time elapsed: 0.103 s <<< FAILURE!
141.2 org.opentest4j.AssertionFailedError: expected: <true> but was:
<false>
141.2 	at
org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:158)
141.2 	at
org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:139)
141.2 	at
org.junit.jupiter.api.AssertTrue.failNotTrue(AssertTrue.java:69)
141.2 	at
org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:41)
141.2 	at
org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:35)
141.2 	at
org.junit.jupiter.api.Assertions.assertTrue(Assertions.java:195)
141.2 	at
de.ids_mannheim.korap.web.controller.oauth2.OAuth2AdminControllerTest.testCleanExpiredTokensUsingAdminToken(OAuth2AdminControllerTest.java:98)
141.2
141.6 [INFO]
141.6 [INFO] Results:
141.6 [INFO]
141.6 [ERROR] Failures:
141.6 [ERROR]
OAuth2AdminControllerTest.testCleanExpiredTokensUsingAdminToken:98
expected: <true> but was: <false>
141.6 [INFO]
141.6 [ERROR] Tests run: 545, Failures: 1, Errors: 0, Skipped: 47
141.6 [INFO]
141.6 [INFO]
------------------------------------------------------------------------
141.6 [INFO] BUILD FAILURE
141.6 [INFO]
------------------------------------------------------------------------

Change-Id: I20414eff76c5c6b760f4c93e904d54cd4a071bc4
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/oauth2/OAuth2TestBase.java b/src/test/java/de/ids_mannheim/korap/web/controller/oauth2/OAuth2TestBase.java
index 6e10946..46429a9 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/oauth2/OAuth2TestBase.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/oauth2/OAuth2TestBase.java
@@ -568,6 +568,7 @@
 
     protected String createExpiredAccessToken () throws KustvaktException {
         String authToken = codeGenerator.createRandomCode();
+        String refreshTokenStr = codeGenerator.createRandomCode();
 
         // create new access token
         OAuth2Client client = clientDao.retrieveClientById(publicClientId);
@@ -577,6 +578,15 @@
         Set<AccessScope> scopes = new HashSet<>();
         scopes.add(new AccessScope(OAuth2Scope.CREATE_VC));
 
+        // Create expired refresh token
+        refreshTokenDao.storeRefreshToken(refreshTokenStr, "marlin",
+                now.minusSeconds(10), client, scopes);
+        // Update the refresh token to be expired
+        de.ids_mannheim.korap.oauth2.entity.RefreshToken refreshToken =
+                refreshTokenDao.retrieveRefreshToken(refreshTokenStr);
+        refreshToken.setExpiryDate(now.minusSeconds(3));
+        refreshTokenDao.updateRefreshToken(refreshToken);
+
         AccessToken accessToken = new AccessToken();
         accessToken.setCreatedDate(now.minusSeconds(5));
         accessToken.setExpiryDate(now.minusSeconds(3));
@@ -585,6 +595,7 @@
         accessToken.setUserId("marlin");
         accessToken.setClient(client);
         accessToken.setUserAuthenticationTime(now.minusSeconds(5));
+        accessToken.setRefreshToken(refreshToken);
         tokenDao.storeAccessToken(accessToken);
         return authToken;
     }