I was trying to write some cactus tests to test an ejb which required authentication. The application server used was jboss-4.0.2, with the tomcat 5 web container. I followed the instructions documented on the official cactus web site and created a protected ServletRedirectorSecure servlet to do it. When I ran the tests, I got an error message like: [cactus] ----------------------------------------------------------------- [cactus] Running tests against JBoss 4.0.2 [cactus] ----------------------------------------------------------------- [cactus] (httpclient.HttpMethodBase 2543) Already tried to authenticate with 'localhost:8080' authentication realm at localhost, but still receiving: HTTP/1.1 401 Unauthorized [cactus] (httpclient.HttpMethodBase 2543) Already tried to authenticate with 'localhost:8080' authentication realm at localhost, but still receiving: HTTP/1.1 401 Unauthorized [cactus] Testsuite: com.saybot.directory.DirectoryTest [cactus] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0.251 sec [cactus] [cactus] Testcase: testBasicAuthentication took 0.2 sec [cactus] Caused an ERROR [cactus] Failed to get the test results at [http://localhost:8080/directory/ServletRedirectorSecure] [cactus] org.apache.cactus.util.ChainedRuntimeException: Failed to get the test results at [http://localhost:8080/directory/ServletRedirectorSecure] [cactus] at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest_aroundBody0(DefaultHttpClient.java:92) [cactus] at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest_aroundBody1$advice(DefaultHttpClient.java:306) [cactus] at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest(DefaultHttpClient.java) [cactus] at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runWebTest(HttpProtocolHandler.java:159) [cactus] at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest_aroundBody0(HttpProtocolHandler.java:80) [cactus] at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest_aroundBody1$advice(HttpProtocolHandler.java:306) [cactus] at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest(HttpProtocolHandler.java) [cactus] at org.apache.cactus.internal.client.ClientTestCaseCaller.runTest(ClientTestCaseCaller.java:144) [cactus] at org.apache.cactus.internal.AbstractCactusTestCase.runBareClient(AbstractCactusTestCase.java:215) [cactus] at org.apache.cactus.internal.AbstractCactusTestCase.runBare(AbstractCactusTestCase.java:133) [cactus] org.apache.cactus.internal.client.ParsingException: Not a valid response [401 Unauthorized] [cactus] at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.callGetResult(DefaultHttpClient.java:211) [cactus] at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest_aroundBody0(DefaultHttpClient.java:87) [cactus] at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest_aroundBody1$advice(DefaultHttpClient.java:306) [cactus] at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest(DefaultHttpClient.java) [cactus] at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runWebTest(HttpProtocolHandler.java:159) [cactus] at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest_aroundBody0(HttpProtocolHandler.java:80) [cactus] at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest_aroundBody1$advice(HttpProtocolHandler.java:306) [cactus] at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest(HttpProtocolHandler.java) [cactus] at org.apache.cactus.internal.client.ClientTestCaseCaller.runTest(ClientTestCaseCaller.java:144) [cactus] at org.apache.cactus.internal.AbstractCactusTestCase.runBareClient(AbstractCactusTestCase.java:215) [cactus] at org.apache.cactus.internal.AbstractCactusTestCase.runBare(AbstractCactusTestCase.java:133) [cactus] [cactus] Testcase: testBasicAuthentication
That was when I used maven to run the test. I got the same error when I ran java org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner from shell. My web.xml was like: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <filter> <filter-name>FilterRedirector</filter-name> <filter-class>org.apache.cactus.server.FilterTestRedirector</filter-class> </filter> <filter-mapping> <filter-name>FilterRedirector</filter-name> <url-pattern>/test/filterRedirector.jsp</url-pattern> </filter-mapping> <servlet> <servlet-name>ServletRedirector</servlet-name> <servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class> </servlet> <servlet> <servlet-name>SerletRedirectorSecure</servlet-name> <servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class> </servlet> <servlet> <servlet-name>JspRedirector</servlet-name> <jsp-file>/jspRedirector.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>ServletRedirector</servlet-name> <url-pattern>/ServletRedirector</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>SerletRedirectorSecure</servlet-name> <url-pattern>/ServletRedirectorSecure</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>JspRedirector</servlet-name> <url-pattern>/JspRedirector</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <web-resource-name>Cactus Test Redirector</web-resource-name> <url-pattern>/ServletRedirectorSecure</url-pattern> </web-resource-collection> <auth-constraint> <role-name>User</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> </login-config> <security-role> <role-name>User</role-name> </security-role> </web-app> my test was just to test if I could get the principal in the test. It didn't even call any ejb: public void beginBasicAuthentication(WebRequest request) { request.setRedirectorName("ServletRedirectorSecure"); request.setAuthentication(new BasicAuthentication("tester1", "tester1")); } public void testBasicAuthentication() { assertEquals("tester1", request.getUserPrincipal().getName()); assertEquals("tester1", request.getRemoteUser()); assertTrue(request.isUserInRole("User")); } Can someone help me with this please? When I used a browser to go to url http://localhost:8080/directory/ServletRedirectorSecure?Cactus_Service=RUN_TEST it popped up a dialog to ask me for username and password. I entered "tester1", "tester1", and it went to a blank page. So that was correct. It didn't show me 401 error. Your help is much appreciated. -- -hoki --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]