Look at the project Tapestry testify: 
https://tapestry.formos.com/nightly/tapestry-testify/

This should give you the tools you need to test your pages precisely, you also 
will need to include a mocking framework (EasyMock or Mockito) with testify.

good luck,
Peter

----- Original Message -----
From: "Juan E. Maya" <maya.j...@gmail.com>
To: "Tapestry users" <users@tapestry.apache.org>
Sent: Thursday, 16 July, 2009 17:09:23 GMT +02:00 Athens, Beirut, Bucharest, 
Istanbul
Subject: Re: Tapestry-Spring Security & Page Testing

I came to the conclusion (maybe i am wrong) that this is not possible
(at least now) using Spring-security. Sadly this is a deal breaker for
me :S

The nice thing is that thanks to tapestry modularity it was extremely
easy to replace the security to use Chennilleit Access! I am really
looking forward for CK new release :)

On Wed, Jul 15, 2009 at 9:04 AM, Juan E. Maya<maya.j...@gmail.com> wrote:
> 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


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to