From 103bbccb9ff37c568c2e5561787e8e0638835d35 Mon Sep 17 00:00:00 2001 From: Stephan Schnabel Date: Mon, 24 Apr 2023 13:04:18 +0200 Subject: [PATCH] `Event#clientId` is already `Client#clientId`and not`Client#id`, fix #23 --- README.md | 1 - .../metrics/MicrometerEventListener.java | 11 +--------- .../metrics/MicrometerEventListenerTest.java | 20 +++---------------- .../metrics/junit/KeycloakClient.java | 3 +++ 4 files changed, 7 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 50eb326..23a4180 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,6 @@ keycloak_event_admin_total{error="",operation="CREATE",realm="9039a0b5-e8c9-437a If set to `true` than replace model ids with names: * [RealmModel#getId()](https://github.com/keycloak/keycloak/blob/main/server-spi/src/main/java/org/keycloak/models/RealmModel.java#L82) with [RealmModel#getName()](https://github.com/keycloak/keycloak/blob/main/server-spi/src/main/java/org/keycloak/models/RealmModel.java#L84) -* [ClientModel#getId()](https://github.com/keycloak/keycloak/blob/main/server-spi/src/main/java/org/keycloak/models/ClientModel.java#L106) with [ClientModel#getClientId()](https://github.com/keycloak/keycloak/blob/main/server-spi/src/main/java/org/keycloak/models/ClientModel.java#L112) Metrics: diff --git a/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventListener.java b/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventListener.java index 85aaf96..643d636 100644 --- a/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventListener.java +++ b/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventListener.java @@ -31,7 +31,7 @@ public class MicrometerEventListener implements EventListenerProvider, AutoClose registry.counter("keycloak_event_user", "realm", toBlank(replace ? getRealmName(event.getRealmId()) : event.getRealmId()), "type", toBlank(event.getType()), - "client", toBlank(replace ? getClientId(event.getClientId()) : event.getClientId()), + "client", toBlank(event.getClientId()), "error", toBlank(event.getError())) .increment(); } @@ -58,15 +58,6 @@ public class MicrometerEventListener implements EventListenerProvider, AutoClose return id; } - private String getClientId(String id) { - var model = session.getContext().getClient(); - if (id == null || id.equals(model.getId())) { - return model.getClientId(); - } - log.warnv("Failed to resolve clientId for id {0}", id); - return id; - } - private String toBlank(Object value) { return value == null ? "" : value.toString(); } diff --git a/src/test/java/io/kokuwa/keycloak/metrics/MicrometerEventListenerTest.java b/src/test/java/io/kokuwa/keycloak/metrics/MicrometerEventListenerTest.java index c15f62c..0fc3b82 100644 --- a/src/test/java/io/kokuwa/keycloak/metrics/MicrometerEventListenerTest.java +++ b/src/test/java/io/kokuwa/keycloak/metrics/MicrometerEventListenerTest.java @@ -22,7 +22,6 @@ import org.keycloak.events.EventType; import org.keycloak.events.admin.AdminEvent; import org.keycloak.events.admin.OperationType; import org.keycloak.events.admin.ResourceType; -import org.keycloak.models.ClientModel; import org.keycloak.models.KeycloakContext; import org.keycloak.models.KeycloakSession; import org.keycloak.models.RealmModel; @@ -47,8 +46,6 @@ public class MicrometerEventListenerTest { @Mock RealmModel realmModel; @Mock - ClientModel clientModel; - @Mock KeycloakContext context; @Mock MeterRegistry registry; @@ -75,19 +72,15 @@ public class MicrometerEventListenerTest { var realmId = UUID.randomUUID().toString(); var realmName = UUID.randomUUID().toString(); var clientId = UUID.randomUUID().toString(); - var clientName = UUID.randomUUID().toString(); var type = EventType.LOGIN; when(session.getContext()).thenReturn(context); when(context.getRealm()).thenReturn(realmModel); - when(context.getClient()).thenReturn(clientModel); when(realmModel.getId()).thenReturn(realmId); when(realmModel.getName()).thenReturn(realmName); - when(clientModel.getId()).thenReturn(clientId); - when(clientModel.getClientId()).thenReturn(clientName); listener(true).onEvent(toEvent(realmId, clientId, type, null)); - assertEvent(realmName, clientName, type.toString(), ""); + assertEvent(realmName, clientId, type.toString(), ""); } @DisplayName("replace(true) - with error") @@ -97,20 +90,16 @@ public class MicrometerEventListenerTest { var realmId = UUID.randomUUID().toString(); var realmName = UUID.randomUUID().toString(); var clientId = UUID.randomUUID().toString(); - var clientName = UUID.randomUUID().toString(); var type = EventType.LOGIN_ERROR; var error = UUID.randomUUID().toString(); when(session.getContext()).thenReturn(context); when(context.getRealm()).thenReturn(realmModel); - when(context.getClient()).thenReturn(clientModel); when(realmModel.getId()).thenReturn(realmId); when(realmModel.getName()).thenReturn(realmName); - when(clientModel.getId()).thenReturn(clientId); - when(clientModel.getClientId()).thenReturn(clientName); listener(true).onEvent(toEvent(realmId, clientId, type, error)); - assertEvent(realmName, clientName, type.toString(), error); + assertEvent(realmName, clientId, type.toString(), error); } @DisplayName("replace(true) - all fields empty") @@ -118,16 +107,13 @@ public class MicrometerEventListenerTest { void replaceFieldsEmpty() { var realmName = UUID.randomUUID().toString(); - var clientName = UUID.randomUUID().toString(); when(session.getContext()).thenReturn(context); when(context.getRealm()).thenReturn(realmModel); - when(context.getClient()).thenReturn(clientModel); when(realmModel.getName()).thenReturn(realmName); - when(clientModel.getClientId()).thenReturn(clientName); listener(true).onEvent(toEvent(null, null, null, null)); - assertEvent(realmName, clientName, "", ""); + assertEvent(realmName, "", "", ""); } @DisplayName("replace(false) - without error") diff --git a/src/test/java/io/kokuwa/keycloak/metrics/junit/KeycloakClient.java b/src/test/java/io/kokuwa/keycloak/metrics/junit/KeycloakClient.java index a5cd952..3d8f902 100644 --- a/src/test/java/io/kokuwa/keycloak/metrics/junit/KeycloakClient.java +++ b/src/test/java/io/kokuwa/keycloak/metrics/junit/KeycloakClient.java @@ -2,6 +2,7 @@ package io.kokuwa.keycloak.metrics.junit; import java.util.List; import java.util.Map; +import java.util.UUID; import javax.ws.rs.NotAuthorizedException; import javax.ws.rs.core.MultivaluedHashMap; @@ -31,6 +32,7 @@ public class KeycloakClient { public void createRealm(String realmName) { var realm = new RealmRepresentation(); + realm.setId(UUID.randomUUID().toString()); realm.setEnabled(true); realm.setRealm(realmName); realm.setEventsListeners(List.of("metrics-listener")); @@ -39,6 +41,7 @@ public class KeycloakClient { public void createClient(String realmName, String clientId) { var client = new ClientRepresentation(); + client.setId(UUID.randomUUID().toString()); client.setClientId(clientId); client.setPublicClient(true); client.setDirectAccessGrantsEnabled(true); -- 2.47.2