We also use spring-security and ran into some issues as well. What we
ended up doing was adding something like this to the JUnit #setUp
method
/* (non-Javadoc)
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
_tester = new PageTester(_ROOT_PACKAGE_NAME, _APP_MODULE,
PageTester.DEFAULT_CONTEXT_PATH, TestHarnessModule.class);
_encoder = _tester.getService(ContextPathEncoder.class);
Registry registry = _tester.getRegistry();
registry.performRegistryStartup();
UserDetailsService userDetailsSvc =
_tester.getService(UserDetailsService.class);
UserDetails ud = userDetailsSvc.loadUserByUsername(someuser);
handleIfLogIn();
SecurityContext context = new SecurityContextImpl();
Authentication currentUser = new
UsernamePasswordAuthenticationToken(ud.getUsername(),
somepassword);
context.setAuthentication(currentUser);
SecurityContextHolder.setContext(context);
}
Hope that helps.. and if anyone has a better solution please let me know.
-Mark
PS (sorry for the double post, but wanted to make sure my comment was
attached to the appropriate thread)
On Mon, Dec 22, 2008 at 10:28 AM, SergeEby <[email protected]> wrote:
>
> Hi,
>
> This seems to be related to this thread:
> http://www.nabble.com/PageLinkTarget%2C-where-did-it-go--to21022001.html#a21022001
>
> /Serge
>
>
> Michał Jedynak wrote:
>>
>> Hi there,
>>
>> I've integrated spring security to my sample tapestry5 application
>> (I'm using version 5.0.18) based on tapestry-spring-security
>> (http://www.localhost.nu/java/tapestry-spring-security), but now my
>> unit tests that use PageTester don't work, because there is no
>> Authentication object in SecurityContext.
>>
>> I thought about creating SecurityContext, something like:
>>
>> SecurityContext securityContext = new SecurityContextImpl();
>> User user = new User();
>> user.setId(1L);
>> user.setUsername("user");
>> user.setPassword("password");
>> UsernamePasswordAuthenticationToken token =
>> new UsernamePasswordAuthenticationToken(
>> user.getUsername(), user.getPassword(), user.getAuthorities());
>> token.setDetails(user);
>> securityContext.setAuthentication(token);
>>
>> and adding it to the rendered page through PageTester, as it is
>> described in
>> http://tapestry.apache.org/tapestry5/guide/unit-testing-pages.html:
>>
>> PageTester tester = new PageTester(appPackage, appName,
>> "src/main/webapp");
>> Object[] context = new Object[]{ "abc", 123 };
>> Document doc = tester.invoke(new ComponentInvocation(new
>> PageLinkTarget("MyPage"), context));
>>
>> However this doesn't work, ComponentInvocation is an interface and I
>> don't know how to initialize properly ComponentInvocationImpl.
>> Anyone care to help?
>>
>>
>>
>>
>>
>> --
>> Michał Jedynak
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/Tapestry-5-with-Spring-Security---problem-with-unit-tests.-tp21126486p21129652.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>