diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppIdAuthenticationIntegrationTestBase.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppIdAuthenticationIntegrationTestBase.java index e5a3b960..62b55f21 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppIdAuthenticationIntegrationTestBase.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppIdAuthenticationIntegrationTestBase.java @@ -20,6 +20,7 @@ import java.util.Map; import org.junit.jupiter.api.BeforeEach; +import org.springframework.vault.util.DisabledOnVaultVersion; import org.springframework.vault.util.IntegrationTestSupport; /** @@ -27,6 +28,7 @@ import org.springframework.vault.util.IntegrationTestSupport; * * @author Mark Paluch */ +@DisabledOnVaultVersion("1.12") public abstract class AppIdAuthenticationIntegrationTestBase extends IntegrationTestSupport { @BeforeEach diff --git a/spring-vault-core/src/test/java/org/springframework/vault/util/DisabledOnVaultVersion.java b/spring-vault-core/src/test/java/org/springframework/vault/util/DisabledOnVaultVersion.java new file mode 100644 index 00000000..de10136d --- /dev/null +++ b/spring-vault-core/src/test/java/org/springframework/vault/util/DisabledOnVaultVersion.java @@ -0,0 +1,54 @@ +/* + * Copyright 2019-2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.vault.util; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.junit.jupiter.api.extension.ExtendWith; + +/** + * Annotation to guard a {@code @Test} to skip on or after the specified Vault version. + *
+ * When applied at the class level, all test methods within that class are automatically + * disabled as well. + * + *
+ * When applied at the method level, the presence of this annotation does not prevent the
+ * test class from being instantiated. Rather, it prevents the execution of the test
+ * method and method-level lifecycle callbacks such as {@code @BeforeEach} methods,
+ * {@code @AfterEach} methods, and corresponding extension APIs.
+ *
+ * @author Mark Paluch
+ * @see VaultVersionExtension
+ */
+@Target({ ElementType.TYPE, ElementType.METHOD })
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Inherited
+@ExtendWith(VaultVersionExtension.class)
+public @interface DisabledOnVaultVersion {
+
+ /**
+ * Minimum version to skip a test.
+ */
+ String value();
+
+}
diff --git a/spring-vault-core/src/test/java/org/springframework/vault/util/VaultVersionExtension.java b/spring-vault-core/src/test/java/org/springframework/vault/util/VaultVersionExtension.java
index d7a62d23..fc9066d6 100644
--- a/spring-vault-core/src/test/java/org/springframework/vault/util/VaultVersionExtension.java
+++ b/spring-vault-core/src/test/java/org/springframework/vault/util/VaultVersionExtension.java
@@ -24,7 +24,8 @@ import org.junit.platform.commons.util.AnnotationUtils;
/**
* This is an {@link org.junit.jupiter.api.extension.ExecutionCondition} that supports the
- * {@link RequiresVaultVersion @RequiresVaultVersion} annotation.
+ * {@link RequiresVaultVersion @RequiresVaultVersion} and
+ * {@link DisabledOnVaultVersion @DisabledOnVaultVersion} annotations.
*
* @author Mark Paluch
* @see RequiresVaultVersion
@@ -35,15 +36,18 @@ class VaultVersionExtension implements ExecutionCondition {
private static final ExtensionContext.Namespace VAULT = ExtensionContext.Namespace.create("vault.version");
private static final ConditionEvaluationResult ENABLED_BY_DEFAULT = ConditionEvaluationResult
- .enabled("@VaultVersion is not present");
+ .enabled("@VaultVersion is not present");
@Override
public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {
- Optional