You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2007/04/10 16:41:45 UTC

svn commit: r527146 - in /jakarta/httpcomponents/httpclient/trunk/src: java/org/apache/http/auth/ java/org/apache/http/impl/auth/ test/org/apache/http/impl/auth/

Author: olegk
Date: Tue Apr 10 07:41:44 2007
New Revision: 527146

URL: http://svn.apache.org/viewvc?view=rev&rev=527146
Log:
Ported UsernamePasswordCredentials, BasicScheme and related test cases from Commons HttpClient

Added:
    jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/UsernamePasswordCredentials.java
      - copied, changed from r526924, jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/UsernamePasswordCredentials.java
    jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestBasicAuth.java
      - copied, changed from r526922, jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestBasicAuth.java
Modified:
    jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/auth/RFC2617Scheme.java
    jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestAllAuthImpl.java
    jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestRFC2617Scheme.java

Copied: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/UsernamePasswordCredentials.java (from r526924, jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/UsernamePasswordCredentials.java)
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/UsernamePasswordCredentials.java?view=diff&rev=527146&p1=jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/UsernamePasswordCredentials.java&r1=526924&p2=jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/UsernamePasswordCredentials.java&r2=527146
==============================================================================
--- jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/UsernamePasswordCredentials.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/auth/UsernamePasswordCredentials.java Tue Apr 10 07:41:44 2007
@@ -1,5 +1,5 @@
 /*
- * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/java/org/apache/commons/httpclient/UsernamePasswordCredentials.java,v 1.14 2004/04/18 23:51:35 jsdever Exp $
+ * $HeadURL$
  * $Revision$
  * $Date$
  *
@@ -28,9 +28,9 @@
  *
  */
 
-package org.apache.commons.httpclient;
+package org.apache.http.auth;
 
-import org.apache.commons.httpclient.util.LangUtils;
+import org.apache.http.util.LangUtils;
 
 /**
  * <p>Username and password {@link Credentials}.</p>
@@ -48,16 +48,6 @@
     // ----------------------------------------------------------- Constructors
 
     /**
-     * Default constructor.
-     * 
-     * @deprecated Do not use. Null user name no longer allowed
-     */
-    public UsernamePasswordCredentials() {
-        super();
-    }
-
-
-    /**
      * The constructor with the username and password combined string argument.
      *
      * @param usernamePassword the username:password formed string
@@ -111,22 +101,6 @@
 
 
     /**
-     * User name property setter. User name may not be null.
-     *
-     * @param userName
-     * @see #getUserName()
-     * 
-     * @deprecated Do not use. The UsernamePasswordCredentials objects should be immutable
-     */
-    public void setUserName(String userName) {
-        if (userName == null) {
-            throw new IllegalArgumentException("Username may not be null");            
-        }
-        this.userName = userName;
-    }
-
-
-    /**
      * User name property getter.
      *
      * @return the userName
@@ -138,19 +112,6 @@
 
 
     /**
-     * Password property setter.
-     *
-     * @param password
-     * @see #getPassword()
-     * 
-     * @deprecated Do not use. The UsernamePasswordCredentials objects should be immutable
-     */
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-
-    /**
      * Password property getter.
      *
      * @return the password
@@ -161,6 +122,11 @@
     }
 
     
+    public String toText() {
+        return toString();
+    }
+
+
     /**
      * Get this object string.
      *

Modified: jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/auth/RFC2617Scheme.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/auth/RFC2617Scheme.java?view=diff&rev=527146&r1=527145&r2=527146
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/auth/RFC2617Scheme.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/src/java/org/apache/http/impl/auth/RFC2617Scheme.java Tue Apr 10 07:41:44 2007
@@ -84,8 +84,10 @@
         if (header == null) {
             throw new IllegalArgumentException("Header may not be null");
         }
-        if (!header.getName().equalsIgnoreCase(HTTPAuth.WWW_AUTH)) {
-            throw new MalformedChallengeException("Unexpected header name: " + header.getName());
+        String authheader = header.getName();
+        if (!authheader.equalsIgnoreCase(HTTPAuth.WWW_AUTH) 
+                && !authheader.equalsIgnoreCase(HTTPAuth.PROXY_AUTH)) {
+            throw new MalformedChallengeException("Unexpected header name: " + authheader);
         }
         CharArrayBuffer buffer;
         int pos;
@@ -114,6 +116,10 @@
             throw new MalformedChallengeException("Invalid scheme identifier: " + s);
         }
         HeaderElement[] elements = BasicHeaderElement.parseAll(buffer, pos, buffer.length());
+        if (elements.length == 0) {
+            throw new MalformedChallengeException("Authentication challenge is empty");
+        }
+        
         this.params = new HashMap(elements.length);
         for (int i = 0; i < elements.length; i++) {
             HeaderElement element = elements[i];

Modified: jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestAllAuthImpl.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestAllAuthImpl.java?view=diff&rev=527146&r1=527145&r2=527146
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestAllAuthImpl.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestAllAuthImpl.java Tue Apr 10 07:41:44 2007
@@ -44,6 +44,7 @@
         TestSuite suite = new TestSuite();
 
         suite.addTest(TestRFC2617Scheme.suite());
+        suite.addTest(TestBasicAuth.suite());
 
         return suite;
     }

Copied: jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestBasicAuth.java (from r526922, jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestBasicAuth.java)
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestBasicAuth.java?view=diff&rev=527146&p1=jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestBasicAuth.java&r1=526922&p2=jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestBasicAuth.java&r2=527146
==============================================================================
--- jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestBasicAuth.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestBasicAuth.java Tue Apr 10 07:41:44 2007
@@ -1,5 +1,5 @@
 /*
- * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/test/org/apache/commons/httpclient/auth/TestBasicAuth.java,v 1.9 2004/11/20 17:56:40 olegk Exp $
+ * $HeadURL$
  * $Revision$
  * $Date$
  * ====================================================================
@@ -27,31 +27,25 @@
  *
  */
 
-package org.apache.commons.httpclient.auth;
+package org.apache.http.impl.auth;
 
 import java.io.IOException;
 
 import junit.framework.Test;
+import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
 import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.httpclient.EchoService;
-import org.apache.commons.httpclient.FeedbackService;
-import org.apache.commons.httpclient.Header;
-import org.apache.commons.httpclient.HttpClientTestBase;
-import org.apache.commons.httpclient.HttpState;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.ProxyTestDecorator;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.methods.GetMethod;
-import org.apache.commons.httpclient.methods.HeadMethod;
-import org.apache.commons.httpclient.methods.PostMethod;
-import org.apache.commons.httpclient.methods.PutMethod;
-import org.apache.commons.httpclient.methods.StringRequestEntity;
-import org.apache.commons.httpclient.server.AuthRequestHandler;
-import org.apache.commons.httpclient.server.HttpRequestHandlerChain;
-import org.apache.commons.httpclient.server.HttpServiceHandler;
-import org.apache.commons.httpclient.util.EncodingUtil;
+import org.apache.http.Header;
+import org.apache.http.HttpMessage;
+import org.apache.http.HttpVersion;
+import org.apache.http.auth.AuthScheme;
+import org.apache.http.auth.HTTPAuth;
+import org.apache.http.auth.MalformedChallengeException;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.message.BasicHeader;
+import org.apache.http.message.BasicHttpResponse;
+import org.apache.http.util.EncodingUtils;
 
 /**
  * Basic authentication test cases.
@@ -60,7 +54,7 @@
  * 
  * @version $Id$
  */
-public class TestBasicAuth extends HttpClientTestBase {
+public class TestBasicAuth extends TestCase {
 
     // ------------------------------------------------------------ Constructor
     public TestBasicAuth(final String testName) throws IOException {
@@ -77,73 +71,15 @@
 
     public static Test suite() {
         TestSuite suite = new TestSuite(TestBasicAuth.class);
-        ProxyTestDecorator.addTests(suite);
         return suite;
     }
 
-    public void testBasicAuthenticationWithNoCreds() throws IOException {
-
-        UsernamePasswordCredentials creds = 
-            new UsernamePasswordCredentials("testuser", "testpass");
-        
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds));
-        handlerchain.appendHandler(new HttpServiceHandler(new FeedbackService()));
-        
-        this.server.setRequestHandler(handlerchain);
-        GetMethod httpget = new GetMethod("/test/");
-        try {
-            this.client.executeMethod(httpget);
-            assertNotNull(httpget.getStatusLine());
-            assertEquals(HttpStatus.SC_UNAUTHORIZED, httpget.getStatusLine().getStatusCode());
-            AuthState authstate = httpget.getHostAuthState();
-            assertNotNull(authstate.getAuthScheme());
-            assertTrue(authstate.getAuthScheme() instanceof BasicScheme);
-            assertEquals("test", authstate.getRealm());
-        } finally {
-            httpget.releaseConnection();
-        }
-    }
-
-    public void testBasicAuthenticationWithNoCredsRetry() throws IOException {
-        UsernamePasswordCredentials creds = 
-            new UsernamePasswordCredentials("testuser", "testpass");
-        
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds));
-        handlerchain.appendHandler(new HttpServiceHandler(new FeedbackService()));
-        
-        this.server.setRequestHandler(handlerchain);
-
-        GetMethod httpget = new GetMethod("/test/");
-        try {
-            this.client.executeMethod(httpget);
-            assertNotNull(httpget.getStatusLine());
-            assertEquals(HttpStatus.SC_UNAUTHORIZED, httpget.getStatusLine().getStatusCode());
-            AuthState authstate = httpget.getHostAuthState();
-            assertNotNull(authstate.getAuthScheme());
-            assertTrue(authstate.getAuthScheme() instanceof BasicScheme);
-            assertEquals("test", authstate.getRealm());
-        } finally {
-            httpget.releaseConnection();
-        }
-        // now try with credentials
-        httpget = new GetMethod("/test/");
-        try {
-            this.client.getState().setCredentials(AuthScope.ANY, creds);
-            this.client.executeMethod(httpget);
-            assertNotNull(httpget.getStatusLine());
-            assertEquals(HttpStatus.SC_OK, httpget.getStatusLine().getStatusCode());
-        } finally {
-            httpget.releaseConnection();
-        }
-    }
-    
     public void testBasicAuthenticationWithNoRealm() {
         String challenge = "Basic";
+        Header header = new BasicHeader(HTTPAuth.WWW_AUTH, challenge);
         try {
             AuthScheme authscheme = new BasicScheme();
-            authscheme.processChallenge(challenge);
+            authscheme.processChallenge(header);
             fail("Should have thrown MalformedChallengeException");
         } catch(MalformedChallengeException e) {
             // expected
@@ -158,430 +94,28 @@
         }
         
         UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("dh", buffer.toString());
-        assertEquals("Basic ZGg65C32Lfw=", 
-            BasicScheme.authenticate(credentials, "ISO-8859-1"));
+        Header header = BasicScheme.authenticate(credentials, "ISO-8859-1");
+        assertEquals("Basic ZGg65C32Lfw=", header.getValue());
     }
     
-    public void testBasicAuthenticationWithDefaultCreds() throws Exception {
-        UsernamePasswordCredentials creds = 
-            new UsernamePasswordCredentials("testuser", "testpass");
-        
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds));
-        handlerchain.appendHandler(new HttpServiceHandler(new FeedbackService()));
-
-        HttpState state = new HttpState();
-        state.setCredentials(AuthScope.ANY, creds);
-        this.client.setState(state);
-        
-        this.server.setRequestHandler(handlerchain);
-
-        GetMethod httpget = new GetMethod("/test/");
-        try {
-            this.client.executeMethod(httpget);
-        } finally {
-            httpget.releaseConnection();
-        }
-        assertNotNull(httpget.getStatusLine());
-        assertEquals(HttpStatus.SC_OK, httpget.getStatusLine().getStatusCode());
-        Header auth = httpget.getRequestHeader("Authorization");
-        assertNotNull(auth);
-        String expected = "Basic " + EncodingUtil.getAsciiString(
-            Base64.encodeBase64(EncodingUtil.getAsciiBytes("testuser:testpass")));
-        assertEquals(expected, auth.getValue());
-        AuthState authstate = httpget.getHostAuthState();
-        assertNotNull(authstate.getAuthScheme());
-        assertTrue(authstate.getAuthScheme() instanceof BasicScheme);
-        assertEquals("test", authstate.getRealm());
-    }
-
     public void testBasicAuthentication() throws Exception {
         UsernamePasswordCredentials creds = 
             new UsernamePasswordCredentials("testuser", "testpass");
         
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds));
-        handlerchain.appendHandler(new HttpServiceHandler(new FeedbackService()));
-
-        HttpState state = new HttpState();
-        AuthScope authscope = new AuthScope(
-            this.server.getLocalAddress(), 
-            this.server.getLocalPort(),
-            "test");
-        state.setCredentials(authscope, creds);
-        this.client.setState(state);
-
-        this.server.setRequestHandler(handlerchain);
-
-        GetMethod httpget = new GetMethod("/test/");
-        try {
-            this.client.executeMethod(httpget);
-        } finally {
-            httpget.releaseConnection();
-        }
-        assertNotNull(httpget.getStatusLine());
-        assertEquals(HttpStatus.SC_OK, httpget.getStatusLine().getStatusCode());
-        Header auth = httpget.getRequestHeader("Authorization");
-        assertNotNull(auth);
-        String expected = "Basic " + EncodingUtil.getAsciiString(
-            Base64.encodeBase64(EncodingUtil.getAsciiBytes("testuser:testpass")));
-        assertEquals(expected, auth.getValue());
-        AuthState authstate = httpget.getHostAuthState();
-        assertNotNull(authstate.getAuthScheme());
-        assertTrue(authstate.getAuthScheme() instanceof BasicScheme);
-        assertEquals("test", authstate.getRealm());
-    }
-
-    public void testBasicAuthenticationWithInvalidCredentials() throws Exception {
-        UsernamePasswordCredentials creds = 
-            new UsernamePasswordCredentials("testuser", "testpass");
+        Header challenge = new BasicHeader(HTTPAuth.WWW_AUTH, "Basic realm=\"test\"");
         
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds));
-        handlerchain.appendHandler(new HttpServiceHandler(new FeedbackService()));
-
-        HttpState state = new HttpState();
-        AuthScope authscope = new AuthScope(
-            this.server.getLocalAddress(), 
-            this.server.getLocalPort(),
-            "test");
-        state.setCredentials(authscope, new UsernamePasswordCredentials("test", "stuff"));
-        this.client.setState(state);
-
-        this.server.setRequestHandler(handlerchain);
+        BasicScheme authscheme = new BasicScheme();
+        authscheme.processChallenge(challenge);
         
-        GetMethod httpget = new GetMethod("/test/");
-        try {
-            this.client.executeMethod(httpget);
-        } finally {
-            httpget.releaseConnection();
-        }
-        assertNotNull(httpget.getStatusLine());
-        assertEquals(HttpStatus.SC_UNAUTHORIZED, httpget.getStatusLine().getStatusCode());
-        AuthState authstate = httpget.getHostAuthState();
-        assertNotNull(authstate.getAuthScheme());
-        assertTrue(authstate.getAuthScheme() instanceof BasicScheme);
-        assertEquals("test", authstate.getRealm());
-    }
-
-    public void testBasicAuthenticationWithMutlipleRealms1() throws Exception {
-        UsernamePasswordCredentials creds = 
-            new UsernamePasswordCredentials("testuser", "testpass");
+        HttpMessage message = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
+        Header authResponse = authscheme.authenticate(creds, message);
         
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds));
-        handlerchain.appendHandler(new HttpServiceHandler(new FeedbackService()));
-
-        HttpState state = new HttpState();
-        AuthScope realm1 = new AuthScope(
-            this.server.getLocalAddress(), 
-            this.server.getLocalPort(),
-            "test");
-        AuthScope realm2 = new AuthScope(
-            this.server.getLocalAddress(), 
-            this.server.getLocalPort(),
-            "test2");
-        state.setCredentials(realm1, new UsernamePasswordCredentials("testuser","testpass"));
-        state.setCredentials(realm2, new UsernamePasswordCredentials("testuser2","testpass2"));
-        this.client.setState(state);
-
-        this.server.setRequestHandler(handlerchain);
-        
-        GetMethod httpget = new GetMethod("/test/");
-        try {
-            this.client.executeMethod(httpget);
-        } finally {
-            httpget.releaseConnection();
-        }
-        assertNotNull(httpget.getStatusLine());
-        assertEquals(HttpStatus.SC_OK, httpget.getStatusLine().getStatusCode());
-        Header auth = httpget.getRequestHeader("Authorization");
-        assertNotNull(auth);
-        String expected = "Basic " + EncodingUtil.getAsciiString(
-            Base64.encodeBase64(EncodingUtil.getAsciiBytes("testuser:testpass")));
-        assertEquals(expected, auth.getValue());
-        AuthState authstate = httpget.getHostAuthState();
-        assertNotNull(authstate.getAuthScheme());
-        assertTrue(authstate.getAuthScheme() instanceof BasicScheme);
-        assertEquals("test", authstate.getRealm());
-    }
-
-    public void testBasicAuthenticationWithMutlipleRealms2() throws Exception {
-        UsernamePasswordCredentials creds = 
-            new UsernamePasswordCredentials("testuser2", "testpass2");
-        
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds, "test2"));
-        handlerchain.appendHandler(new HttpServiceHandler(new FeedbackService()));
-
-        HttpState state = new HttpState();
-        AuthScope realm1 = new AuthScope(
-            this.server.getLocalAddress(), 
-            this.server.getLocalPort(),
-            "test");
-        AuthScope realm2 = new AuthScope(
-            this.server.getLocalAddress(), 
-            this.server.getLocalPort(),
-            "test2");
-        state.setCredentials(realm1, new UsernamePasswordCredentials("testuser","testpass"));
-        state.setCredentials(realm2, new UsernamePasswordCredentials("testuser2","testpass2"));
-        this.client.setState(state);
-
-        this.server.setRequestHandler(handlerchain);
-        
-        GetMethod httpget = new GetMethod("/test2/");
-        try {
-            this.client.executeMethod(httpget);
-        } finally {
-            httpget.releaseConnection();
-        }
-        assertNotNull(httpget.getStatusLine());
-        assertEquals(HttpStatus.SC_OK, httpget.getStatusLine().getStatusCode());
-        Header auth = httpget.getRequestHeader("Authorization");
-        assertNotNull(auth);
-        String expected = "Basic " + EncodingUtil.getAsciiString(
-            Base64.encodeBase64(EncodingUtil.getAsciiBytes("testuser2:testpass2")));
-        assertEquals(expected, auth.getValue());
-        AuthState authstate = httpget.getHostAuthState();
-        assertNotNull(authstate.getAuthScheme());
-        assertTrue(authstate.getAuthScheme() instanceof BasicScheme);
-        assertEquals("test2", authstate.getRealm());
+        String expected = "Basic " + EncodingUtils.getAsciiString(
+            Base64.encodeBase64(EncodingUtils.getAsciiBytes("testuser:testpass")));
+        assertEquals(expected, authResponse.getValue());
+        assertEquals("test", authscheme.getRealm());
+        assertTrue(authscheme.isComplete());
+        assertFalse(authscheme.isConnectionBased());
     }
 
-    public void testPreemptiveAuthorizationTrueWithCreds() throws Exception {
-        UsernamePasswordCredentials creds = 
-            new UsernamePasswordCredentials("testuser", "testpass");
-        
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds));
-        handlerchain.appendHandler(new HttpServiceHandler(new FeedbackService()));
-
-        HttpState state = new HttpState();
-        state.setCredentials(AuthScope.ANY, creds);
-        this.client.setState(state);
-        this.client.getParams().setAuthenticationPreemptive(true);
-        
-        this.server.setRequestHandler(handlerchain);
-
-        GetMethod httpget = new GetMethod("/test/");
-        try {
-            this.client.executeMethod(httpget);
-        } finally {
-            httpget.releaseConnection();
-        }
-        assertNotNull(httpget.getStatusLine());
-        assertEquals(HttpStatus.SC_OK, httpget.getStatusLine().getStatusCode());
-        Header auth = httpget.getRequestHeader("Authorization");
-        assertNotNull(auth);
-        String expected = "Basic " + EncodingUtil.getAsciiString(
-            Base64.encodeBase64(EncodingUtil.getAsciiBytes("testuser:testpass")));
-        assertEquals(expected, auth.getValue());
-        AuthState authstate = httpget.getHostAuthState();
-        assertNotNull(authstate.getAuthScheme());
-        assertTrue(authstate.getAuthScheme() instanceof BasicScheme);
-        assertNull(authstate.getRealm());
-        assertTrue(authstate.isPreemptive());
-    }
-
-    public void testPreemptiveAuthorizationTrueWithoutCreds() throws Exception {
-        UsernamePasswordCredentials creds = 
-            new UsernamePasswordCredentials("testuser", "testpass");
-        
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds));
-        handlerchain.appendHandler(new HttpServiceHandler(new FeedbackService()));
-
-        HttpState state = new HttpState();
-        this.client.setState(state);
-        this.client.getParams().setAuthenticationPreemptive(true);
-        
-        this.server.setRequestHandler(handlerchain);
-
-        GetMethod httpget = new GetMethod("/test/");
-        try {
-            this.client.executeMethod(httpget);
-        } finally {
-            httpget.releaseConnection();
-        }
-        assertNotNull(httpget.getStatusLine());
-        assertEquals(HttpStatus.SC_UNAUTHORIZED, httpget.getStatusLine().getStatusCode());
-        Header auth = httpget.getRequestHeader("Authorization");
-        assertNull(auth);
-        AuthState authstate = httpget.getHostAuthState();
-        assertNotNull(authstate.getAuthScheme());
-        assertTrue(authstate.getAuthScheme() instanceof BasicScheme);
-        assertNotNull(authstate.getRealm());
-        assertTrue(authstate.isPreemptive());
-    }
-
-    public void testCustomAuthorizationHeader() throws Exception {
-        UsernamePasswordCredentials creds = 
-            new UsernamePasswordCredentials("testuser", "testpass");
-        
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds));
-        handlerchain.appendHandler(new HttpServiceHandler(new FeedbackService()));
-
-        this.server.setRequestHandler(handlerchain);
-
-        GetMethod httpget = new GetMethod("/test/");
-        String authResponse = "Basic " + EncodingUtil.getAsciiString(
-                Base64.encodeBase64(EncodingUtil.getAsciiBytes("testuser:testpass")));
-        httpget.addRequestHeader(new Header("Authorization", authResponse));
-        try {
-            this.client.executeMethod(httpget);
-        } finally {
-            httpget.releaseConnection();
-        }
-        assertNotNull(httpget.getStatusLine());
-        assertEquals(HttpStatus.SC_OK, httpget.getStatusLine().getStatusCode());
-    }
-    
-    public void testHeadBasicAuthentication() throws Exception {
-        UsernamePasswordCredentials creds = 
-            new UsernamePasswordCredentials("testuser", "testpass");
-        
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds));
-        handlerchain.appendHandler(new HttpServiceHandler(new FeedbackService()));
-
-        HttpState state = new HttpState();
-        AuthScope authscope = new AuthScope(
-            this.server.getLocalAddress(), 
-            this.server.getLocalPort(),
-            "test");
-        state.setCredentials(authscope, creds);
-        this.client.setState(state);
-
-        this.server.setRequestHandler(handlerchain);
-
-        HeadMethod head = new HeadMethod("/test/");
-        try {
-            this.client.executeMethod(head);
-        } finally {
-            head.releaseConnection();
-        }
-        assertNotNull(head.getStatusLine());
-        assertEquals(HttpStatus.SC_OK, head.getStatusLine().getStatusCode());
-        Header auth = head.getRequestHeader("Authorization");
-        assertNotNull(auth);
-        String expected = "Basic " + EncodingUtil.getAsciiString(
-            Base64.encodeBase64(EncodingUtil.getAsciiBytes("testuser:testpass")));
-        assertEquals(expected, auth.getValue());
-        AuthState authstate = head.getHostAuthState();
-        assertNotNull(authstate.getAuthScheme());
-        assertTrue(authstate.getAuthScheme() instanceof BasicScheme);
-        assertEquals("test", authstate.getRealm());
-    }
-
-    public void testPostBasicAuthentication() throws Exception {
-        UsernamePasswordCredentials creds = 
-            new UsernamePasswordCredentials("testuser", "testpass");
-        
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds));
-        handlerchain.appendHandler(new HttpServiceHandler(new EchoService()));
-
-        HttpState state = new HttpState();
-        AuthScope authscope = new AuthScope(
-            this.server.getLocalAddress(), 
-            this.server.getLocalPort(),
-            "test");
-        state.setCredentials(authscope, creds);
-        this.client.setState(state);
-
-        this.server.setRequestHandler(handlerchain);
-
-        PostMethod post = new PostMethod("/test/");
-        post.setRequestEntity(new StringRequestEntity("Test body", null, null));
-        try {
-            this.client.executeMethod(post);
-            assertEquals("Test body", post.getResponseBodyAsString());
-        } finally {
-            post.releaseConnection();
-        }
-        assertNotNull(post.getStatusLine());
-        assertEquals(HttpStatus.SC_OK, post.getStatusLine().getStatusCode());
-        Header auth = post.getRequestHeader("Authorization");
-        assertNotNull(auth);
-        String expected = "Basic " + EncodingUtil.getAsciiString(
-            Base64.encodeBase64(EncodingUtil.getAsciiBytes("testuser:testpass")));
-        assertEquals(expected, auth.getValue());
-        AuthState authstate = post.getHostAuthState();
-        assertNotNull(authstate.getAuthScheme());
-        assertTrue(authstate.getAuthScheme() instanceof BasicScheme);
-        assertEquals("test", authstate.getRealm());
-    }
-    
-    public void testPutBasicAuthentication() throws Exception {
-        UsernamePasswordCredentials creds = 
-            new UsernamePasswordCredentials("testuser", "testpass");
-        
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds));
-        handlerchain.appendHandler(new HttpServiceHandler(new EchoService()));
-
-        HttpState state = new HttpState();
-        AuthScope authscope = new AuthScope(
-            this.server.getLocalAddress(), 
-            this.server.getLocalPort(),
-            "test");
-        state.setCredentials(authscope, creds);
-        this.client.setState(state);
-
-        this.server.setRequestHandler(handlerchain);
-
-        PutMethod put = new PutMethod("/test/");
-        put.setRequestEntity(new StringRequestEntity("Test body", null, null));
-        try {
-            this.client.executeMethod(put);
-            assertEquals("Test body", put.getResponseBodyAsString());
-        } finally {
-            put.releaseConnection();
-        }
-        assertNotNull(put.getStatusLine());
-        assertEquals(HttpStatus.SC_OK, put.getStatusLine().getStatusCode());
-        Header auth = put.getRequestHeader("Authorization");
-        assertNotNull(auth);
-        String expected = "Basic " + EncodingUtil.getAsciiString(
-            Base64.encodeBase64(EncodingUtil.getAsciiBytes("testuser:testpass")));
-        assertEquals(expected, auth.getValue());
-        AuthState authstate = put.getHostAuthState();
-        assertNotNull(authstate.getAuthScheme());
-        assertTrue(authstate.getAuthScheme() instanceof BasicScheme);
-        assertEquals("test", authstate.getRealm());
-    }
-
-    public void testPreemptiveAuthorizationFailure() throws Exception {
-        UsernamePasswordCredentials creds = 
-            new UsernamePasswordCredentials("testuser", "testpass");
-        UsernamePasswordCredentials wrongcreds = 
-            new UsernamePasswordCredentials("testuser", "garbage");
-        
-        HttpRequestHandlerChain handlerchain = new HttpRequestHandlerChain();
-        handlerchain.appendHandler(new AuthRequestHandler(creds));
-        handlerchain.appendHandler(new HttpServiceHandler(new FeedbackService()));
-
-        HttpState state = new HttpState();
-        state.setCredentials(AuthScope.ANY, wrongcreds);
-        this.client.setState(state);
-        this.client.getParams().setAuthenticationPreemptive(true);
-        
-        this.server.setRequestHandler(handlerchain);
-
-        GetMethod httpget = new GetMethod("/test/");
-        try {
-            this.client.executeMethod(httpget);
-        } finally {
-            httpget.releaseConnection();
-        }
-        assertNotNull(httpget.getStatusLine());
-        assertEquals(HttpStatus.SC_UNAUTHORIZED, httpget.getStatusLine().getStatusCode());
-        AuthState authstate = httpget.getHostAuthState();
-        assertNotNull(authstate.getAuthScheme());
-        assertTrue(authstate.getAuthScheme() instanceof BasicScheme);
-        assertEquals("test", authstate.getRealm());
-        assertTrue(authstate.isPreemptive());
-    }
-    
 }

Modified: jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestRFC2617Scheme.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestRFC2617Scheme.java?view=diff&rev=527146&r1=527145&r2=527146
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestRFC2617Scheme.java (original)
+++ jakarta/httpcomponents/httpclient/trunk/src/test/org/apache/http/impl/auth/TestRFC2617Scheme.java Tue Apr 10 07:41:44 2007
@@ -37,6 +37,8 @@
 import org.apache.http.auth.HTTPAuth;
 import org.apache.http.auth.MalformedChallengeException;
 import org.apache.http.message.BasicHeader;
+import org.apache.http.message.BufferedHeader;
+import org.apache.http.util.CharArrayBuffer;
 
 import junit.framework.Test;
 import junit.framework.TestCase;
@@ -97,7 +99,9 @@
 
     public void testProcessChallengeWithLotsOfBlanks() throws Exception {
         TestAuthScheme authscheme = new TestAuthScheme();
-        Header header = new BasicHeader(HTTPAuth.WWW_AUTH, "     Test       realm=\"realm1\"");
+        CharArrayBuffer buffer = new CharArrayBuffer(32);
+        buffer.append(" WWW-Authenticate:    Test       realm=\"realm1\"");
+        Header header = new BufferedHeader(buffer);
         
         authscheme.processChallenge(header);
         
@@ -108,6 +112,17 @@
     public void testInvalidHeader() throws Exception {
         TestAuthScheme authscheme = new TestAuthScheme();
         Header header = new BasicHeader("whatever", "Test realm=\"realm1\"");
+        try {
+            authscheme.processChallenge(header);
+            fail("MalformedChallengeException should have been thrown");
+        } catch (MalformedChallengeException ex) {
+            //expected
+        }
+    }
+    
+    public void testEmptyHeader() throws Exception {
+        TestAuthScheme authscheme = new TestAuthScheme();
+        Header header = new BasicHeader(HTTPAuth.WWW_AUTH, "Test    ");
         try {
             authscheme.processChallenge(header);
             fail("MalformedChallengeException should have been thrown");