Enhanced Logging for handling of getAllKeycloakUsers
diff --git a/src/main/java/org/eclipse/openk/portal/common/UserCacheTimerTask.java b/src/main/java/org/eclipse/openk/portal/common/UserCacheTimerTask.java index f881417..51a2a26 100644 --- a/src/main/java/org/eclipse/openk/portal/common/UserCacheTimerTask.java +++ b/src/main/java/org/eclipse/openk/portal/common/UserCacheTimerTask.java
@@ -21,9 +21,17 @@ LOGGER.debug("UserCacheTimerTask started"); try { JwtToken token = JwtHelper.login(BackendConfig.getInstance().getKeycloakAdmin(), BackendConfig.getInstance().getKeycloakPW()); + if( token == null ) { + LOGGER.error("Login for getKeyCloakUsersFromToken() failed for User:"+ BackendConfig.getInstance().getKeycloakAdmin()); + return; + } List<KeyCloakUser> allUsersWithRoles = getKeyCloakUsersFromToken(token); + if( allUsersWithRoles.isEmpty()) { + LOGGER.warn("getKeyCloakUsersFromToken provided empty list!"); + } + UserCache.getInstance().setKeyCloakUsers(allUsersWithRoles); } catch (PortalInternalServerError portalInternalServerError) {
diff --git a/src/test/java/org/eclipse/openk/portal/common/UserCacheTimerTaskTest.java b/src/test/java/org/eclipse/openk/portal/common/UserCacheTimerTaskTest.java index 73a6ed4..6e82a6e 100644 --- a/src/test/java/org/eclipse/openk/portal/common/UserCacheTimerTaskTest.java +++ b/src/test/java/org/eclipse/openk/portal/common/UserCacheTimerTaskTest.java
@@ -1,11 +1,14 @@ package org.eclipse.openk.portal.common; +import static junit.framework.TestCase.assertEquals; +import static junit.framework.TestCase.assertNull; import static junit.framework.TestCase.assertTrue; import static org.easymock.EasyMock.expect; import static org.eclipse.openk.portal.common.JsonGeneratorBase.getGson; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; +import java.util.ArrayList; import java.util.List; import org.eclipse.openk.portal.auth2.model.JwtToken; import org.eclipse.openk.portal.auth2.model.KeyCloakRole; @@ -62,4 +65,63 @@ assertTrue(keyCloakUsersResult.get(0).getRealmRoles().get(0).equals("elogbook-superuser")); assertTrue(keyCloakUsersResult.get(0).getRealmRoles().get(6).equals("elogbook-access")); } + + @Test + public void testGetKeyCloakUsers_EmptyToken() throws Exception { + List<KeyCloakUser> compList = new ArrayList<>(); + UserCache.getInstance().setKeyCloakUsers(compList); + + String jsonKeyCloakRoles = super.loadStringFromResource("testKeyCloakRoles.json"); + Type listTypeKeyCloakRole = new TypeToken<List<KeyCloakRole>>(){}.getType(); + List<KeyCloakRole> keyCloakRolesList = JsonGeneratorBase.getGson().fromJson(jsonKeyCloakRoles, listTypeKeyCloakRole); + + expect(JwtHelper.login(BackendConfig.getInstance().getKeycloakAdmin(), BackendConfig.getInstance().getKeycloakPW())).andReturn(null); + + PowerMock.replayAll(); + task.run(); + PowerMock.verifyAll(); + + assertTrue(UserCache.getInstance().getKeyCloakUsers().isEmpty()); + } + + @Test + public void testGetKeyCloakUsers_null() throws Exception { + List<KeyCloakUser> compList = new ArrayList<>(); + UserCache.getInstance().setKeyCloakUsers(compList); + + String jsonKeyCloakRoles = super.loadStringFromResource("testKeyCloakRoles.json"); + Type listTypeKeyCloakRole = new TypeToken<List<KeyCloakRole>>(){}.getType(); + List<KeyCloakRole> keyCloakRolesList = JsonGeneratorBase.getGson().fromJson(jsonKeyCloakRoles, listTypeKeyCloakRole); + + expect(JwtHelper.login(BackendConfig.getInstance().getKeycloakAdmin(), BackendConfig.getInstance().getKeycloakPW())).andReturn(null); + + PowerMock.replayAll(); + task.run(); + PowerMock.verifyAll(); + + assertTrue(UserCache.getInstance().getKeyCloakUsers().isEmpty()); + } + + + @Test + public void testGetKeyCloakUsersFromToken_ListEmpty() throws Exception { + String jsonKeyCloakUser = super.loadStringFromResource("testKeyCloakUsers.json"); + Type listTypeKeyCloakUser = new TypeToken<List<KeyCloakUser>>(){}.getType(); + List<KeyCloakUser> keyCloakUsersListOrg = JsonGeneratorBase.getGson().fromJson(jsonKeyCloakUser, listTypeKeyCloakUser); + + UserCache.getInstance().setKeyCloakUsers(keyCloakUsersListOrg); + String json = super.loadStringFromResource("JWTAdmin.json"); + JwtToken jwt = getGson().fromJson(json, JwtToken.class); + + List<KeyCloakUser> keyCloakUsersList = new ArrayList<>(); + + expect(JwtHelper.login(BackendConfig.getInstance().getKeycloakAdmin(), BackendConfig.getInstance().getKeycloakPW())).andReturn(jwt); + expect(JwtHelper.getUsers(jwt, BackendConfig.getInstance().getMaxLoadUsers())).andReturn(keyCloakUsersList); + + PowerMock.replayAll(); + task.run(); + PowerMock.verifyAll(); + + assertEquals(keyCloakUsersList.size(), UserCache.getInstance().getKeyCloakUsers().size()); + } }