Search in sources :

Example 1 with StandardPipeline

use of org.apache.catalina.core.StandardPipeline in project tomcat by apache.

the class TestLoadBalancerDrainingValve method runValve.

@Test
public void runValve() throws Exception {
    IMocksControl control = EasyMock.createControl();
    ServletContext servletContext = control.createMock(ServletContext.class);
    Context ctx = control.createMock(Context.class);
    Request request = control.createMock(Request.class);
    Response response = control.createMock(Response.class);
    String sessionCookieName = "JSESSIONID";
    String sessionId = "cafebabe";
    String requestURI = "/test/path";
    SessionCookieConfig cookieConfig = new CookieConfig();
    cookieConfig.setDomain("example.com");
    cookieConfig.setName(sessionCookieName);
    cookieConfig.setPath("/");
    cookieConfig.setSecure(secureSessionConfig);
    // Valve.init requires all of this stuff
    EasyMock.expect(ctx.getMBeanKeyProperties()).andStubReturn("");
    EasyMock.expect(ctx.getName()).andStubReturn("");
    EasyMock.expect(ctx.getPipeline()).andStubReturn(new StandardPipeline());
    EasyMock.expect(ctx.getDomain()).andStubReturn("foo");
    EasyMock.expect(ctx.getLogger()).andStubReturn(org.apache.juli.logging.LogFactory.getLog(LoadBalancerDrainingValve.class));
    EasyMock.expect(ctx.getServletContext()).andStubReturn(servletContext);
    // Set up the actual test
    EasyMock.expect(request.getAttribute(LoadBalancerDrainingValve.ATTRIBUTE_KEY_JK_LB_ACTIVATION)).andStubReturn(jkActivation);
    EasyMock.expect(Boolean.valueOf(request.isRequestedSessionIdValid())).andStubReturn(Boolean.valueOf(validSessionId));
    ArrayList<Cookie> cookies = new ArrayList<>();
    if (enableIgnore) {
        cookies.add(new Cookie("ignore", "true"));
    }
    if (!validSessionId && jkActivation.equals("DIS")) {
        MyCookie cookie = new MyCookie(cookieConfig.getName(), sessionId);
        cookie.setPath(cookieConfig.getPath());
        cookie.setValue(sessionId);
        cookies.add(cookie);
        EasyMock.expect(request.getRequestedSessionId()).andStubReturn(sessionId);
        EasyMock.expect(request.getRequestURI()).andStubReturn(requestURI);
        EasyMock.expect(request.getCookies()).andStubReturn(cookies.toArray(new Cookie[0]));
        EasyMock.expect(request.getContext()).andStubReturn(ctx);
        EasyMock.expect(ctx.getSessionCookieName()).andStubReturn(sessionCookieName);
        EasyMock.expect(servletContext.getSessionCookieConfig()).andStubReturn(cookieConfig);
        EasyMock.expect(request.getQueryString()).andStubReturn(queryString);
        EasyMock.expect(ctx.getSessionCookiePath()).andStubReturn("/");
        if (!enableIgnore) {
            EasyMock.expect(Boolean.valueOf(ctx.getSessionCookiePathUsesTrailingSlash())).andStubReturn(Boolean.TRUE);
            EasyMock.expect(request.getQueryString()).andStubReturn(queryString);
            // Response will have cookie deleted
            MyCookie expectedCookie = new MyCookie(cookieConfig.getName(), "");
            expectedCookie.setPath(cookieConfig.getPath());
            expectedCookie.setMaxAge(0);
            EasyMock.expect(Boolean.valueOf(request.isSecure())).andReturn(secureRequest);
            // These two lines just mean EasyMock.expect(response.addCookie) but for a void method
            response.addCookie(expectedCookie);
            // Indirect call
            EasyMock.expect(ctx.getSessionCookieName()).andReturn(sessionCookieName);
            String expectedRequestURI = requestURI;
            if (null != queryString) {
                expectedRequestURI = expectedRequestURI + '?' + queryString;
            }
            response.setHeader("Location", expectedRequestURI);
            response.setStatus(307);
        }
    }
    Valve next = control.createMock(Valve.class);
    if (expectInvokeNext) {
        // Expect the "next" Valve to fire
        // Next 2 lines are basically EasyMock.expect(next.invoke(req,res)) but for a void method
        next.invoke(request, response);
        EasyMock.expectLastCall();
    }
    // Get set to actually test
    control.replay();
    LoadBalancerDrainingValve valve = new LoadBalancerDrainingValve();
    valve.setContainer(ctx);
    valve.init();
    valve.setNext(next);
    valve.setIgnoreCookieName("ignore");
    valve.setIgnoreCookieValue("true");
    valve.invoke(request, response);
    control.verify();
}
Also used : Context(org.apache.catalina.Context) ServletContext(jakarta.servlet.ServletContext) Cookie(jakarta.servlet.http.Cookie) Request(org.apache.catalina.connector.Request) ArrayList(java.util.ArrayList) SessionCookieConfig(jakarta.servlet.SessionCookieConfig) StandardPipeline(org.apache.catalina.core.StandardPipeline) IMocksControl(org.easymock.IMocksControl) Response(org.apache.catalina.connector.Response) ServletContext(jakarta.servlet.ServletContext) Valve(org.apache.catalina.Valve) SessionCookieConfig(jakarta.servlet.SessionCookieConfig) Test(org.junit.Test)

Example 2 with StandardPipeline

use of org.apache.catalina.core.StandardPipeline in project tomcat70 by apache.

the class CatalinaFactory method createPipeline.

public Pipeline createPipeline(Container container) {
    Pipeline pipeline = new StandardPipeline();
    pipeline.setContainer(container);
    return pipeline;
}
Also used : StandardPipeline(org.apache.catalina.core.StandardPipeline) StandardPipeline(org.apache.catalina.core.StandardPipeline)

Aggregations

StandardPipeline (org.apache.catalina.core.StandardPipeline)2 ServletContext (jakarta.servlet.ServletContext)1 SessionCookieConfig (jakarta.servlet.SessionCookieConfig)1 Cookie (jakarta.servlet.http.Cookie)1 ArrayList (java.util.ArrayList)1 Context (org.apache.catalina.Context)1 Valve (org.apache.catalina.Valve)1 Request (org.apache.catalina.connector.Request)1 Response (org.apache.catalina.connector.Response)1 IMocksControl (org.easymock.IMocksControl)1 Test (org.junit.Test)1