mirror of
https://github.com/jlengrand/quarkus.git
synced 2026-03-10 08:41:22 +00:00
Don't allow QuarkusUnitTest access to classes in the test directory that are not part of the deployment
This commit is contained in:
@@ -21,6 +21,7 @@ public class DynamodbMissingInterceptorConfigTest {
|
||||
static final QuarkusUnitTest config = new QuarkusUnitTest()
|
||||
.setExpectedException(ConfigurationError.class)
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClass(BadInterceptor.class)
|
||||
.addAsResource("missing-interceptor-config.properties", "application.properties"));
|
||||
|
||||
@Test
|
||||
|
||||
@@ -12,6 +12,7 @@ public class BcryptPasswordMapperTest extends JdbcSecurityRealmTest {
|
||||
static final QuarkusUnitTest config = new QuarkusUnitTest()
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(testClasses)
|
||||
.addAsResource("bcrypt-password-mapper/import.sql")
|
||||
.addAsResource("bcrypt-password-mapper/application.properties", "application.properties"));
|
||||
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ public class CustomRoleDecoderTest extends JdbcSecurityRealmTest {
|
||||
static final QuarkusUnitTest config = new QuarkusUnitTest()
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(testClassesWithCustomRoleDecoder)
|
||||
.addAsResource("custom-role-decoder/import.sql")
|
||||
.addAsResource("custom-role-decoder/application.properties", "application.properties"));
|
||||
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ public class MinimalConfigurationTest extends JdbcSecurityRealmTest {
|
||||
static final QuarkusUnitTest config = new QuarkusUnitTest()
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(testClasses)
|
||||
.addAsResource("minimal-config/import.sql")
|
||||
.addAsResource("minimal-config/application.properties", "application.properties"));
|
||||
|
||||
}
|
||||
|
||||
@@ -12,6 +12,8 @@ public class MultipleDataSourcesTest extends JdbcSecurityRealmTest {
|
||||
static final QuarkusUnitTest config = new QuarkusUnitTest()
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(testClasses)
|
||||
.addAsResource("multiple-data-sources/users.sql")
|
||||
.addAsResource("multiple-data-sources/permissions.sql")
|
||||
.addAsResource("multiple-data-sources/application.properties", "application.properties"));
|
||||
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ public class MultipleQueriesConfigurationTest extends JdbcSecurityRealmTest {
|
||||
static final QuarkusUnitTest config = new QuarkusUnitTest()
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(testClasses)
|
||||
.addAsResource("multiple-queries/import.sql")
|
||||
.addAsResource("multiple-queries/application.properties", "application.properties"));
|
||||
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ public class JPAValidationTestCase {
|
||||
static QuarkusUnitTest runner = new QuarkusUnitTest()
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(MyEntity.class, JPATestValidationResource.class)
|
||||
.addAsResource("application.properties")
|
||||
.addAsResource(new StringAsset(""), "import.sql")); // define an empty import.sql file
|
||||
|
||||
@Test
|
||||
|
||||
@@ -20,7 +20,10 @@ public class ConstraintValidatorLocalesTest {
|
||||
|
||||
@RegisterExtension
|
||||
static final QuarkusUnitTest test = new QuarkusUnitTest().setArchiveProducer(() -> ShrinkWrap
|
||||
.create(JavaArchive.class).addClasses(MyBean.class));
|
||||
.create(JavaArchive.class).addClasses(MyBean.class)
|
||||
.addAsResource("application.properties")
|
||||
.addAsResource("ValidationMessages.properties")
|
||||
.addAsResource("ValidationMessages_fr_FR.properties"));
|
||||
|
||||
@Test
|
||||
public void testConstraintLocale() {
|
||||
|
||||
@@ -7,6 +7,8 @@ import java.time.ZoneId;
|
||||
|
||||
import org.jboss.logmanager.formatters.JsonFormatter;
|
||||
import org.jboss.logmanager.formatters.StructuredFormatter;
|
||||
import org.jboss.shrinkwrap.api.ShrinkWrap;
|
||||
import org.jboss.shrinkwrap.api.spec.JavaArchive;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
@@ -16,6 +18,7 @@ public class JsonFormatterCustomConfigTest {
|
||||
|
||||
@RegisterExtension
|
||||
static final QuarkusUnitTest config = new QuarkusUnitTest()
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class).addClasses(JsonFormatterDefaultConfigTest.class))
|
||||
.withConfigurationResource("application-json-formatter-custom.properties");
|
||||
|
||||
@Test
|
||||
|
||||
@@ -16,6 +16,7 @@ public class SentryLoggerCustomTest {
|
||||
|
||||
@RegisterExtension
|
||||
static final QuarkusUnitTest config = new QuarkusUnitTest()
|
||||
.setAllowTestClassOutsideDeployment(true)
|
||||
.withConfigurationResource("application-sentry-logger-custom.properties");
|
||||
|
||||
@Test
|
||||
|
||||
@@ -15,6 +15,7 @@ public class SentryLoggerDisabledTest {
|
||||
|
||||
@RegisterExtension
|
||||
static final QuarkusUnitTest config = new QuarkusUnitTest()
|
||||
.setAllowTestClassOutsideDeployment(true)
|
||||
.withConfigurationResource("application-sentry-logger-disabled.properties");
|
||||
|
||||
@Test
|
||||
|
||||
@@ -23,6 +23,7 @@ public class SentryLoggerTest {
|
||||
|
||||
@RegisterExtension
|
||||
static final QuarkusUnitTest config = new QuarkusUnitTest()
|
||||
.setAllowTestClassOutsideDeployment(true)
|
||||
.withConfigurationResource("application-sentry-logger-default.properties");
|
||||
|
||||
@Test
|
||||
|
||||
@@ -13,6 +13,7 @@ public class SentryLoggerWrongTest {
|
||||
|
||||
@RegisterExtension
|
||||
static final QuarkusUnitTest config = new QuarkusUnitTest()
|
||||
.setAllowTestClassOutsideDeployment(true)
|
||||
.withConfigurationResource("application-sentry-logger-wrong.properties")
|
||||
.setExpectedException(ConfigurationException.class);
|
||||
|
||||
|
||||
@@ -14,7 +14,8 @@ import io.restassured.RestAssured;
|
||||
|
||||
public class DefaultGroupsUnitTest {
|
||||
private static Class<?>[] testClasses = {
|
||||
DefaultGroupsEndpoint.class
|
||||
DefaultGroupsEndpoint.class,
|
||||
TokenUtils.class
|
||||
};
|
||||
/**
|
||||
* The test generated JWT token string
|
||||
@@ -26,6 +27,8 @@ public class DefaultGroupsUnitTest {
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(testClasses)
|
||||
.addAsResource("publicKey.pem")
|
||||
.addAsResource("privateKey.pem")
|
||||
.addAsResource("TokenNoGroups.json")
|
||||
.addAsResource("applicationDefaultGroups.properties", "application.properties"));
|
||||
|
||||
@BeforeEach
|
||||
|
||||
@@ -22,7 +22,8 @@ import io.restassured.response.Response;
|
||||
|
||||
public class JwtAuthUnitTest {
|
||||
private static Class[] testClasses = {
|
||||
JsonValuejectionEndpoint.class
|
||||
JsonValuejectionEndpoint.class,
|
||||
TokenUtils.class
|
||||
};
|
||||
/**
|
||||
* The test generated JWT token string
|
||||
@@ -38,6 +39,8 @@ public class JwtAuthUnitTest {
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(testClasses)
|
||||
.addAsResource("publicKey.pem")
|
||||
.addAsResource("privateKey.pem")
|
||||
.addAsResource("Token1.json")
|
||||
.addAsResource("application.properties"));
|
||||
|
||||
@BeforeEach
|
||||
|
||||
@@ -14,7 +14,8 @@ import io.restassured.RestAssured;
|
||||
|
||||
public class JwtCookieUnitTest {
|
||||
private static Class<?>[] testClasses = {
|
||||
DefaultGroupsEndpoint.class
|
||||
DefaultGroupsEndpoint.class,
|
||||
TokenUtils.class
|
||||
};
|
||||
/**
|
||||
* The test generated JWT token string
|
||||
@@ -26,6 +27,8 @@ public class JwtCookieUnitTest {
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(testClasses)
|
||||
.addAsResource("publicKey.pem")
|
||||
.addAsResource("privateKey.pem")
|
||||
.addAsResource("TokenNoGroups.json")
|
||||
.addAsResource("applicationJwtCookie.properties", "application.properties"));
|
||||
|
||||
@BeforeEach
|
||||
|
||||
@@ -24,7 +24,8 @@ import io.restassured.RestAssured;
|
||||
*/
|
||||
public class PrimitiveInjectionUnitTest {
|
||||
private static Class[] testClasses = {
|
||||
PrimitiveInjectionEndpoint.class
|
||||
PrimitiveInjectionEndpoint.class,
|
||||
TokenUtils.class
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -44,6 +45,8 @@ public class PrimitiveInjectionUnitTest {
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(testClasses)
|
||||
.addAsResource("publicKey.pem")
|
||||
.addAsResource("privateKey.pem")
|
||||
.addAsResource("Token1.json")
|
||||
.addAsResource("application.properties"));
|
||||
|
||||
@BeforeEach
|
||||
|
||||
@@ -21,7 +21,8 @@ import io.restassured.RestAssured;
|
||||
|
||||
public class PrincipalInjectionUnitTest {
|
||||
private static Class[] testClasses = {
|
||||
PrincipalInjectionEndpoint.class
|
||||
PrincipalInjectionEndpoint.class,
|
||||
TokenUtils.class
|
||||
};
|
||||
/**
|
||||
* The test generated JWT token string
|
||||
@@ -37,6 +38,8 @@ public class PrincipalInjectionUnitTest {
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(testClasses)
|
||||
.addAsResource("publicKey.pem")
|
||||
.addAsResource("privateKey.pem")
|
||||
.addAsResource("Token1.json")
|
||||
.addAsResource("application.properties"));
|
||||
|
||||
@BeforeEach
|
||||
|
||||
@@ -21,7 +21,8 @@ import io.restassured.RestAssured;
|
||||
|
||||
public class RequiredClaimsUnitTest {
|
||||
private static Class[] testClasses = {
|
||||
RequiredClaimsEndpoint.class
|
||||
RequiredClaimsEndpoint.class,
|
||||
TokenUtils.class
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -41,6 +42,8 @@ public class RequiredClaimsUnitTest {
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(testClasses)
|
||||
.addAsResource("publicKey.pem")
|
||||
.addAsResource("privateKey.pem")
|
||||
.addAsResource("RequiredClaims.json")
|
||||
.addAsResource("application.properties"));
|
||||
|
||||
@BeforeEach
|
||||
|
||||
@@ -17,7 +17,8 @@ import io.restassured.response.Response;
|
||||
|
||||
public class RolesAllowedUnitTest {
|
||||
private static Class[] testClasses = {
|
||||
RolesEndpoint.class
|
||||
RolesEndpoint.class,
|
||||
TokenUtils.class
|
||||
};
|
||||
/**
|
||||
* The test generated JWT token string
|
||||
@@ -33,6 +34,9 @@ public class RolesAllowedUnitTest {
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(testClasses)
|
||||
.addAsResource("publicKey.pem")
|
||||
.addAsResource("privateKey.pem")
|
||||
.addAsResource("Token1.json")
|
||||
.addAsResource("Token2.json")
|
||||
.addAsResource("application.properties"));
|
||||
|
||||
@BeforeEach
|
||||
|
||||
@@ -20,7 +20,8 @@ import io.restassured.response.Response;
|
||||
public class ScopingUnitTest {
|
||||
private static Class<?>[] testClasses = {
|
||||
DefaultScopedEndpoint.class,
|
||||
RequestScopedEndpoint.class
|
||||
RequestScopedEndpoint.class,
|
||||
TokenUtils.class
|
||||
};
|
||||
|
||||
@RegisterExtension
|
||||
@@ -28,6 +29,9 @@ public class ScopingUnitTest {
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(testClasses)
|
||||
.addAsResource("publicKey.pem")
|
||||
.addAsResource("privateKey.pem")
|
||||
.addAsResource("Token1.json")
|
||||
.addAsResource("Token2.json")
|
||||
.addAsResource("application.properties"));
|
||||
|
||||
@Test
|
||||
|
||||
@@ -19,6 +19,7 @@ public class ServletDestroyTestCase {
|
||||
static QuarkusUnitTest runner = new QuarkusUnitTest()
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(PreDestroyServlet.class))
|
||||
.setAllowTestClassOutsideDeployment(true)
|
||||
.setAfterUndeployListener(() -> {
|
||||
try {
|
||||
Assertions.assertEquals("Servlet Destroyed", Messages.MESSAGES.poll(2, TimeUnit.SECONDS));
|
||||
|
||||
@@ -32,7 +32,8 @@ public class CoresSecurityTestCase {
|
||||
static QuarkusUnitTest test = new QuarkusUnitTest().setArchiveProducer(new Supplier<JavaArchive>() {
|
||||
@Override
|
||||
public JavaArchive get() {
|
||||
return ShrinkWrap.create(JavaArchive.class).addClasses(TestIdentityProvider.class, PathHandler.class)
|
||||
return ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(TestIdentityProvider.class, TestIdentityController.class, PathHandler.class)
|
||||
.addAsResource(new StringAsset(APP_PROPS), "application.properties");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -32,7 +32,8 @@ public class DefaultDenyTestCase {
|
||||
static QuarkusUnitTest test = new QuarkusUnitTest().setArchiveProducer(new Supplier<JavaArchive>() {
|
||||
@Override
|
||||
public JavaArchive get() {
|
||||
return ShrinkWrap.create(JavaArchive.class).addClasses(TestIdentityProvider.class, PathHandler.class)
|
||||
return ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(TestIdentityProvider.class, TestIdentityController.class, PathHandler.class)
|
||||
.addAsResource(new StringAsset(APP_PROPS), "application.properties");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -35,7 +35,8 @@ public class FormAuthCookiesTestCase {
|
||||
@Override
|
||||
public JavaArchive get() {
|
||||
return ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(TestIdentityProvider.class, TestTrustedIdentityProvider.class, PathHandler.class)
|
||||
.addClasses(TestIdentityProvider.class, TestIdentityController.class, TestTrustedIdentityProvider.class,
|
||||
PathHandler.class)
|
||||
.addAsResource(new StringAsset(APP_PROPS), "application.properties");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -32,7 +32,8 @@ public class FormAuthNoRedirectTestCase {
|
||||
@Override
|
||||
public JavaArchive get() {
|
||||
return ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(TestIdentityProvider.class, TestTrustedIdentityProvider.class, PathHandler.class)
|
||||
.addClasses(TestIdentityProvider.class, TestIdentityController.class, TestTrustedIdentityProvider.class,
|
||||
PathHandler.class)
|
||||
.addAsResource(new StringAsset(APP_PROPS), "application.properties");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -33,7 +33,8 @@ public class FormAuthTestCase {
|
||||
@Override
|
||||
public JavaArchive get() {
|
||||
return ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(TestIdentityProvider.class, TestTrustedIdentityProvider.class, PathHandler.class)
|
||||
.addClasses(TestIdentityProvider.class, TestTrustedIdentityProvider.class, TestIdentityController.class,
|
||||
PathHandler.class)
|
||||
.addAsResource(new StringAsset(APP_PROPS), "application.properties");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -30,7 +30,8 @@ public class PermitDenyAllTestCase {
|
||||
static QuarkusUnitTest test = new QuarkusUnitTest().setArchiveProducer(new Supplier<JavaArchive>() {
|
||||
@Override
|
||||
public JavaArchive get() {
|
||||
return ShrinkWrap.create(JavaArchive.class).addClasses(TestIdentityProvider.class, PathHandler.class)
|
||||
return ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(TestIdentityController.class, TestIdentityProvider.class, PathHandler.class)
|
||||
.addAsResource(new StringAsset(APP_PROPS), "application.properties");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -33,7 +33,8 @@ public class RolesAllowedTestCase {
|
||||
static QuarkusUnitTest test = new QuarkusUnitTest().setArchiveProducer(new Supplier<JavaArchive>() {
|
||||
@Override
|
||||
public JavaArchive get() {
|
||||
return ShrinkWrap.create(JavaArchive.class).addClasses(TestIdentityProvider.class, PathHandler.class)
|
||||
return ShrinkWrap.create(JavaArchive.class)
|
||||
.addClasses(TestIdentityController.class, TestIdentityProvider.class, PathHandler.class)
|
||||
.addAsResource(new StringAsset(APP_PROPS), "application.properties");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -21,7 +21,7 @@ public class CodecTest {
|
||||
@RegisterExtension
|
||||
static final QuarkusUnitTest config = new QuarkusUnitTest()
|
||||
.setArchiveProducer(() -> ShrinkWrap
|
||||
.create(JavaArchive.class).addClasses(MyBean.class, MyPetCodec.class));
|
||||
.create(JavaArchive.class).addClasses(MyBean.class, MyPetCodec.class, Person.class, Pet.class));
|
||||
|
||||
@Inject
|
||||
MyBean bean;
|
||||
|
||||
@@ -9,7 +9,6 @@ import java.util.Map;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.jboss.logging.Logger;
|
||||
import org.jboss.shrinkwrap.api.ShrinkWrap;
|
||||
import org.jboss.shrinkwrap.api.spec.JavaArchive;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -25,8 +24,6 @@ import io.quarkus.vault.test.VaultTestLifecycleManager;
|
||||
@QuarkusTestResource(VaultTestLifecycleManager.class)
|
||||
public class VaultAppRoleITCase {
|
||||
|
||||
private static final Logger log = Logger.getLogger(VaultITCase.class);
|
||||
|
||||
@RegisterExtension
|
||||
static final QuarkusUnitTest config = new QuarkusUnitTest()
|
||||
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
|
||||
|
||||
@@ -50,6 +50,8 @@ import org.junit.jupiter.api.extension.TestInstantiationException;
|
||||
import io.quarkus.bootstrap.app.CuratedApplication;
|
||||
import io.quarkus.bootstrap.app.QuarkusBootstrap;
|
||||
import io.quarkus.bootstrap.app.RunningQuarkusApplication;
|
||||
import io.quarkus.bootstrap.classloading.ClassPathElement;
|
||||
import io.quarkus.bootstrap.classloading.QuarkusClassLoader;
|
||||
import io.quarkus.builder.BuildChainBuilder;
|
||||
import io.quarkus.builder.BuildContext;
|
||||
import io.quarkus.builder.BuildException;
|
||||
@@ -96,6 +98,8 @@ public class QuarkusUnitTest
|
||||
private Class<?> actualTestClass;
|
||||
private Object actualTestInstance;
|
||||
|
||||
private boolean allowTestClassOutsideDeployment;
|
||||
|
||||
public QuarkusUnitTest setExpectedException(Class<? extends Throwable> expectedException) {
|
||||
return assertException(t -> {
|
||||
Throwable i = t;
|
||||
@@ -161,6 +165,16 @@ public class QuarkusUnitTest
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Normally access to any test classes that are not packaged in the deployment will result
|
||||
* in a ClassNotFoundException. If this is true then access is allowed, which can be useful
|
||||
* when testing shutdown behaviour.
|
||||
*/
|
||||
public QuarkusUnitTest setAllowTestClassOutsideDeployment(boolean allowTestClassOutsideDeployment) {
|
||||
this.allowTestClassOutsideDeployment = allowTestClassOutsideDeployment;
|
||||
return this;
|
||||
}
|
||||
|
||||
private void exportArchive(Path deploymentDir, Class<?> testClass) {
|
||||
try {
|
||||
JavaArchive archive = getArchiveProducerOrDefault();
|
||||
@@ -362,11 +376,18 @@ public class QuarkusUnitTest
|
||||
final Path testLocation = PathTestHelper.getTestClassesLocation(testClass);
|
||||
|
||||
try {
|
||||
curatedApplication = QuarkusBootstrap.builder(deploymentDir)
|
||||
QuarkusBootstrap.Builder builder = QuarkusBootstrap.builder(deploymentDir)
|
||||
.setMode(QuarkusBootstrap.Mode.TEST)
|
||||
.addExcludedPath(testLocation)
|
||||
.setProjectRoot(testLocation)
|
||||
.build().bootstrap();
|
||||
.setProjectRoot(testLocation);
|
||||
if (!allowTestClassOutsideDeployment) {
|
||||
builder
|
||||
.setBaseClassLoader(
|
||||
QuarkusClassLoader
|
||||
.builder("QuarkusUnitTest ClassLoader", getClass().getClassLoader(), false)
|
||||
.addBannedElement(ClassPathElement.fromPath(testLocation)).build());
|
||||
}
|
||||
curatedApplication = builder.build().bootstrap();
|
||||
|
||||
runningQuarkusApplication = new AugmentActionImpl(curatedApplication, customizers)
|
||||
.createInitialRuntimeApplication()
|
||||
|
||||
Reference in New Issue
Block a user