This commit is contained in:
parent
456f903159
commit
181fcd6d38
4 changed files with 7 additions and 28 deletions
|
@ -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:
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue