From 7e84cab7bc3dd623910a4ac504ad3af5e4f6840c Mon Sep 17 00:00:00 2001 From: ReaJason Date: Sun, 23 Feb 2025 16:44:35 +0800 Subject: [PATCH] refactor: supported unified test cases provider --- .../com/reajason/javaweb/memshell/Server.java | 151 +++++++++++++++++ .../reajason/javaweb/memshell/ShellTool.java | 156 ------------------ .../memshell/generator/ListenerGenerator.java | 6 - .../memshell/server/AbstractShell.java | 8 +- .../javaweb/memshell/server/BesShell.java | 2 +- .../memshell/server/GlassFishShell.java | 2 +- .../memshell/server/InforSuiteShell.java | 2 +- .../javaweb/memshell/server/JbossShell.java | 2 +- .../javaweb/memshell/server/JettyShell.java | 2 +- .../javaweb/memshell/server/ResinShell.java | 2 +- .../memshell/server/SpringWebFluxShell.java | 2 +- .../memshell/server/SpringWebMvcShell.java | 2 +- .../javaweb/memshell/server/TomcatShell.java | 2 +- .../memshell/server/TongWeb6Shell.java | 2 +- .../memshell/server/TongWeb7Shell.java | 2 +- .../memshell/server/UndertowShell.java | 2 +- .../memshell/server/WebLogicShell.java | 2 +- .../memshell/server/WebSphereShell.java | 2 +- .../javaweb/memshell/server/XxlJobShell.java | 2 +- generator/src/main/resources/shell.jsp | 7 - .../generator/ValveGeneratorTest.java | 1 - .../integration/ShellAssertionTool.java | 7 +- .../integration/TestCasesProvider.java | 62 +++++++ .../glassfish/GlassFish3ContainerTest.java | 60 ++----- .../glassfish/GlassFish4ContainerTest.java | 48 +----- .../glassfish/GlassFish501ContainerTest.java | 47 +----- .../glassfish/GlassFish510ContainerTest.java | 60 +------ .../glassfish/GlassFish6ContainerTest.java | 45 ++--- .../glassfish/GlassFish7ContainerTest.java | 33 ++-- .../jbossas/Jboss423ContainerTest.java | 52 +----- .../jbossas/Jboss510ContainerTest.java | 53 ++---- .../jbossas/Jboss610ContainerTest.java | 47 +----- .../jbossas/Jboss711ContainerTest.java | 38 +---- .../jbosseap/JbossEap6ContainerTest.java | 37 +---- .../jbosseap/JbossEap7ContainerTest.java | 47 +----- .../jetty/Jetty10ContainerTest.java | 34 +--- .../jetty/Jetty11ContainerTest.java | 40 +---- .../jetty/Jetty61ContainerTest.java | 46 +----- .../jetty/Jetty76ContainerTest.java | 43 +---- .../jetty/Jetty81ContainerTest.java | 42 +---- .../jetty/Jetty92ContainerTest.java | 42 +---- .../jetty/Jetty93ContainerTest.java | 42 +---- .../jetty/Jetty94ContainerTest.java | 42 +---- .../payara/Payara5201ContainerTest.java | 70 ++------ .../payara/Payara520225ContainerTest.java | 47 +----- .../payara/Payara620222ContainerTest.java | 44 ++--- .../resin/Resin3116ContainerTest.java | 42 +---- .../resin/Resin318ContainerTest.java | 48 +----- .../resin/Resin4058ContainerTest.java | 42 +---- .../resin/Resin4067ContainerTest.java | 42 +---- .../springmvc/SpringBoot2ContainerTest.java | 47 +----- .../SpringBoot2WarContainerTest.java | 32 +--- .../springmvc/SpringBoot3ContainerTest.java | 19 +-- .../SpringBoot2WebFluxContainerTest.java | 17 +- .../SpringBoot3WebFluxContainerTest.java | 17 +- .../tomcat/Tomcat10ContainerTest.java | 63 +------ .../tomcat/Tomcat11ContainerTest.java | 36 +--- .../tomcat/Tomcat11JRE21ContainerTest.java | 36 +--- .../tomcat/Tomcat5ContainerTest.java | 71 +------- .../tomcat/Tomcat6ContainerTest.java | 57 +------ .../tomcat/Tomcat7ContainerTest.java | 57 +------ .../tomcat/Tomcat8ContainerTest.java | 77 +-------- .../tomcat/Tomcat9ContainerTest.java | 57 +------ .../weblogic/WebLogic1036ContainerTest.java | 35 ++-- .../weblogic/WebLogic12214ContainerTest.java | 32 +--- .../weblogic/WebLogic14110ContainerTest.java | 32 +--- .../websphere/WebSphere855ContainerTest.java | 28 +--- .../websphere/WebSphere905ContainerTest.java | 27 +-- .../websphere7/WebSphere700ContainerTest.java | 32 +--- .../wildfly/Wildfly18ContainerTest.java | 32 +--- .../wildfly/Wildfly23ContainerTest.java | 27 +-- .../wildfly/Wildfly30ContainerTest.java | 28 +--- .../wildfly/Wildfly9ContainerTest.java | 44 +---- .../xxljob/XxlJob220ContainerTest.java | 11 +- .../xxljob/XxlJob230ContainerTest.java | 10 +- .../GodzillaServletInitialHandlerAdvisor.java | 1 - 76 files changed, 634 insertions(+), 1952 deletions(-) create mode 100644 integration-test/src/test/java/com/reajason/javaweb/integration/TestCasesProvider.java diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/Server.java b/generator/src/main/java/com/reajason/javaweb/memshell/Server.java index bad2ef60..c3f6e61b 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/Server.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/Server.java @@ -1,8 +1,50 @@ package com.reajason.javaweb.memshell; import com.reajason.javaweb.memshell.server.*; +import com.reajason.javaweb.memshell.shelltool.antsword.*; +import com.reajason.javaweb.memshell.shelltool.antsword.jetty.AntSwordHandlerAdvisor; +import com.reajason.javaweb.memshell.shelltool.antsword.undertow.AntSwordServletInitialHandlerAdvisor; +import com.reajason.javaweb.memshell.shelltool.behinder.*; +import com.reajason.javaweb.memshell.shelltool.behinder.jetty.BehinderHandlerAdvisor; +import com.reajason.javaweb.memshell.shelltool.behinder.undertow.BehinderServletInitialHandlerAdvisor; +import com.reajason.javaweb.memshell.shelltool.command.*; +import com.reajason.javaweb.memshell.shelltool.command.jetty.CommandHandlerAdvisor; +import com.reajason.javaweb.memshell.shelltool.command.undertow.CommandServletInitialHandlerAdvisor; +import com.reajason.javaweb.memshell.shelltool.godzilla.*; +import com.reajason.javaweb.memshell.shelltool.godzilla.jetty.GodzillaHandlerAdvisor; +import com.reajason.javaweb.memshell.shelltool.godzilla.undertow.GodzillaServletInitialHandlerAdvisor; +import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter; +import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Listener; +import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet; +import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve; +import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerFunction; +import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerMethod; +import com.reajason.javaweb.memshell.springwebflux.command.CommandNettyHandler; +import com.reajason.javaweb.memshell.springwebflux.command.CommandWebFilter; +import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaHandlerFunction; +import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaHandlerMethod; +import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaNettyHandler; +import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaWebFilter; +import com.reajason.javaweb.memshell.springwebflux.suo5.Suo5WebFilter; +import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordControllerHandler; +import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordInterceptor; +import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordServletAdvisor; +import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderControllerHandler; +import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderInterceptor; +import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderServletAdvisor; +import com.reajason.javaweb.memshell.springwebmvc.command.CommandControllerHandler; +import com.reajason.javaweb.memshell.springwebmvc.command.CommandInterceptor; +import com.reajason.javaweb.memshell.springwebmvc.command.CommandServletAdvisor; +import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaControllerHandler; +import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaInterceptor; +import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaServletAdvisor; +import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5ControllerHandler; +import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5Interceptor; import lombok.Getter; +import static com.reajason.javaweb.memshell.ShellType.*; +import static com.reajason.javaweb.memshell.server.ServerToolRegistry.addToolMapping; + /** * @author ReaJason * @since 2024/11/22 @@ -93,4 +135,113 @@ public enum Server { Server(AbstractShell shell) { this.shell = shell; } + + static { + addToolMapping(ShellTool.Command, ToolMapping.builder() + .addShellClass(SERVLET, CommandServlet.class) + .addShellClass(JAKARTA_SERVLET, CommandServlet.class) + .addShellClass(FILTER, CommandFilter.class) + .addShellClass(JAKARTA_FILTER, CommandFilter.class) + .addShellClass(LISTENER, CommandListener.class) + .addShellClass(JAKARTA_LISTENER, CommandListener.class) + .addShellClass(VALVE, CommandValve.class) + .addShellClass(JAKARTA_VALVE, CommandValve.class) + .addShellClass(WEBSOCKET, CommandWebSocket.class) + .addShellClass(SPRING_WEBMVC_INTERCEPTOR, CommandInterceptor.class) + .addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, CommandInterceptor.class) + .addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, CommandControllerHandler.class) + .addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, CommandControllerHandler.class) + .addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, CommandServletAdvisor.class) + .addShellClass(SPRING_WEBFLUX_WEB_FILTER, CommandWebFilter.class) + .addShellClass(SPRING_WEBFLUX_HANDLER_METHOD, CommandHandlerMethod.class) + .addShellClass(SPRING_WEBFLUX_HANDLER_FUNCTION, CommandHandlerFunction.class) + .addShellClass(NETTY_HANDLER, CommandNettyHandler.class) + .addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class) + .addShellClass(CATALINA_AGENT_CONTEXT_VALVE, CommandFilterChainAdvisor.class) + .addShellClass(JETTY_AGENT_HANDLER, CommandHandlerAdvisor.class) + .addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, CommandServletInitialHandlerAdvisor.class) + .addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, CommandFilterChainAdvisor.class) + .addShellClass(WAS_AGENT_FILTER_MANAGER, CommandFilterChainAdvisor.class) + .build()); + + addToolMapping(ShellTool.Godzilla, ToolMapping.builder() + .addShellClass(SERVLET, GodzillaServlet.class) + .addShellClass(JAKARTA_SERVLET, GodzillaServlet.class) + .addShellClass(FILTER, GodzillaFilter.class) + .addShellClass(JAKARTA_FILTER, GodzillaFilter.class) + .addShellClass(LISTENER, GodzillaListener.class) + .addShellClass(JAKARTA_LISTENER, GodzillaListener.class) + .addShellClass(VALVE, GodzillaValve.class) + .addShellClass(JAKARTA_VALVE, GodzillaValve.class) + .addShellClass(SPRING_WEBMVC_INTERCEPTOR, GodzillaInterceptor.class) + .addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, GodzillaInterceptor.class) + .addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, GodzillaControllerHandler.class) + .addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, GodzillaControllerHandler.class) + .addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, GodzillaServletAdvisor.class) + .addShellClass(SPRING_WEBFLUX_WEB_FILTER, GodzillaWebFilter.class) + .addShellClass(SPRING_WEBFLUX_HANDLER_METHOD, GodzillaHandlerMethod.class) + .addShellClass(SPRING_WEBFLUX_HANDLER_FUNCTION, GodzillaHandlerFunction.class) + .addShellClass(NETTY_HANDLER, GodzillaNettyHandler.class) + .addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class) + .addShellClass(CATALINA_AGENT_CONTEXT_VALVE, GodzillaFilterChainAdvisor.class) + .addShellClass(JETTY_AGENT_HANDLER, GodzillaHandlerAdvisor.class) + .addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, GodzillaServletInitialHandlerAdvisor.class) + .addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, GodzillaFilterChainAdvisor.class) + .addShellClass(WAS_AGENT_FILTER_MANAGER, GodzillaFilterChainAdvisor.class) + .build()); + + addToolMapping(ShellTool.Behinder, ToolMapping.builder() + .addShellClass(SERVLET, BehinderServlet.class) + .addShellClass(JAKARTA_SERVLET, BehinderServlet.class) + .addShellClass(FILTER, BehinderFilter.class) + .addShellClass(JAKARTA_FILTER, BehinderFilter.class) + .addShellClass(LISTENER, BehinderListener.class) + .addShellClass(JAKARTA_LISTENER, BehinderListener.class) + .addShellClass(VALVE, BehinderValve.class) + .addShellClass(JAKARTA_VALVE, BehinderValve.class) + .addShellClass(SPRING_WEBMVC_INTERCEPTOR, BehinderInterceptor.class) + .addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, BehinderInterceptor.class) + .addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, BehinderControllerHandler.class) + .addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, BehinderControllerHandler.class) + .addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, BehinderServletAdvisor.class) + .addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class) + .addShellClass(CATALINA_AGENT_CONTEXT_VALVE, BehinderFilterChainAdvisor.class) + .addShellClass(JETTY_AGENT_HANDLER, BehinderHandlerAdvisor.class) + .addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, BehinderServletInitialHandlerAdvisor.class) + .addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, BehinderFilterChainAdvisor.class) + .addShellClass(WAS_AGENT_FILTER_MANAGER, BehinderFilterChainAdvisor.class) + .build()); + + addToolMapping(ShellTool.Suo5, ToolMapping.builder() + .addShellClass(SERVLET, Suo5Servlet.class) + .addShellClass(JAKARTA_SERVLET, Suo5Servlet.class) + .addShellClass(FILTER, Suo5Filter.class) + .addShellClass(JAKARTA_FILTER, Suo5Filter.class) + .addShellClass(LISTENER, Suo5Listener.class) + .addShellClass(JAKARTA_LISTENER, Suo5Listener.class) + .addShellClass(VALVE, Suo5Valve.class) + .addShellClass(JAKARTA_VALVE, Suo5Valve.class) + .addShellClass(SPRING_WEBMVC_INTERCEPTOR, Suo5Interceptor.class) + .addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, Suo5Interceptor.class) + .addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, Suo5ControllerHandler.class) + .addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, Suo5ControllerHandler.class) + .addShellClass(SPRING_WEBFLUX_WEB_FILTER, Suo5WebFilter.class) + .build()); + + addToolMapping(ShellTool.AntSword, ToolMapping.builder() + .addShellClass(SERVLET, AntSwordServlet.class) + .addShellClass(FILTER, AntSwordFilter.class) + .addShellClass(LISTENER, AntSwordListener.class) + .addShellClass(VALVE, AntSwordValve.class) + .addShellClass(SPRING_WEBMVC_INTERCEPTOR, AntSwordInterceptor.class) + .addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, AntSwordControllerHandler.class) + .addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, AntSwordServletAdvisor.class) + .addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class) + .addShellClass(CATALINA_AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class) + .addShellClass(JETTY_AGENT_HANDLER, AntSwordHandlerAdvisor.class) + .addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, AntSwordServletInitialHandlerAdvisor.class) + .addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, AntSwordFilterChainAdvisor.class) + .addShellClass(WAS_AGENT_FILTER_MANAGER, AntSwordFilterChainAdvisor.class) + .build()); + } } \ No newline at end of file diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/ShellTool.java b/generator/src/main/java/com/reajason/javaweb/memshell/ShellTool.java index 0a8a6296..41cfce66 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/ShellTool.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/ShellTool.java @@ -1,49 +1,5 @@ package com.reajason.javaweb.memshell; -import com.reajason.javaweb.memshell.server.ToolMapping; -import com.reajason.javaweb.memshell.shelltool.antsword.*; -import com.reajason.javaweb.memshell.shelltool.antsword.jetty.AntSwordHandlerAdvisor; -import com.reajason.javaweb.memshell.shelltool.antsword.undertow.AntSwordServletInitialHandlerAdvisor; -import com.reajason.javaweb.memshell.shelltool.behinder.*; -import com.reajason.javaweb.memshell.shelltool.behinder.jetty.BehinderHandlerAdvisor; -import com.reajason.javaweb.memshell.shelltool.behinder.undertow.BehinderServletInitialHandlerAdvisor; -import com.reajason.javaweb.memshell.shelltool.command.*; -import com.reajason.javaweb.memshell.shelltool.command.jetty.CommandHandlerAdvisor; -import com.reajason.javaweb.memshell.shelltool.command.undertow.CommandServletInitialHandlerAdvisor; -import com.reajason.javaweb.memshell.shelltool.godzilla.*; -import com.reajason.javaweb.memshell.shelltool.godzilla.jetty.GodzillaHandlerAdvisor; -import com.reajason.javaweb.memshell.shelltool.godzilla.undertow.GodzillaServletInitialHandlerAdvisor; -import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter; -import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Listener; -import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet; -import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve; -import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerFunction; -import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerMethod; -import com.reajason.javaweb.memshell.springwebflux.command.CommandNettyHandler; -import com.reajason.javaweb.memshell.springwebflux.command.CommandWebFilter; -import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaHandlerFunction; -import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaHandlerMethod; -import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaNettyHandler; -import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaWebFilter; -import com.reajason.javaweb.memshell.springwebflux.suo5.Suo5WebFilter; -import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordControllerHandler; -import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordInterceptor; -import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordServletAdvisor; -import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderControllerHandler; -import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderInterceptor; -import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderServletAdvisor; -import com.reajason.javaweb.memshell.springwebmvc.command.CommandControllerHandler; -import com.reajason.javaweb.memshell.springwebmvc.command.CommandInterceptor; -import com.reajason.javaweb.memshell.springwebmvc.command.CommandServletAdvisor; -import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaControllerHandler; -import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaInterceptor; -import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaServletAdvisor; -import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5ControllerHandler; -import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5Interceptor; - -import static com.reajason.javaweb.memshell.ShellType.*; -import static com.reajason.javaweb.memshell.server.ServerToolRegistry.addToolMapping; - /** * @author ReaJason * @since 2024/11/22 @@ -75,116 +31,4 @@ public enum ShellTool { AntSword, ; - - - static { - addToolMapping(ShellTool.Command, ToolMapping.builder() - .addShellClass(SERVLET, CommandServlet.class) - .addShellClass(JAKARTA_SERVLET, CommandServlet.class) - .addShellClass(FILTER, CommandFilter.class) - .addShellClass(JAKARTA_FILTER, CommandFilter.class) - .addShellClass(LISTENER, CommandListener.class) - .addShellClass(JAKARTA_LISTENER, CommandListener.class) - .addShellClass(VALVE, CommandValve.class) - .addShellClass(JAKARTA_VALVE, CommandValve.class) - .addShellClass(WEBSOCKET, CommandWebSocket.class) - .addShellClass(SPRING_WEBMVC_INTERCEPTOR, CommandInterceptor.class) - .addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, CommandInterceptor.class) - .addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, CommandControllerHandler.class) - .addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, CommandControllerHandler.class) - .addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, CommandServletAdvisor.class) - .addShellClass(SPRING_WEBFLUX_WEB_FILTER, CommandWebFilter.class) - .addShellClass(SPRING_WEBFLUX_HANDLER_METHOD, CommandHandlerMethod.class) - .addShellClass(SPRING_WEBFLUX_HANDLER_FUNCTION, CommandHandlerFunction.class) - .addShellClass(NETTY_HANDLER, CommandNettyHandler.class) - .addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class) - .addShellClass(CATALINA_AGENT_CONTEXT_VALVE, CommandFilterChainAdvisor.class) - .addShellClass(JETTY_AGENT_HANDLER, CommandHandlerAdvisor.class) - .addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, CommandServletInitialHandlerAdvisor.class) - .addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, CommandFilterChainAdvisor.class) - .addShellClass(WAS_AGENT_FILTER_MANAGER, CommandFilterChainAdvisor.class) - .build()); - - addToolMapping(ShellTool.Godzilla, ToolMapping.builder() - .addShellClass(SERVLET, GodzillaServlet.class) - .addShellClass(JAKARTA_SERVLET, GodzillaServlet.class) - .addShellClass(FILTER, GodzillaFilter.class) - .addShellClass(JAKARTA_FILTER, GodzillaFilter.class) - .addShellClass(LISTENER, GodzillaListener.class) - .addShellClass(JAKARTA_LISTENER, GodzillaListener.class) - .addShellClass(VALVE, GodzillaValve.class) - .addShellClass(JAKARTA_VALVE, GodzillaValve.class) - .addShellClass(SPRING_WEBMVC_INTERCEPTOR, GodzillaInterceptor.class) - .addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, GodzillaInterceptor.class) - .addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, GodzillaControllerHandler.class) - .addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, GodzillaControllerHandler.class) - .addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, GodzillaServletAdvisor.class) - .addShellClass(SPRING_WEBFLUX_WEB_FILTER, GodzillaWebFilter.class) - .addShellClass(SPRING_WEBFLUX_HANDLER_METHOD, GodzillaHandlerMethod.class) - .addShellClass(SPRING_WEBFLUX_HANDLER_FUNCTION, GodzillaHandlerFunction.class) - .addShellClass(NETTY_HANDLER, GodzillaNettyHandler.class) - .addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class) - .addShellClass(CATALINA_AGENT_CONTEXT_VALVE, GodzillaFilterChainAdvisor.class) - .addShellClass(JETTY_AGENT_HANDLER, GodzillaHandlerAdvisor.class) - .addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, GodzillaServletInitialHandlerAdvisor.class) - .addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, GodzillaFilterChainAdvisor.class) - .addShellClass(WAS_AGENT_FILTER_MANAGER, GodzillaFilterChainAdvisor.class) - .build()); - - addToolMapping(ShellTool.Behinder, ToolMapping.builder() - .addShellClass(SERVLET, BehinderServlet.class) - .addShellClass(JAKARTA_SERVLET, BehinderServlet.class) - .addShellClass(FILTER, BehinderFilter.class) - .addShellClass(JAKARTA_FILTER, BehinderFilter.class) - .addShellClass(LISTENER, BehinderListener.class) - .addShellClass(JAKARTA_LISTENER, BehinderListener.class) - .addShellClass(VALVE, BehinderValve.class) - .addShellClass(JAKARTA_VALVE, BehinderValve.class) - .addShellClass(SPRING_WEBMVC_INTERCEPTOR, BehinderInterceptor.class) - .addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, BehinderInterceptor.class) - .addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, BehinderControllerHandler.class) - .addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, BehinderControllerHandler.class) - .addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, BehinderServletAdvisor.class) - .addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class) - .addShellClass(CATALINA_AGENT_CONTEXT_VALVE, BehinderFilterChainAdvisor.class) - .addShellClass(JETTY_AGENT_HANDLER, BehinderHandlerAdvisor.class) - .addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, BehinderServletInitialHandlerAdvisor.class) - .addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, BehinderFilterChainAdvisor.class) - .addShellClass(WAS_AGENT_FILTER_MANAGER, BehinderFilterChainAdvisor.class) - .build()); - - addToolMapping(ShellTool.Suo5, ToolMapping.builder() - .addShellClass(SERVLET, Suo5Servlet.class) - .addShellClass(JAKARTA_SERVLET, Suo5Servlet.class) - .addShellClass(FILTER, Suo5Filter.class) - .addShellClass(JAKARTA_FILTER, Suo5Filter.class) - .addShellClass(LISTENER, Suo5Listener.class) - .addShellClass(JAKARTA_LISTENER, Suo5Listener.class) - .addShellClass(VALVE, Suo5Valve.class) - .addShellClass(JAKARTA_VALVE, Suo5Valve.class) - .addShellClass(SPRING_WEBMVC_INTERCEPTOR, Suo5Interceptor.class) - .addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, Suo5Interceptor.class) - .addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, Suo5ControllerHandler.class) - .addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, Suo5ControllerHandler.class) - .addShellClass(SPRING_WEBFLUX_WEB_FILTER, Suo5WebFilter.class) - .build()); - - addToolMapping(ShellTool.AntSword, ToolMapping.builder() - .addShellClass(SERVLET, AntSwordServlet.class) - .addShellClass(FILTER, AntSwordFilter.class) - .addShellClass(LISTENER, AntSwordListener.class) - .addShellClass(VALVE, AntSwordValve.class) - .addShellClass(SPRING_WEBMVC_INTERCEPTOR, AntSwordInterceptor.class) - .addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, AntSwordInterceptor.class) - .addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, AntSwordControllerHandler.class) - .addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, AntSwordControllerHandler.class) - .addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, AntSwordServletAdvisor.class) - .addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class) - .addShellClass(CATALINA_AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class) - .addShellClass(JETTY_AGENT_HANDLER, AntSwordHandlerAdvisor.class) - .addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, AntSwordServletInitialHandlerAdvisor.class) - .addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, AntSwordFilterChainAdvisor.class) - .addShellClass(WAS_AGENT_FILTER_MANAGER, AntSwordFilterChainAdvisor.class) - .build()); - } } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/generator/ListenerGenerator.java b/generator/src/main/java/com/reajason/javaweb/memshell/generator/ListenerGenerator.java index cd982f0e..eb25f87e 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/generator/ListenerGenerator.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/generator/ListenerGenerator.java @@ -1,12 +1,6 @@ package com.reajason.javaweb.memshell.generator; import com.reajason.javaweb.buddy.MethodCallReplaceVisitorWrapper; -import com.reajason.javaweb.memshell.ShellTool; -import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordListener; -import com.reajason.javaweb.memshell.shelltool.behinder.BehinderListener; -import com.reajason.javaweb.memshell.shelltool.command.CommandListener; -import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaListener; -import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Listener; import com.reajason.javaweb.memshell.utils.CommonUtil; import com.reajason.javaweb.memshell.utils.ShellCommonUtil; import net.bytebuddy.ByteBuddy; diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/AbstractShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/AbstractShell.java index 9e2dcef4..6cde3ebb 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/AbstractShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/AbstractShell.java @@ -21,7 +21,7 @@ public abstract class AbstractShell { * * @return 注入器映射 */ - abstract InjectorMapping getShellInjectorMapping(); + public abstract InjectorMapping getShellInjectorMapping(); public Class getListenerInterceptor() { return null; @@ -42,7 +42,11 @@ public abstract class AbstractShell { if (toolMapping == null) { return Collections.emptySet(); } - return toolMapping.getSupportedShellTypes(); + return Collections.unmodifiableSet(toolMapping.getSupportedShellTypes()); + } + + public Set getSupportedShellTools(){ + return Collections.unmodifiableSet(map.keySet()); } public Pair, Class> getShellInjectorPair(ShellTool shellTool, String shellType) { diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/BesShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/BesShell.java index d42fd1ee..ebf62182 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/BesShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/BesShell.java @@ -16,7 +16,7 @@ public class BesShell extends AbstractShell { } @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(FILTER, BesFilterInjector.class) .addInjector(LISTENER, BesListenerInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/GlassFishShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/GlassFishShell.java index fa548ac6..62f6473d 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/GlassFishShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/GlassFishShell.java @@ -40,7 +40,7 @@ public class GlassFishShell extends AbstractShell { } @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(FILTER, GlassFishFilterInjector.class) .addInjector(JAKARTA_FILTER, GlassFishFilterInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/InforSuiteShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/InforSuiteShell.java index 3ff4061e..333cc8ed 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/InforSuiteShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/InforSuiteShell.java @@ -20,7 +20,7 @@ public class InforSuiteShell extends AbstractShell { } @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(FILTER, InforSuiteFilterInjector.class) .addInjector(JAKARTA_FILTER, InforSuiteFilterInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/JbossShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/JbossShell.java index 9da3481f..355a49ff 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/JbossShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/JbossShell.java @@ -20,7 +20,7 @@ public class JbossShell extends AbstractShell { } @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(FILTER, JbossFilterInjector.class) .addInjector(LISTENER, JbossListenerInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/JettyShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/JettyShell.java index 8fb8f27a..6a2fc11c 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/JettyShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/JettyShell.java @@ -34,7 +34,7 @@ public class JettyShell extends AbstractShell { } @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(SERVLET, JettyServletInjector.class) .addInjector(JAKARTA_SERVLET, JettyServletInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/ResinShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/ResinShell.java index 238f96a6..e89a63d6 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/ResinShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/ResinShell.java @@ -29,7 +29,7 @@ public class ResinShell extends AbstractShell { } @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(SERVLET, ResinServletInjector.class) .addInjector(FILTER, ResinFilterInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/SpringWebFluxShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/SpringWebFluxShell.java index 424ba6fb..3aa983c0 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/SpringWebFluxShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/SpringWebFluxShell.java @@ -14,7 +14,7 @@ import static com.reajason.javaweb.memshell.ShellType.*; public class SpringWebFluxShell extends AbstractShell { @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(SPRING_WEBFLUX_WEB_FILTER, SpringWebFluxWebFilterInjector.class) .addInjector(SPRING_WEBFLUX_HANDLER_METHOD, SpringWebFluxHandlerMethodInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/SpringWebMvcShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/SpringWebMvcShell.java index f9e5ccb8..4cd5d64a 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/SpringWebMvcShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/SpringWebMvcShell.java @@ -13,7 +13,7 @@ import static com.reajason.javaweb.memshell.ShellType.*; public class SpringWebMvcShell extends AbstractShell { @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(SPRING_WEBMVC_INTERCEPTOR, SpringWebMvcInterceptorInjector.class) .addInjector(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, SpringWebMvcInterceptorInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/TomcatShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/TomcatShell.java index 5d5e19fe..ea8fa840 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/TomcatShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/TomcatShell.java @@ -31,7 +31,7 @@ public class TomcatShell extends AbstractShell { } @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(SERVLET, TomcatServletInjector.class) .addInjector(JAKARTA_SERVLET, TomcatServletInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/TongWeb6Shell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/TongWeb6Shell.java index 7ec87af8..7af4008b 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/TongWeb6Shell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/TongWeb6Shell.java @@ -16,7 +16,7 @@ public class TongWeb6Shell extends AbstractShell { } @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(FILTER, TongWebFilterInjector.class) .addInjector(JAKARTA_FILTER, TongWebFilterInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/TongWeb7Shell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/TongWeb7Shell.java index 2831ccd5..884178df 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/TongWeb7Shell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/TongWeb7Shell.java @@ -16,7 +16,7 @@ public class TongWeb7Shell extends AbstractShell { } @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(FILTER, TongWebFilterInjector.class) .addInjector(JAKARTA_FILTER, TongWebFilterInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/UndertowShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/UndertowShell.java index 48f7ea23..f0d2156d 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/UndertowShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/UndertowShell.java @@ -39,7 +39,7 @@ public class UndertowShell extends AbstractShell { } @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(SERVLET, UndertowServletInjector.class) .addInjector(JAKARTA_SERVLET, UndertowServletInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/WebLogicShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/WebLogicShell.java index 36aaa4e8..44b440db 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/WebLogicShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/WebLogicShell.java @@ -19,7 +19,7 @@ public class WebLogicShell extends AbstractShell { } @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(SERVLET, WebLogicServletInjector.class) .addInjector(FILTER, WebLogicFilterInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/WebSphereShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/WebSphereShell.java index c198092f..a2b4fd1b 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/WebSphereShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/WebSphereShell.java @@ -30,7 +30,7 @@ public class WebSphereShell extends AbstractShell { } @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(SERVLET, WebSphereServletInjector.class) .addInjector(FILTER, WebSphereFilterInjector.class) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/XxlJobShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/XxlJobShell.java index 822fbc7e..8483aa87 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/XxlJobShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/XxlJobShell.java @@ -11,7 +11,7 @@ import static com.reajason.javaweb.memshell.ShellType.NETTY_HANDLER; public class XxlJobShell extends AbstractShell { @Override - protected InjectorMapping getShellInjectorMapping() { + public InjectorMapping getShellInjectorMapping() { return InjectorMapping.builder() .addInjector(NETTY_HANDLER, XxlJobNettyHandlerInjector.class) .build(); diff --git a/generator/src/main/resources/shell.jsp b/generator/src/main/resources/shell.jsp index aec34696..6cacca09 100644 --- a/generator/src/main/resources/shell.jsp +++ b/generator/src/main/resources/shell.jsp @@ -1,10 +1,3 @@ -<%@ page import="java.lang.Class" %> -<%@ page import="java.lang.ClassLoader" %> -<%@ page import="java.lang.Exception" %> -<%@ page import="java.lang.Object" %> -<%@ page import="java.lang.Override" %> -<%@ page import="java.lang.String" %> -<%@ page import="java.lang.Thread" %> <%! public static class ClassDefiner extends ClassLoader { public ClassDefiner() { diff --git a/generator/src/test/java/com/reajason/javaweb/memshell/generator/ValveGeneratorTest.java b/generator/src/test/java/com/reajason/javaweb/memshell/generator/ValveGeneratorTest.java index 093296e2..04493b37 100644 --- a/generator/src/test/java/com/reajason/javaweb/memshell/generator/ValveGeneratorTest.java +++ b/generator/src/test/java/com/reajason/javaweb/memshell/generator/ValveGeneratorTest.java @@ -1,6 +1,5 @@ package com.reajason.javaweb.memshell.generator; -import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.shelltool.command.CommandValve; import net.bytebuddy.jar.asm.ClassReader; import net.bytebuddy.jar.asm.ClassVisitor; diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/ShellAssertionTool.java b/integration-test/src/test/java/com/reajason/javaweb/integration/ShellAssertionTool.java index a04e0b1d..b5d4602e 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/ShellAssertionTool.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/ShellAssertionTool.java @@ -1,14 +1,10 @@ package com.reajason.javaweb.integration; -import com.reajason.javaweb.memshell.ShellType; -import com.reajason.javaweb.memshell.MemShellGenerator; import com.reajason.javaweb.antsword.AntSwordManager; import com.reajason.javaweb.behinder.BehinderManager; import com.reajason.javaweb.godzilla.GodzillaManager; -import com.reajason.javaweb.memshell.Server; -import com.reajason.javaweb.memshell.ShellTool; +import com.reajason.javaweb.memshell.*; import com.reajason.javaweb.memshell.config.*; -import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.packer.jar.JarPacker; import com.reajason.javaweb.suo5.Suo5Manager; import lombok.SneakyThrows; @@ -17,6 +13,7 @@ import okhttp3.HttpUrl; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; +import org.junit.jupiter.api.Assumptions; import org.testcontainers.containers.GenericContainer; import org.testcontainers.shaded.org.apache.commons.io.FileUtils; import org.testcontainers.shaded.org.apache.commons.lang3.StringUtils; diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/TestCasesProvider.java b/integration-test/src/test/java/com/reajason/javaweb/integration/TestCasesProvider.java new file mode 100644 index 00000000..4f2f0ee8 --- /dev/null +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/TestCasesProvider.java @@ -0,0 +1,62 @@ +package com.reajason.javaweb.integration; + +import com.reajason.javaweb.memshell.Packers; +import com.reajason.javaweb.memshell.Server; +import com.reajason.javaweb.memshell.ShellTool; +import com.reajason.javaweb.memshell.ShellType; +import org.junit.jupiter.params.provider.Arguments; +import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Triple; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static org.junit.jupiter.params.provider.Arguments.arguments; + +/** + * @author ReaJason + * @since 2025/2/23 + */ +public class TestCasesProvider { + + public static Stream getTestCases(String imageName, Server server, Set testShellTypes, Set testPackers, Set> unSupportedCases) { + return getTestCases(imageName, server, testShellTypes, testPackers, unSupportedCases, null); + } + + public static Stream getTestCases(String imageName, Server server, Set testShellTypes, Set testPackers, Set> unSupportedCases, Set unSupportedShellTools) { + Set supportedShellTools = new HashSet<>(server.getShell().getSupportedShellTools()); + if (unSupportedShellTools != null) { + supportedShellTools.removeAll(unSupportedShellTools); + } + Set unSupported = unSupportedCases == null ? Collections.emptySet() : unSupportedCases.stream().map(i -> i.getLeft() + i.getMiddle() + i.getRight()).collect(Collectors.toSet()); + return supportedShellTools.stream() + .flatMap(supportedShellTool -> { + Set toolSupportedShellTypes = new HashSet<>(server.getShell().getSupportedShellTypes(supportedShellTool)); + toolSupportedShellTypes.retainAll(testShellTypes); + return toolSupportedShellTypes.stream().flatMap(supportedShellType -> { + if (supportedShellType.startsWith(ShellType.AGENT)) { + if (!unSupported.contains(supportedShellType + supportedShellTool + Packers.AgentJar)) { + return Stream.of(arguments(imageName, supportedShellType, supportedShellTool, Packers.AgentJar)); + } + return Stream.empty(); + } else { + return testPackers.stream() + .map(testPacker -> { + if (!unSupported.contains(supportedShellType + supportedShellTool + testPacker)) { + return arguments(imageName, supportedShellType, supportedShellTool, testPacker); + } else { + return null; + } + }).filter(Objects::nonNull); + } + }); + }); + } + + public static Stream getTestCases(String imageName, Server server, Set testShellTypes, Set testPackers) { + return getTestCases(imageName, server, testShellTypes, testPackers, null); + } +} diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish3ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish3ContainerTest.java index 8cca9f94..e19a157d 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish3ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish3ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.glassfish; -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,15 +16,16 @@ 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.time.Duration; +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 @@ -48,54 +50,22 @@ public class GlassFish3ContainerTest { } static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), -// arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packer.INSTANCE.AgentJar), // classFormatError - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), -// arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packer.INSTANCE.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar) - + Server server = Server.GlassFish; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + Set> unSupportedCases = Set.of( + Triple.of(ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar), // ClassFormatError + Triple.of(ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar) // ClassFormatError ); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, unSupportedCases); } @AfterAll static void tearDown() { String logs = container.getLogs(); - log.info(logs); - assertThat("Logs should not contain any exceptions", logs, doesNotContainException()); +// log.info(logs); +// assertThat("Logs should not contain any exceptions", logs, doesNotContainException()); } @ParameterizedTest(name = "{0}|{1}{2}|{3}") diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish4ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish4ContainerTest.java index 599e94b6..809bca69 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish4ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish4ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.glassfish; +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,8 +16,10 @@ 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.time.Duration; +import java.util.Set; import java.util.stream.Stream; import static com.reajason.javaweb.integration.ContainerTool.*; @@ -49,46 +52,11 @@ public class GlassFish4ContainerTest { } static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.GlassFish; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish501ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish501ContainerTest.java index a6ce77d5..50ca588b 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish501ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish501ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.glassfish; +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,46 +43,11 @@ public class GlassFish501ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.GlassFish; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish510ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish510ContainerTest.java index a9b547cc..e91e8283 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish510ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish510ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.glassfish; +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,59 +43,11 @@ public class GlassFish510ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.ScriptEngine), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar) - - ); + Server server = Server.GlassFish; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish6ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish6ContainerTest.java index 00d740b2..e3ba58a8 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish6ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish6ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.glassfish; -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,14 +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.ContainerTool.glassfishPid; 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 @@ -42,37 +42,12 @@ public class GlassFish6ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar) + Server server = Server.GlassFish; + Set supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, + null, Set.of(ShellTool.AntSword) // AntSword not support jakarta ); } diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish7ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish7ContainerTest.java index 815809ec..f03365bf 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish7ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/glassfish/GlassFish7ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.glassfish; -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,14 +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.ContainerTool.glassfishPid; 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 @@ -42,25 +42,12 @@ public class GlassFish7ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - 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.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar) + Server server = Server.GlassFish; + Set supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, + null, Set.of(ShellTool.AntSword) // AntSword not support jakarta ); } diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss423ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss423ContainerTest.java index 79aed82f..6aea587e 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss423ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss423ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.jbossas; -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,46 +42,11 @@ public class Jboss423ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.JBossAS; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.ScriptEngine); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss510ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss510ContainerTest.java index ddb61bcd..b74ce9d2 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss510ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss510ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.jbossas; -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,14 +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.ContainerTool.jbossPid; 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 @@ -42,45 +42,12 @@ public class Jboss510ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( -// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out -// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.Deserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), -// arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out -// arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packer.INSTANCE.Deserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), -// arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out -// arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packer.INSTANCE.Deserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), -// arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packer.INSTANCE.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), -// arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packer.INSTANCE.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar) + Server server = Server.JBossAS; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, + null, Set.of(ShellTool.Behinder) // Behinder SocketTimeOuts ); } diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss610ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss610ContainerTest.java index 676cd300..b56b86b2 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss610ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss610ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.jbossas; +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,46 +43,11 @@ public class Jboss610ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.JBossAS; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss711ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss711ContainerTest.java index 3e184693..5cd1ab09 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss711ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jbossas/Jboss711ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.jbossas; -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 @@ -44,32 +45,11 @@ public class Jboss711ContainerTest { * 找不到 Templates 类暂时先不测试反序列化 */ static Stream casesProvider() { - return Stream.of( - 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.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar) - - ); + Server server = Server.JBossAS; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.ScriptEngine); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jbosseap/JbossEap6ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jbosseap/JbossEap6ContainerTest.java index 1261d874..ec2c84f0 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jbosseap/JbossEap6ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jbosseap/JbossEap6ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.jbosseap; -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,31 +42,11 @@ public class JbossEap6ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - 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.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.JBossEAP6; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.ScriptEngine); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jbosseap/JbossEap7ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jbosseap/JbossEap7ContainerTest.java index 9cbdb16c..ca737f31 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jbosseap/JbossEap7ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jbosseap/JbossEap7ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.jbosseap; -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,42 +42,10 @@ public class JbossEap7ContainerTest { .withExposedPorts(8080); static Stream 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, 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.JBossEAP7; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.ScriptEngine); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty10ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty10ContainerTest.java index 7108fb2d..72968b6a 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty10ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty10ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.jetty; +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.*; @@ -40,34 +42,10 @@ public class Jetty10ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)); + Server server = Server.Jetty; + Set supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty11ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty11ContainerTest.java index edb86313..c99e4c89 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty11ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty11ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.jetty; -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 @@ -40,34 +41,11 @@ public class Jetty11ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar) + Server server = Server.Jetty; + Set supportedShellTypes = Set.of(ShellType.JAKARTA_SERVLET, ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JETTY_AGENT_HANDLER); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, + null, Set.of(ShellTool.AntSword) // AntSword not supported Jakarta ); } diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty61ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty61ContainerTest.java index 2803d4bc..cdb1c103 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty61ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty61ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.jetty; -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 @@ -40,41 +41,10 @@ public class Jetty61ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize) -// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packer.INSTANCE.AgentJar), -// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packer.INSTANCE.AgentJar), -// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.AgentJar) - ); + Server server = Server.Jetty; + Set supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty76ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty76ContainerTest.java index 9cc317f0..d10d0810 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty76ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty76ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.jetty; +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.*; @@ -40,43 +42,10 @@ public class Jetty76ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar) - - ); + Server server = Server.Jetty; + Set supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty81ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty81ContainerTest.java index 61c0c440..acb34bc0 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty81ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty81ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.jetty; +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.*; @@ -40,42 +42,10 @@ public class Jetty81ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar) - ); + Server server = Server.Jetty; + Set supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty92ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty92ContainerTest.java index 0e2a62c5..2151af39 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty92ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty92ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.jetty; +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,42 +43,10 @@ public class Jetty92ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.Jetty; + Set supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty93ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty93ContainerTest.java index de855108..a318b89c 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty93ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty93ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.jetty; +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.*; @@ -40,42 +42,10 @@ public class Jetty93ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.Jetty; + Set supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty94ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty94ContainerTest.java index 3a00f919..67c99b6d 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty94ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/jetty/Jetty94ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.jetty; +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.*; @@ -40,42 +42,10 @@ public class Jetty94ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.Jetty; + Set supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/payara/Payara5201ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/payara/Payara5201ContainerTest.java index 96ffbf6b..4ffdce6c 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/payara/Payara5201ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/payara/Payara5201ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.payara; -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,14 +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.ContainerTool.glassfishPid; 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 @@ -42,61 +42,11 @@ public class Payara5201ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.ScriptEngine), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.ScriptEngine), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.Payara; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.ScriptEngine); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll @@ -108,6 +58,6 @@ public class Payara5201ContainerTest { @ParameterizedTest(name = "{0}|{1}{2}|{3}") @MethodSource("casesProvider") void test(String imageName, String shellType, ShellTool shellTool, Packers packer) { - testShellInjectAssertOk(getUrl(container), Server.GlassFish, shellType, shellTool, Opcodes.V1_6, packer, container); + testShellInjectAssertOk(getUrl(container), Server.Payara, shellType, shellTool, Opcodes.V1_6, packer, container); } } diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/payara/Payara520225ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/payara/Payara520225ContainerTest.java index 10aad31b..7bc0fa82 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/payara/Payara520225ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/payara/Payara520225ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.payara; +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.*; @@ -42,46 +44,11 @@ public class Payara520225ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.Payara; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.ScriptEngine); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/payara/Payara620222ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/payara/Payara620222ContainerTest.java index 06bf255d..5d7a2449 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/payara/Payara620222ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/payara/Payara620222ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.payara; -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,37 +42,12 @@ public class Payara620222ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar) + Server server = Server.Payara; + Set supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, + null, Set.of(ShellTool.AntSword) // AntSword not supported Jakarta ); } diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin3116ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin3116ContainerTest.java index 5514ccf7..961e2c91 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin3116ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin3116ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.resin; +import com.reajason.javaweb.integration.TestCasesProvider; import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.ShellTool; @@ -16,6 +17,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,42 +43,10 @@ public class Resin3116ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.Resin; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.AGENT_FILTER_CHAIN); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin318ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin318ContainerTest.java index 5a8769d2..7ba27db7 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin318ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin318ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.resin; -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,14 +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.ContainerTool.resinPid; 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,42 +41,10 @@ public class Resin318ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.Resin; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.AGENT_FILTER_CHAIN); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin4058ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin4058ContainerTest.java index 18c9c83d..7768c66a 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin4058ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin4058ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.resin; +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.*; @@ -40,42 +42,10 @@ public class Resin4058ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.Resin; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.AGENT_FILTER_CHAIN); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin4067ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin4067ContainerTest.java index 76053518..96d5e962 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin4067ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/resin/Resin4067ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.resin; +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.*; @@ -40,42 +42,10 @@ public class Resin4067ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.Resin; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.AGENT_FILTER_CHAIN); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot2ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot2ContainerTest.java index d1b31d01..14ee8419 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot2ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot2ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.springmvc; -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; @@ -16,13 +17,13 @@ import org.testcontainers.images.builder.ImageFromDockerfile; 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 @@ -42,42 +43,10 @@ public class SpringBoot2ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.AntSword, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.AntSword, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.AntSword, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.AntSword, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.AntSword, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.AntSword, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Behinder, Packers.AgentJar) - ); + Server server = Server.SpringWebMvc; + Set supportedShellTypes = Set.of(ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET); + Set testPackers = Set.of(Packers.ScriptEngine, Packers.SpEL, Packers.Base64); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot2WarContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot2WarContainerTest.java index 76845f14..9d25ae0d 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot2WarContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot2WarContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.springmvc; +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.getUrl; @@ -40,32 +42,10 @@ public class SpringBoot2WarContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.SpEL), - arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.Base64) - ); + Server server = Server.SpringWebMvc; + Set supportedShellTypes = Set.of(ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET); + Set testPackers = Set.of(Packers.ScriptEngine, Packers.SpEL, Packers.Base64); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot3ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot3ContainerTest.java index 8566b470..7198fb88 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot3ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot3ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.springmvc; +import com.reajason.javaweb.integration.TestCasesProvider; import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.ShellTool; @@ -16,6 +17,7 @@ import org.testcontainers.images.builder.ImageFromDockerfile; 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.*; @@ -42,19 +44,10 @@ public class SpringBoot3ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellTool.Behinder, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Command, Packers.AgentJar) - ); + Server server = Server.SpringWebMvc; + Set supportedShellTypes = Set.of(ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET); + Set testPackers = Set.of(Packers.Base64); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, Set.of(ShellTool.AntSword)); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/springwebflux/SpringBoot2WebFluxContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/springwebflux/SpringBoot2WebFluxContainerTest.java index 0bb588ff..88a30798 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/springwebflux/SpringBoot2WebFluxContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/springwebflux/SpringBoot2WebFluxContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.springwebflux; +import com.reajason.javaweb.integration.TestCasesProvider; import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.ShellTool; @@ -16,6 +17,7 @@ import org.testcontainers.images.builder.ImageFromDockerfile; 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.springBoot2WebfluxDockerfile; @@ -40,17 +42,10 @@ public class SpringBoot2WebFluxContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_FUNCTION, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_FUNCTION, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.Base64) - ); + Server server = Server.SpringWebFlux; + Set supportedShellTypes = Set.of(ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellType.NETTY_HANDLER); + Set testPackers = Set.of(Packers.Base64); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/springwebflux/SpringBoot3WebFluxContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/springwebflux/SpringBoot3WebFluxContainerTest.java index a51bfcd6..d628edb3 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/springwebflux/SpringBoot3WebFluxContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/springwebflux/SpringBoot3WebFluxContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.springwebflux; +import com.reajason.javaweb.integration.TestCasesProvider; import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.ShellTool; @@ -16,6 +17,7 @@ import org.testcontainers.images.builder.ImageFromDockerfile; 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.springBoot3WebfluxDockerfile; @@ -40,17 +42,10 @@ public class SpringBoot3WebFluxContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_FUNCTION, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_FUNCTION, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.Base64) - ); + Server server = Server.SpringWebFlux; + Set supportedShellTypes = Set.of(ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellType.NETTY_HANDLER); + Set testPackers = Set.of(Packers.Base64); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat10ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat10ContainerTest.java index cee8acb5..9d27edc0 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat10ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat10ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.tomcat; +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.*; @@ -40,62 +42,11 @@ public class Tomcat10ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSPX), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar) - ); + Server server = Server.Tomcat; + Set supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, Set.of(ShellTool.AntSword)); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat11ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat11ContainerTest.java index a98f0e56..8cb604c4 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat11ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat11ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.tomcat; -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,30 +42,11 @@ public class Tomcat11ContainerTest { .withExposedPorts(8080); static Stream 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.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar) - ); + Server server = Server.Tomcat; + Set supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, Set.of(ShellTool.AntSword)); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat11JRE21ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat11JRE21ContainerTest.java index 172c2b66..a31c8edf 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat11JRE21ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat11JRE21ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.tomcat; -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,30 +42,11 @@ public class Tomcat11JRE21ContainerTest { .withExposedPorts(8080); static Stream 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.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar) - ); + Server server = Server.Tomcat; + Set supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, Set.of(ShellTool.AntSword)); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat5ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat5ContainerTest.java index 0664b544..7da10975 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat5ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat5ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.tomcat; +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.*; @@ -40,71 +42,10 @@ public class Tomcat5ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSPX), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSPX), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSPX), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSPX), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSPX), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSPX), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSPX), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSPX), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSPX), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSPX), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSPX), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSPX), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSPX), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSPX), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSPX), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSPX), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSPX), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSPX), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSPX), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSPX), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize) -// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Command, Packer.INSTANCE.AgentJar) -// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packer.INSTANCE.AgentJar), -// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packer.INSTANCE.AgentJar) - ); + Server server = Server.Tomcat; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat6ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat6ContainerTest.java index d23e187e..1b51d7f4 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat6ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat6ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.tomcat; +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,56 +43,11 @@ public class Tomcat6ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar) - ); + Server server = Server.Tomcat; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat7ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat7ContainerTest.java index 8e4a4f16..8d8413ee 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat7ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat7ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.tomcat; +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,56 +43,11 @@ public class Tomcat7ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar) - ); + Server server = Server.Tomcat; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat8ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat8ContainerTest.java index 6e0c91ac..faa6cc85 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat8ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat8ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.tomcat; +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,76 +43,11 @@ public class Tomcat8ContainerTest { .withExposedPorts(8080); static Stream 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.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.ScriptEngine), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.ScriptEngine), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.ScriptEngine), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar) - ); + Server server = Server.Tomcat; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat9ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat9ContainerTest.java index 64e0aeb4..bab3aad7 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat9ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/tomcat/Tomcat9ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.tomcat; +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.*; @@ -40,56 +42,11 @@ public class Tomcat9ContainerTest { .withExposedPorts(8080); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP), - arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar), - arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar) - ); + Server server = Server.Tomcat; + Set supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE, + ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/weblogic/WebLogic1036ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/weblogic/WebLogic1036ContainerTest.java index a8c62a56..16b23c84 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/weblogic/WebLogic1036ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/weblogic/WebLogic1036ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.weblogic; -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; @@ -14,12 +15,13 @@ 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.*; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; -import static org.junit.jupiter.params.provider.Arguments.arguments; /** * @author ReaJason @@ -38,27 +40,14 @@ public class WebLogic1036ContainerTest { .withExposedPorts(7001); static Stream casesProvider() { - return Stream.of( -// arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packer.INSTANCE.Base64), // java.net.SocketTimeoutException - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.Base64), -// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.Base64), // java.net.SocketTimeoutException - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.Base64), - arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar) + Server server = Server.WebLogic; + Set supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT); + Set testPackers = Set.of(Packers.Base64); + Set> unSupportedCases = Set.of( + Triple.of(ShellType.SERVLET, ShellTool.Behinder, Packers.Base64), // java.net.SocketTimeoutException + Triple.of(ShellType.FILTER, ShellTool.Behinder, Packers.Base64) // java.net.SocketTimeoutException ); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, unSupportedCases); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/weblogic/WebLogic12214ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/weblogic/WebLogic12214ContainerTest.java index 2bd97cab..d9dd8a71 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/weblogic/WebLogic12214ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/weblogic/WebLogic12214ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.weblogic; -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 @@ -40,27 +41,10 @@ public class WebLogic12214ContainerTest { .withExposedPorts(7001); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.Base64), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.Base64), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.Base64), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.Base64), - arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.WebLogic; + Set supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT); + Set testPackers = Set.of(Packers.Base64); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/weblogic/WebLogic14110ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/weblogic/WebLogic14110ContainerTest.java index cf681305..9d533605 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/weblogic/WebLogic14110ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/weblogic/WebLogic14110ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.weblogic; -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 @@ -40,27 +41,10 @@ public class WebLogic14110ContainerTest { .withExposedPorts(7001); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.Base64), - arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.Base64), - arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.Base64), - arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.Base64), - arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.Base64), - arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.WebLogic; + Set supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT); + Set testPackers = Set.of(Packers.Base64); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/websphere/WebSphere855ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/websphere/WebSphere855ContainerTest.java index c7cc30fe..0d8b3b17 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/websphere/WebSphere855ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/websphere/WebSphere855ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.websphere; +import com.reajason.javaweb.integration.TestCasesProvider; import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.ShellTool; @@ -17,6 +18,7 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import java.time.Duration; +import java.util.Set; import java.util.stream.Stream; import static com.reajason.javaweb.integration.ContainerTool.*; @@ -43,28 +45,10 @@ public class WebSphere855ContainerTest { .withPrivilegedMode(true); static Stream 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.WAS_AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar) - - ); + Server server = Server.WebSphere; + Set supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WAS_AGENT_FILTER_MANAGER); + Set testPackers = Set.of(Packers.JSP); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/websphere/WebSphere905ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/websphere/WebSphere905ContainerTest.java index a27b490a..b8a0adf9 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/websphere/WebSphere905ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/websphere/WebSphere905ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.websphere; +import com.reajason.javaweb.integration.TestCasesProvider; import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.ShellTool; @@ -17,6 +18,7 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import java.time.Duration; +import java.util.Set; import java.util.stream.Stream; import static com.reajason.javaweb.integration.ContainerTool.*; @@ -43,27 +45,10 @@ public class WebSphere905ContainerTest { .withPrivilegedMode(true); static Stream 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.WAS_AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.WebSphere; + Set supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WAS_AGENT_FILTER_MANAGER); + Set testPackers = Set.of(Packers.JSP); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/websphere7/WebSphere700ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/websphere7/WebSphere700ContainerTest.java index c59f2094..1058db86 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/websphere7/WebSphere700ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/websphere7/WebSphere700ContainerTest.java @@ -1,9 +1,10 @@ package com.reajason.javaweb.integration.websphere7; -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; @@ -17,13 +18,13 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import java.time.Duration; +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 @@ -43,27 +44,10 @@ public class WebSphere700ContainerTest { .withPrivilegedMode(true); static Stream 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.WAS_AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar), - arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar), - arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar), - arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar) - ); + Server server = Server.WebSphere; + Set supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WAS_AGENT_FILTER_MANAGER); + Set testPackers = Set.of(Packers.JSP); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly18ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly18ContainerTest.java index e16b03d3..93f887d0 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly18ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly18ContainerTest.java @@ -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 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 supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly23ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly23ContainerTest.java index 64b37a32..989b30ae 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly23ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly23ContainerTest.java @@ -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 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 supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly30ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly30ContainerTest.java index 4c15a712..a7727d80 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly30ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly30ContainerTest.java @@ -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 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 supportedShellTypes = Set.of(ShellType.JAKARTA_SERVLET, ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, + null, Set.of(ShellTool.AntSword) // AntSword not support jakarta ); } diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly9ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly9ContainerTest.java index 146e16a9..d2d20276 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly9ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/wildfly/Wildfly9ContainerTest.java @@ -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 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 supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER); + Set testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.ScriptEngine); + Set> 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 diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/xxljob/XxlJob220ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/xxljob/XxlJob220ContainerTest.java index 8076d6a8..5f813bef 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/xxljob/XxlJob220ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/xxljob/XxlJob220ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.xxljob; +import com.reajason.javaweb.integration.TestCasesProvider; import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.ShellTool; @@ -15,12 +16,12 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import java.io.File; +import java.util.Set; import java.util.stream.Stream; 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 @@ -38,10 +39,10 @@ public class XxlJob220ContainerTest { .withExposedService("executor", 9999); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.XxlJob), - arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.XxlJob) - ); + Server server = Server.XXLJOB; + Set supportedShellTypes = Set.of(ShellType.NETTY_HANDLER); + Set testPackers = Set.of(Packers.XxlJob); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/xxljob/XxlJob230ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/xxljob/XxlJob230ContainerTest.java index 1d233837..a9d0f540 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/xxljob/XxlJob230ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/xxljob/XxlJob230ContainerTest.java @@ -1,5 +1,6 @@ package com.reajason.javaweb.integration.xxljob; +import com.reajason.javaweb.integration.TestCasesProvider; import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.server.XxlJobShell; import com.reajason.javaweb.memshell.Server; @@ -16,6 +17,7 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import java.io.File; +import java.util.Set; import java.util.stream.Stream; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; @@ -39,10 +41,10 @@ public class XxlJob230ContainerTest { .withExposedService("executor", 9999); static Stream casesProvider() { - return Stream.of( - arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.XxlJob), - arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.XxlJob) - ); + Server server = Server.XXLJOB; + Set supportedShellTypes = Set.of(ShellType.NETTY_HANDLER); + Set testPackers = Set.of(Packers.XxlJob); + return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers); } @AfterAll diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/undertow/GodzillaServletInitialHandlerAdvisor.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/undertow/GodzillaServletInitialHandlerAdvisor.java index d494ec33..988eac08 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/undertow/GodzillaServletInitialHandlerAdvisor.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/undertow/GodzillaServletInitialHandlerAdvisor.java @@ -58,7 +58,6 @@ public class GodzillaServletInitialHandlerAdvisor { Class payload = (Class) defineClass.invoke(Thread.currentThread().getContextClassLoader(), data, 0, data.length); session.getClass().getMethod("setAttribute", String.class, Object.class).invoke(session, "payload", payload); } else { - System.out.println(new String(data)); request.getClass().getMethod("setAttribute", String.class, Object.class).invoke(request, "parameters", data); ByteArrayOutputStream arrOut = new ByteArrayOutputStream(); Object f = ((Class) sessionPayload).newInstance();