refactor: supported unified test cases provider

This commit is contained in:
ReaJason
2025-02-23 16:44:35 +08:00
parent 72370a3b84
commit ede78f3efc
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