Does anybody has found a way to unit test pages of an application that use Tapestry-Spring Security?
I always get the error: java.lang.RuntimeException: java.io.IOException: Can only process HttpServletRequest at org.apache.tapestry5.test.PageTester.renderPage(PageTester.java:200) at com.rinco.misacas.web.test.SimplePageTest.simpleTest(SimplePageTest.java:53) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580) at org.testng.internal.Invoker.invokeMethod(Invoker.java:478) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:617) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:885) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110) at org.testng.TestRunner.runWorkers(TestRunner.java:712) at org.testng.TestRunner.privateRun(TestRunner.java:582) at org.testng.TestRunner.run(TestRunner.java:477) at org.testng.SuiteRunner.runTest(SuiteRunner.java:324) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292) at org.testng.SuiteRunner.run(SuiteRunner.java:198) at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823) at org.testng.TestNG.runSuitesLocally(TestNG.java:790) at org.testng.TestNG.run(TestNG.java:708) at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124) Caused by: java.io.IOException: Can only process HttpServletRequest at nu.localhost.tapestry5.springsecurity.services.internal.RequestFilterWrapper.service(RequestFilterWrapper.java:64) at $RequestHandler_1227d30e8e4.service($RequestHandler_1227d30e8e4.java) at com.rinco.misacas.web.services.MisacasModule$1.service(MisacasModule.java:109) at $RequestFilter_1227d30e8e0.service($RequestFilter_1227d30e8e0.java) at $RequestHandler_1227d30e8e4.service($RequestHandler_1227d30e8e4.java) at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) at $RequestHandler_1227d30e8e4.service($RequestHandler_1227d30e8e4.java) at org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:778) at $RequestHandler_1227d30e8e4.service($RequestHandler_1227d30e8e4.java) at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:767) at $RequestHandler_1227d30e8e4.service($RequestHandler_1227d30e8e4.java) at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85) at $RequestHandler_1227d30e8e4.service($RequestHandler_1227d30e8e4.java) at org.apache.tapestry5.internal.test.EndOfRequestCleanupFilter.service(EndOfRequestCleanupFilter.java:42) at $RequestHandler_1227d30e8e4.service($RequestHandler_1227d30e8e4.java) at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90) at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81) at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85) at org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103) at $RequestHandler_1227d30e8e4.service($RequestHandler_1227d30e8e4.java) at $RequestHandler_1227d30e8b9.service($RequestHandler_1227d30e8b9.java) at org.apache.tapestry5.test.PageTester.renderPage(PageTester.java:173) ... 23 more Caused by: javax.servlet.ServletException: Can only process HttpServletRequest at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:46) at nu.localhost.tapestry5.springsecurity.services.internal.RequestFilterWrapper.service(RequestFilterWrapper.java:55) ... 44 more After running a test like this: @Test public void simpleTest() { private PageTester MISACAS_tester_TESTER = new PageTester(APP_NAME, APP_PACKAGE, APP_CONTEXT); Document doc = tester.renderPage("Index"); Assert.notNull(doc.getElementById("featuredItems")); } Of course this is natural, as HTTP is not being used to render the pages during test, what would like to know is if it's possible to avoid the execution of the Security RequestHandler ? I though about overriding the handler for tests or forcing the test to avoid loading the security module but i haven't been able to achieve any of those :S Any ideas? Thanks a lot! --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org