Event#clientId is already Client#clientIdand notClient#id, fix #23

This commit is contained in:
Stephan Schnabel 2023-04-24 13:04:18 +02:00
parent 456f903159
commit 103bbccb9f
Signed by: stephan.schnabel
GPG key ID: E07AF5BA239FE543
4 changed files with 7 additions and 28 deletions

View file

@ -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: 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) * [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: Metrics:

View file

@ -31,7 +31,7 @@ public class MicrometerEventListener implements EventListenerProvider, AutoClose
registry.counter("keycloak_event_user", registry.counter("keycloak_event_user",
"realm", toBlank(replace ? getRealmName(event.getRealmId()) : event.getRealmId()), "realm", toBlank(replace ? getRealmName(event.getRealmId()) : event.getRealmId()),
"type", toBlank(event.getType()), "type", toBlank(event.getType()),
"client", toBlank(replace ? getClientId(event.getClientId()) : event.getClientId()), "client", toBlank(event.getClientId()),
"error", toBlank(event.getError())) "error", toBlank(event.getError()))
.increment(); .increment();
} }
@ -58,15 +58,6 @@ public class MicrometerEventListener implements EventListenerProvider, AutoClose
return id; 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) { private String toBlank(Object value) {
return value == null ? "" : value.toString(); return value == null ? "" : value.toString();
} }

View file

@ -22,7 +22,6 @@ import org.keycloak.events.EventType;
import org.keycloak.events.admin.AdminEvent; import org.keycloak.events.admin.AdminEvent;
import org.keycloak.events.admin.OperationType; import org.keycloak.events.admin.OperationType;
import org.keycloak.events.admin.ResourceType; import org.keycloak.events.admin.ResourceType;
import org.keycloak.models.ClientModel;
import org.keycloak.models.KeycloakContext; import org.keycloak.models.KeycloakContext;
import org.keycloak.models.KeycloakSession; import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel; import org.keycloak.models.RealmModel;
@ -47,8 +46,6 @@ public class MicrometerEventListenerTest {
@Mock @Mock
RealmModel realmModel; RealmModel realmModel;
@Mock @Mock
ClientModel clientModel;
@Mock
KeycloakContext context; KeycloakContext context;
@Mock @Mock
MeterRegistry registry; MeterRegistry registry;
@ -75,19 +72,15 @@ public class MicrometerEventListenerTest {
var realmId = UUID.randomUUID().toString(); var realmId = UUID.randomUUID().toString();
var realmName = UUID.randomUUID().toString(); var realmName = UUID.randomUUID().toString();
var clientId = UUID.randomUUID().toString(); var clientId = UUID.randomUUID().toString();
var clientName = UUID.randomUUID().toString();
var type = EventType.LOGIN; var type = EventType.LOGIN;
when(session.getContext()).thenReturn(context); when(session.getContext()).thenReturn(context);
when(context.getRealm()).thenReturn(realmModel); when(context.getRealm()).thenReturn(realmModel);
when(context.getClient()).thenReturn(clientModel);
when(realmModel.getId()).thenReturn(realmId); when(realmModel.getId()).thenReturn(realmId);
when(realmModel.getName()).thenReturn(realmName); when(realmModel.getName()).thenReturn(realmName);
when(clientModel.getId()).thenReturn(clientId);
when(clientModel.getClientId()).thenReturn(clientName);
listener(true).onEvent(toEvent(realmId, clientId, type, null)); listener(true).onEvent(toEvent(realmId, clientId, type, null));
assertEvent(realmName, clientName, type.toString(), ""); assertEvent(realmName, clientId, type.toString(), "");
} }
@DisplayName("replace(true) - with error") @DisplayName("replace(true) - with error")
@ -97,20 +90,16 @@ public class MicrometerEventListenerTest {
var realmId = UUID.randomUUID().toString(); var realmId = UUID.randomUUID().toString();
var realmName = UUID.randomUUID().toString(); var realmName = UUID.randomUUID().toString();
var clientId = UUID.randomUUID().toString(); var clientId = UUID.randomUUID().toString();
var clientName = UUID.randomUUID().toString();
var type = EventType.LOGIN_ERROR; var type = EventType.LOGIN_ERROR;
var error = UUID.randomUUID().toString(); var error = UUID.randomUUID().toString();
when(session.getContext()).thenReturn(context); when(session.getContext()).thenReturn(context);
when(context.getRealm()).thenReturn(realmModel); when(context.getRealm()).thenReturn(realmModel);
when(context.getClient()).thenReturn(clientModel);
when(realmModel.getId()).thenReturn(realmId); when(realmModel.getId()).thenReturn(realmId);
when(realmModel.getName()).thenReturn(realmName); when(realmModel.getName()).thenReturn(realmName);
when(clientModel.getId()).thenReturn(clientId);
when(clientModel.getClientId()).thenReturn(clientName);
listener(true).onEvent(toEvent(realmId, clientId, type, error)); 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") @DisplayName("replace(true) - all fields empty")
@ -118,16 +107,13 @@ public class MicrometerEventListenerTest {
void replaceFieldsEmpty() { void replaceFieldsEmpty() {
var realmName = UUID.randomUUID().toString(); var realmName = UUID.randomUUID().toString();
var clientName = UUID.randomUUID().toString();
when(session.getContext()).thenReturn(context); when(session.getContext()).thenReturn(context);
when(context.getRealm()).thenReturn(realmModel); when(context.getRealm()).thenReturn(realmModel);
when(context.getClient()).thenReturn(clientModel);
when(realmModel.getName()).thenReturn(realmName); when(realmModel.getName()).thenReturn(realmName);
when(clientModel.getClientId()).thenReturn(clientName);
listener(true).onEvent(toEvent(null, null, null, null)); listener(true).onEvent(toEvent(null, null, null, null));
assertEvent(realmName, clientName, "", ""); assertEvent(realmName, "", "", "");
} }
@DisplayName("replace(false) - without error") @DisplayName("replace(false) - without error")

View file

@ -2,6 +2,7 @@ package io.kokuwa.keycloak.metrics.junit;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID;
import javax.ws.rs.NotAuthorizedException; import javax.ws.rs.NotAuthorizedException;
import javax.ws.rs.core.MultivaluedHashMap; import javax.ws.rs.core.MultivaluedHashMap;
@ -31,6 +32,7 @@ public class KeycloakClient {
public void createRealm(String realmName) { public void createRealm(String realmName) {
var realm = new RealmRepresentation(); var realm = new RealmRepresentation();
realm.setId(UUID.randomUUID().toString());
realm.setEnabled(true); realm.setEnabled(true);
realm.setRealm(realmName); realm.setRealm(realmName);
realm.setEventsListeners(List.of("metrics-listener")); realm.setEventsListeners(List.of("metrics-listener"));
@ -39,6 +41,7 @@ public class KeycloakClient {
public void createClient(String realmName, String clientId) { public void createClient(String realmName, String clientId) {
var client = new ClientRepresentation(); var client = new ClientRepresentation();
client.setId(UUID.randomUUID().toString());
client.setClientId(clientId); client.setClientId(clientId);
client.setPublicClient(true); client.setPublicClient(true);
client.setDirectAccessGrantsEnabled(true); client.setDirectAccessGrantsEnabled(true);