Check realm from context for null, fix #25 (#26)

This commit is contained in:
Stephan Schnabel 2023-04-24 14:22:45 +02:00 committed by GitHub
parent 181fcd6d38
commit d1680a4ccc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 123 additions and 7 deletions

View file

@ -25,6 +25,7 @@ import org.keycloak.events.admin.ResourceType;
import org.keycloak.models.KeycloakContext;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RealmProvider;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
@ -46,6 +47,8 @@ public class MicrometerEventListenerTest {
@Mock
RealmModel realmModel;
@Mock
RealmProvider realmProvider;
@Mock
KeycloakContext context;
@Mock
MeterRegistry registry;
@ -116,6 +119,58 @@ public class MicrometerEventListenerTest {
assertEvent(realmName, "", "", "");
}
@DisplayName("replace(true) - context is null")
@Test
void replaceFieldsContextNull() {
var realmId = UUID.randomUUID().toString();
var realmName = UUID.randomUUID().toString();
var clientId = UUID.randomUUID().toString();
var type = EventType.LOGIN_ERROR;
when(session.realms()).thenReturn(realmProvider);
when(realmProvider.getRealm(realmId)).thenReturn(realmModel);
when(realmModel.getName()).thenReturn(realmName);
listener(true).onEvent(toEvent(realmId, clientId, type, null));
assertEvent(realmName, clientId, type.toString(), "");
}
@DisplayName("replace(true) - context is empty")
@Test
void replaceFieldsContextEmpty() {
var realmId = UUID.randomUUID().toString();
var realmName = UUID.randomUUID().toString();
var clientId = UUID.randomUUID().toString();
var type = EventType.LOGIN_ERROR;
when(session.getContext()).thenReturn(context);
when(session.realms()).thenReturn(realmProvider);
when(realmProvider.getRealm(realmId)).thenReturn(realmModel);
when(realmModel.getName()).thenReturn(realmName);
listener(true).onEvent(toEvent(realmId, clientId, type, null));
assertEvent(realmName, clientId, type.toString(), "");
}
@DisplayName("replace(true) - realmId is unknown")
@Test
void replaceFieldsRealmIdUnknown() {
var realmId = UUID.randomUUID().toString();
var clientId = UUID.randomUUID().toString();
var type = EventType.LOGIN_ERROR;
when(session.getContext()).thenReturn(context);
when(session.realms()).thenReturn(realmProvider);
when(context.getRealm()).thenReturn(realmModel);
when(realmModel.getId()).thenReturn(UUID.randomUUID().toString());
listener(true).onEvent(toEvent(realmId, clientId, type, null));
assertEvent(realmId, clientId, type.toString(), "");
}
@DisplayName("replace(false) - without error")
@Test
void notReplaceWithoutError() {
@ -221,6 +276,58 @@ public class MicrometerEventListenerTest {
assertAdminEvent(realmName, "", "", "");
}
@DisplayName("replace(true) - context is null")
@Test
void replaceFieldsContextNull() {
var realmId = UUID.randomUUID().toString();
var realmName = UUID.randomUUID().toString();
var resource = ResourceType.USER;
var operation = OperationType.CREATE;
when(session.realms()).thenReturn(realmProvider);
when(realmProvider.getRealm(realmId)).thenReturn(realmModel);
when(realmModel.getName()).thenReturn(realmName);
listener(true).onEvent(toAdminEvent(realmId, resource, operation, null), false);
assertAdminEvent(realmName, resource.toString(), operation.toString(), "");
}
@DisplayName("replace(true) - context is empty")
@Test
void replaceFieldsContextEmpty() {
var realmId = UUID.randomUUID().toString();
var realmName = UUID.randomUUID().toString();
var resource = ResourceType.USER;
var operation = OperationType.CREATE;
when(session.getContext()).thenReturn(context);
when(session.realms()).thenReturn(realmProvider);
when(realmProvider.getRealm(realmId)).thenReturn(realmModel);
when(realmModel.getName()).thenReturn(realmName);
listener(true).onEvent(toAdminEvent(realmId, resource, operation, null), false);
assertAdminEvent(realmName, resource.toString(), operation.toString(), "");
}
@DisplayName("replace(true) - realmId is unknown")
@Test
void replaceFieldsRealmIdUnknown() {
var realmId = UUID.randomUUID().toString();
var resource = ResourceType.USER;
var operation = OperationType.CREATE;
when(session.getContext()).thenReturn(context);
when(session.realms()).thenReturn(realmProvider);
when(context.getRealm()).thenReturn(realmModel);
when(realmModel.getId()).thenReturn(UUID.randomUUID().toString());
listener(true).onEvent(toAdminEvent(realmId, resource, operation, null), false);
assertAdminEvent(realmId, resource.toString(), operation.toString(), "");
}
@DisplayName("replace(false) - without error")
@Test
void noReplaceWithoutError() {