Commit bad4d971 authored by Frank Dietrich's avatar Frank Dietrich
Browse files

Enhanced Logging for handling of getAllKeycloakUsers

parent 7149e27f
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -21,9 +21,17 @@ public class UserCacheTimerTask extends TimerTask {
    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) {
+62 −0
Original line number Diff line number Diff line
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 @@ public class UserCacheTimerTaskTest extends ResourceLoaderBase {
        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());
    }
}