keycloak-event-metrics/src/test/java/io/kokuwa/keycloak/metrics/junit/AbstractMockitoTest.java

71 lines
1.9 KiB
Java

package io.kokuwa.keycloak.metrics.junit;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.ClassOrderer;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.TestClassOrder;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
import io.micrometer.core.instrument.Metrics;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
/**
* Mockito base class with configured logging.
*
* @author Stephan Schnabel
*/
@ExtendWith(MockitoExtension.class)
@TestClassOrder(ClassOrderer.DisplayName.class)
@TestMethodOrder(MethodOrderer.DisplayName.class)
public abstract class AbstractMockitoTest {
private static final List<LogRecord> LOGS = new ArrayList<>();
static {
System.setProperty("org.jboss.logging.provider", "jdk");
System.setProperty("java.util.logging.SimpleFormatter.format", "%1$tT %4$-5s %2$s %5$s%6$s%n");
Logger.getLogger("org.junit").setLevel(Level.INFO);
Logger.getLogger("").setLevel(Level.ALL);
Logger.getLogger("").addHandler(new Handler() {
@Override
public void publish(LogRecord log) {
LOGS.add(log);
}
@Override
public void flush() {}
@Override
public void close() {}
});
}
@BeforeEach
void reset() {
Metrics.globalRegistry.clear();
Metrics.addRegistry(new SimpleMeterRegistry());
LOGS.clear();
}
public static void assertLog(Level level, String message) {
assertTrue(LOGS.stream()
.filter(l -> l.getLevel().equals(level))
.filter(l -> l.getMessage().equals(message))
.findAny().isPresent(),
"log with level " + level + " and message " + message + " not found");
}
}