Hi Petar, Thanks once again for your reply. I thought I would spend today trying to resolve my issues before I responded ... So I've stripped all my code (commented out, rather!!!) so see what you were referring to below. (I should have seen that here: http://jakarta.apache.org/cactus/how_it_works.html . sorry, i've been reading so much on the net for days that docos have begun melting in front of me!)
Ok so I understand what you said about the Authentication object. I thought I was doing that with the WebRequest? (see below) I hope I'm not taking up too much of yours or anyone else's time :( I'm really stuck! Before I explain what I have, just a quick word on how I run my test. I create my ear file and deploy that to JBoss. I cactify my project war and deploy that to JBoss. I then run my test through my web browser by accessing: http://localhost:8080/myapp/ServletTestRunner?suite=MyAppTestSuite (I know the docs somewhere say to do it other ways, but I can't even get that far!) So this is what I have: ================================================================== cactus.properties: cactus.contextURL=http://localhost:8080/myapp cactus.port=8080 ================================================================== build.xml: <target name="test" depends="test.prepare" description="Run the tests on the defined containers"> <echo message="Running test target ..."/> <cactus warfile="${project.build.dir}/test.war" fork="yes" failureproperty="tests.failed"> <classpath> <path refid="project.classpath"/> <pathelement location="${httpunit.jar}"/> <pathelement location="${nekohtml.jar}"/> <pathelement location="${target.classes.java.dir}"/> <pathelement location="${target.classes.cactus.dir}"/> </classpath> <containerset timeout="180000"/> <formatter type="brief" usefile="false"/> <formatter type="xml"/> <batchtest> <fileset dir="${src.cactus.dir}"> <include name="**/Test*.java"/> <exclude name="**/Test*All.java"/> </fileset> </batchtest> </cactus> <echo message="Finished test target ..."/> </target> <target name="test.prepare" depends="war,compile.cactus"> <!-- Cactify the web-app archive --> <cactifywar srcfile="${project.build.dir}/${projectname}.war" destfile="${project.build.dir}/test.war"> <servletredirector/> <classes dir="${project.build.dir}/test/"/> </cactifywar> </target> <target name="compile.cactus" depends="compile"> <mkdir dir="${project.build.dir}/test/" /> <javac destdir="${project.build.dir}/test/" debug="true" optimize="true" deprecation="off"> <src path="${project.src.dir}/junit/" /> <include name="com/**/*.java" /> <classpath refid="project.classpath.junit" /> </javac> </target> ================================================================== MyAppTestSuite.java: public class MyAppTestSuite extends junit.framework.TestCase { public static Test suite() { final junit.framework.TestSuite suite = new junit.framework.TestSuite (); suite.addTestSuite(MyTest.class); return suite; } } ================================================================== MyTest.java: public class MyTest extends org.apache.cactus.ServletTestCase { public void begin(WebRequest theRequest) { theRequest.setRedirectorName("ServletRedirectorSecure"); theRequest.setAuthentication(new FormAuthentication("admin1", "admin1")); } public void setUp() throws Exception { Context context = new InitialContext(); MyEJB3ServiceBean myService = (MyEJB3ServiceBean) context.lookup(...); If(myService.checkPermissions()) { //IT FAILS RIGHT HERE!!!!!!!!!!!!!!!!!! //do something } } public void tearDown() throws Exception { //no code } } ================================================================== MyEJB3ServiceBean.java: @Stateless public class MyEJB3ServiceBean { @Resource protected SessionContext context; public boolean checkPermissions () { if(this.context.getCallerPrincipal().getName() == "admin1") { return true; } else { return false; } } } ================================================================== I can see through some log info statements that it does it exactly in the sequence you specified: begin ... setUp ... tearDown ... (I didn't specify an endXXX method) So you see my dilemma, my test fails because I need to check who is logged in (with that getCallerPrincipal() ... call) But in able to do that, I need to log someone in, namely "admin1" as seen in my begin method. I thought I could "log" someone in by using the WebRequest in the beginXXX method. I am obviously doing this wrong, but I am really at a dead end as to how I am to go about this ... I hope my problem makes more sense :( Thnks again, nic -----Original Message----- From: Petar Tahchiev [mailto:paranoia...@gmail.com] Sent: Wednesday, 7 January 2009 7:45 PM To: Cactus Users List Subject: Re: How to set user principal in setUp() Hi Nicole, I think you misunderstand the purpose of Cactus. Your test will always be executed in the server side. This means that the testXXX methods are executed on the server side. You can, however, execute two methods - beginXXX and endXXX on the client side. This means the execution flow would be this: beginXXX() - >client side startUp() -> serverside testXXX() -> serverside tearDown() ->serverside endXXX() -> client side. If you see the documentation of the WebRequest (the one you use in beginXXX methods) there is no set-up for a caller principal. You can, however setup an Authentication object. HTH, Petar. The contents of this email are confidential and may be subject to legal or professional privilege and copyright. No representation is made that this email is free of viruses or other defects. If you have received this communication in error, you may not copy or distribute any part of it or otherwise disclose its contents to anyone. Please advise the sender of your incorrect receipt of this correspondence. --------------------------------------------------------------------- To unsubscribe, e-mail: cactus-user-unsubscr...@jakarta.apache.org For additional commands, e-mail: cactus-user-h...@jakarta.apache.org