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

Reply via email to