Spring's MockHttpServletRequest allows you to setRemoteUser() and
addUserRole(), but I don't believe that's used when you're using
StrutsTestCase. You could try logging in with Acegi programmatically.
There's some examples of this in UserSecurityAdviceTest.java:
http://tinyurl.com/yqca8n
HTH,
Matt
On 2/4/07, Sanders, Corey <[EMAIL PROTECTED]> wrote:
Hi all,
I am working on integrating my company's home-grown single-sign on system
with a new Appfuse webapp. It started off well. I plugged in a new Acegi
AuthenticationProvider with surprisingly few lines of code and I was off and
running. But then came a disturbance in the force. After adding "roles"
restrictions to my struts-config, I now get 403 errors in my web test cases.
[junit] Testcase:
testSearchWithCriteria(com.sterlingcommerce.bpn.webapp.action.BusinessActionTest):
FAILED
[junit] received error 403 : User is not authorized to access action
/editBusiness
[junit] junit.framework.AssertionFailedError: received
error 403 : User is not authorized to access action /editBusiness
[junit] at
servletunit.HttpServletResponseSimulator.sendError(HttpServletResponseSimulator.java:463)
[junit] at
org.apache.struts.action.RequestProcessor.processRoles(RequestProcessor.java:887)
[junit] at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:197)
[junit] at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
[junit] at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
[junit] at
servletunit.struts.MockStrutsTestCase.actionPerform(MockStrutsTestCase.java:394)
I poked around the BaseStrutsTestCase class to see if there was a way I
could mock up a user that is always used for the tests, but I don't see how
to make that happen. There is some code in there for loading a user and a
comment about putting it in the session, but no code that appears to put it
in the session.
// populate the userForm and place into session
UserManager userMgr = (UserManager) ctx.getBean("userManager");
user = userMgr.getUserByUsername("tomcat");
So, I'm not really sure where the user is configured for the tests. My
thought is that there is some Spring magic, but I'm too much of a Spring
newbie to figure it out. I poked around the Spring forums for a while and
found one article on a similar issue, but it didn't really help. I'd
appreciate it if someone could explain to me how this is wired together and
where I can setup my user for the tests.
BTW, I am using Appfuse v.1.9.4 – Struts w/ Hibernate
Thanks,
-- Corey
--
http://raibledesigns.com