refactor: supported unified test cases provider

This commit is contained in:
ReaJason
2025-02-23 16:44:35 +08:00
parent f1d797295c
commit 7e84cab7bc
76 changed files with 634 additions and 1952 deletions
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.wildfly;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/**
* @author ReaJason
@@ -41,27 +42,10 @@ public class Wildfly18ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.Undertow;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.wildfly;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -41,27 +43,10 @@ public class Wildfly23ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.Undertow;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.wildfly;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/**
* @author ReaJason
@@ -41,22 +42,11 @@ public class Wildfly30ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
Server server = Server.Undertow;
Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_SERVLET, ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
null, Set.of(ShellTool.AntSword) // AntSword not support jakarta
);
}
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.wildfly;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
@@ -14,7 +15,9 @@ import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Triple;
import java.util.Set;
import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -44,42 +47,13 @@ public class Wildfly9ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
// arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar)
Server server = Server.Undertow;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.ScriptEngine);
Set<Triple<String, ShellTool, Packers>> unSupportedCases = Set.of(
Triple.of(ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar) // Request ClassNotFound in module
);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, unSupportedCases);
}
@AfterAll