Hi Nicole,

I got your example working on my machine.

This line will return always false:
if(this.context.getCallerPrincipal().getName() == "admin1") {

Try to change to use .equals() method.

Also, did you create users.proeprties and roles.properties for
your JBoss installation?

If this does not help I will send you my configurations to take a look.

Cheers, Petar.



2009/1/8, Nicole Luneburg <nicole.luneb...@lisasoft.com>:
>
> 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
>
>


-- 
Regards, Petar!
Karlovo, Bulgaria.
- - - - - - - -
| Author @ Manning Publications.
| Senior Solution Architect @ Unic
| BGJUG-Bulgarian Java User Group Leader.
| Apache Jakarta PMC member.
| Jakarta Cactus Lead Developer.
| Blogger: http://weblogs.java.net/blog/paranoiabla/
- - - - - - - -
Public PGP Key at:
https://keyserver1.pgp.com/vkd/DownloadKey.event?keyid=0x19658550C3110611
Key Fingerprint: A369 A7EE 61BC 93A3 CDFF  55A5 1965 8550 C311 0611

Reply via email to