[Httpunit-commit] CVS: httpunit/test/com/meterware/servletunit WebXMLTest.java,1.17,1.18
Brought to you by:
russgold
|
From: Russell G. <rus...@us...> - 2004-02-13 05:50:45
|
Update of /cvsroot/httpunit/httpunit/test/com/meterware/servletunit In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11966/test/com/meterware/servletunit Modified Files: WebXMLTest.java Log Message: Add support for HttpSessionListener Index: WebXMLTest.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/test/com/meterware/servletunit/WebXMLTest.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- WebXMLTest.java 13 Feb 2004 03:17:46 -0000 1.17 +++ WebXMLTest.java 13 Feb 2004 05:45:19 -0000 1.18 @@ -31,9 +31,7 @@ import java.util.Arrays; import javax.servlet.*; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.*; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -180,6 +178,44 @@ } + public void testSessionLifecycleListeners() throws Exception { + WebXMLString wxs = new WebXMLString(); + wxs.addServlet( "/SimpleServlet", SimpleGetServlet.class ); + EventVerifier verifyContext = new HttpSessionEventVerifier(); + + wxs.addContextListener( ListenerClass3.class ); + wxs.addContextListener( ListenerClass4.class ); + + clearEvents(); + ServletRunner sr = new ServletRunner( toInputStream( wxs.asText() ) ); + + ServletUnitClient client = sr.newClient(); + InvocationContext ic = client.newInvocation( "http://localhost/SimpleServlet" ); + verifyEvents(); + + expectEvent( "created", ListenerClass3.class, verifyContext ); + expectEvent( "created", ListenerClass4.class ); + HttpSession session = ic.getRequest().getSession(); + verifyEvents(); + + expectEvent( "destroyed", ListenerClass3.class, verifyContext ); + expectEvent( "destroyed", ListenerClass4.class ); + session.invalidate(); + verifyEvents(); + + sr.shutDown(); + } + + + static class HttpSessionEventVerifier implements EventVerifier { + + public void verifyEvent( String eventLabel, Object eventObject ) { + if (!(eventObject instanceof HttpSessionEvent)) fail( "Event " + eventLabel + " did not include an http session event" ); + } + } + + + private Document newDocument( String contents ) throws UnsupportedEncodingException, SAXException, IOException, ParserConfigurationException { DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance(); return fac.newDocumentBuilder().parse( toInputStream( contents ) ); } @@ -434,12 +470,19 @@ public void contextInitialized( ServletContextEvent event ) { sendEvent( "startup", this, event ); } public void contextDestroyed( ServletContextEvent event ) { sendEvent( "shutdown", this, event ); } + + public void sessionCreated( HttpSessionEvent event ) { sendEvent( "created", this, event ); } + + public void sessionDestroyed( HttpSessionEvent event ) { sendEvent( "destroyed", this, event ); } } static class ListenerClass1 extends EventDispatcher implements ServletContextListener {} static class ListenerClass2 extends EventDispatcher implements ServletContextListener {} + static class ListenerClass3 extends EventDispatcher implements HttpSessionListener {} + static class ListenerClass4 extends EventDispatcher implements HttpSessionListener {} + } |