io.kroxylicious.kms.service.TestKmsFacadeInvocationContextProvider Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kroxylicious-kms-test-support Show documentation
Show all versions of kroxylicious-kms-test-support Show documentation
Test support for modules testing KMS implementations.
The newest version!
/*
* Copyright Kroxylicious Authors.
*
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package io.kroxylicious.kms.service;
import java.util.List;
import java.util.stream.Stream;
import org.junit.jupiter.api.extension.AfterEachCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ConditionEvaluationResult;
import org.junit.jupiter.api.extension.ExecutionCondition;
import org.junit.jupiter.api.extension.Extension;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.ParameterContext;
import org.junit.jupiter.api.extension.TestTemplateInvocationContext;
import org.junit.jupiter.api.extension.TestTemplateInvocationContextProvider;
import org.junit.jupiter.api.extension.support.TypeBasedParameterResolver;
public class TestKmsFacadeInvocationContextProvider implements TestTemplateInvocationContextProvider {
@Override
public boolean supportsTestTemplate(ExtensionContext context) {
return true;
}
@Override
public Stream provideTestTemplateInvocationContexts(ExtensionContext context) {
return TestKmsFacadeFactory.getTestKmsFacadeFactories()
.map(TestKmsFacadeFactory::build)
.map(TemplateInvocationContext::new);
}
private record TemplateInvocationContext(TestKmsFacade, ?, ?> kmsFacade) implements TestTemplateInvocationContext {
@Override
public String getDisplayName(int invocationIndex) {
return kmsFacade.getClass().getSimpleName();
}
@Override
public List getAdditionalExtensions() {
if (!kmsFacade.isAvailable()) {
return List.of(
(ExecutionCondition) extensionContext -> kmsFacade.isAvailable() ? ConditionEvaluationResult.enabled(null)
: ConditionEvaluationResult.disabled(null));
}
return List.of(
(BeforeEachCallback) extensionContext -> kmsFacade.start(),
new TypeBasedParameterResolver>() {
@Override
public TestKmsFacade, ?, ?> resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
return kmsFacade;
}
},
(AfterEachCallback) extensionContext -> kmsFacade.stop());
}
}
}