blob: 6c4604a3e19de7d082a89dc4b54938933488ec47 [file] [log] [blame]
/*
* $Header: /home/data/cvs/rt/org.eclipse.ecf/tests/bundles/org.eclipse.ecf.tests.apache.httpclient.server/src/org/apache/commons/httpclient/TestHttpState.java,v 1.1 2009/02/13 18:07:50 slewis Exp $
* $Revision: 1.1 $
* $Date: 2009/02/13 18:07:50 $
* ====================================================================
*
* Copyright 1999-2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* [Additional notices, if required by prior licensing conditions]
*
*/
package org.apache.commons.httpclient;
import org.apache.commons.httpclient.auth.AuthScope;
import junit.framework.*;
/**
*
* Simple tests for {@link HttpState}.
*
* @author Rodney Waldhoff
* @author <a href="mailto:jsdever@apache.org">Jeff Dever</a>
* @author Sean C. Sullivan
* @author Oleg Kalnichevski
*
* @version $Id: TestHttpState.java,v 1.1 2009/02/13 18:07:50 slewis Exp $
*
*/
public class TestHttpState extends TestCase {
public final static Credentials CREDS1 =
new UsernamePasswordCredentials("user1", "pass1");
public final static Credentials CREDS2 =
new UsernamePasswordCredentials("user2", "pass2");
public final static AuthScope SCOPE1 =
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, "realm1");
public final static AuthScope SCOPE2 =
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, "realm2");
public final static AuthScope BOGUS =
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, "bogus");
public final static AuthScope DEFSCOPE =
new AuthScope("host", AuthScope.ANY_PORT, "realm");
// ------------------------------------------------------------ Constructor
public TestHttpState(String testName) {
super(testName);
}
// ------------------------------------------------------------------- Main
public static void main(String args[]) {
String[] testCaseName = { TestHttpState.class.getName() };
junit.textui.TestRunner.main(testCaseName);
}
// ------------------------------------------------------- TestCase Methods
public static Test suite() {
return new TestSuite(TestHttpState.class);
}
// ----------------------------------------------------------- Test Methods
public void testHttpStateCredentials() {
HttpState state = new HttpState();
state.setCredentials(SCOPE1, CREDS1);
state.setCredentials(SCOPE2, CREDS2);
assertEquals(CREDS1, state.getCredentials(SCOPE1));
assertEquals(CREDS2, state.getCredentials(SCOPE2));
}
public void testToString()
{
HttpState state = new HttpState();
assertNotNull(state.toString());
state.addCookie(new Cookie("foo", "bar", "yeah"));
assertNotNull(state.toString());
state.addCookie(new Cookie("flub", "duck", "yuck"));
assertNotNull(state.toString());
state.setCredentials(SCOPE1, CREDS1);
assertNotNull(state.toString());
state.setProxyCredentials(SCOPE2, CREDS2);
assertNotNull(state.toString());
}
public void testHttpStateNoCredentials() {
HttpState state = new HttpState();
assertEquals(null, state.getCredentials(BOGUS));
}
public void testHttpStateDefaultCredentials() {
HttpState state = new HttpState();
state.setCredentials(AuthScope.ANY, CREDS1);
state.setCredentials(SCOPE2, CREDS2);
assertEquals(CREDS1, state.getCredentials(BOGUS));
}
public void testHttpStateProxyCredentials() {
HttpState state = new HttpState();
state.setProxyCredentials(SCOPE1, CREDS1);
state.setProxyCredentials(SCOPE2, CREDS2);
assertEquals(CREDS1, state.getProxyCredentials(SCOPE1));
assertEquals(CREDS2, state.getProxyCredentials(SCOPE2));
}
public void testHttpStateProxyNoCredentials() {
HttpState state = new HttpState();
assertEquals(null, state.getProxyCredentials(BOGUS));
}
public void testHttpStateProxyDefaultCredentials() {
HttpState state = new HttpState();
state.setProxyCredentials(AuthScope.ANY, CREDS1);
state.setProxyCredentials(SCOPE2, CREDS2);
assertEquals(CREDS1, state.getProxyCredentials(BOGUS));
}
// --------------------------------- Test Methods for Selecting Credentials
public void testDefaultCredentials() throws Exception {
HttpState state = new HttpState();
Credentials expected = new UsernamePasswordCredentials("name", "pass");
state.setCredentials(AuthScope.ANY, expected);
Credentials got = state.getCredentials(DEFSCOPE);
assertEquals(got, expected);
}
public void testRealmCredentials() throws Exception {
HttpState state = new HttpState();
Credentials expected = new UsernamePasswordCredentials("name", "pass");
state.setCredentials(DEFSCOPE, expected);
Credentials got = state.getCredentials(DEFSCOPE);
assertEquals(expected, got);
}
public void testHostCredentials() throws Exception {
HttpState state = new HttpState();
Credentials expected = new UsernamePasswordCredentials("name", "pass");
state.setCredentials(
new AuthScope("host", AuthScope.ANY_PORT, AuthScope.ANY_REALM), expected);
Credentials got = state.getCredentials(DEFSCOPE);
assertEquals(expected, got);
}
public void testWrongHostCredentials() throws Exception {
HttpState state = new HttpState();
Credentials expected = new UsernamePasswordCredentials("name", "pass");
state.setCredentials(
new AuthScope("host1", AuthScope.ANY_PORT, "realm"), expected);
Credentials got = state.getCredentials(
new AuthScope("host2", AuthScope.ANY_PORT, "realm"));
assertNotSame(expected, got);
}
public void testWrongRealmCredentials() throws Exception {
HttpState state = new HttpState();
Credentials cred = new UsernamePasswordCredentials("name", "pass");
state.setCredentials(
new AuthScope("host", AuthScope.ANY_PORT, "realm1"), cred);
Credentials got = state.getCredentials(
new AuthScope("host", AuthScope.ANY_PORT, "realm2"));
assertNotSame(cred, got);
}
// ------------------------------- Test Methods for matching Credentials
public void testScopeMatching() {
AuthScope authscope1 = new AuthScope("somehost", 80, "somerealm", "somescheme");
AuthScope authscope2 = new AuthScope("someotherhost", 80, "somerealm", "somescheme");
assertTrue(authscope1.match(authscope2) < 0);
int m1 = authscope1.match(
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, "somescheme"));
int m2 = authscope1.match(
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, "somerealm", AuthScope.ANY_SCHEME));
assertTrue(m2 > m1);
m1 = authscope1.match(
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, "somescheme"));
m2 = authscope1.match(
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, "somerealm", AuthScope.ANY_SCHEME));
assertTrue(m2 > m1);
m1 = authscope1.match(
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, "somerealm", "somescheme"));
m2 = authscope1.match(
new AuthScope(AuthScope.ANY_HOST, 80, AuthScope.ANY_REALM, AuthScope.ANY_SCHEME));
assertTrue(m2 > m1);
m1 = authscope1.match(
new AuthScope(AuthScope.ANY_HOST, 80, "somerealm", "somescheme"));
m2 = authscope1.match(
new AuthScope("somehost", AuthScope.ANY_PORT, AuthScope.ANY_REALM, AuthScope.ANY_SCHEME));
assertTrue(m2 > m1);
m1 = authscope1.match(AuthScope.ANY);
m2 = authscope1.match(
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, "somescheme"));
assertTrue(m2 > m1);
}
public void testCredentialsMatching() {
Credentials creds1 = new UsernamePasswordCredentials("name1", "pass1");
Credentials creds2 = new UsernamePasswordCredentials("name2", "pass2");
Credentials creds3 = new UsernamePasswordCredentials("name3", "pass3");
AuthScope scope1 = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM);
AuthScope scope2 = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, "somerealm");
AuthScope scope3 = new AuthScope("somehost", AuthScope.ANY_PORT, AuthScope.ANY_REALM);
HttpState state = new HttpState();
state.setCredentials(scope1, creds1);
state.setCredentials(scope2, creds2);
state.setCredentials(scope3, creds3);
Credentials got = state.getCredentials(
new AuthScope("someotherhost", 80, "someotherrealm", "basic"));
Credentials expected = creds1;
assertEquals(expected, got);
got = state.getCredentials(
new AuthScope("someotherhost", 80, "somerealm", "basic"));
expected = creds2;
assertEquals(expected, got);
got = state.getCredentials(
new AuthScope("somehost", 80, "someotherrealm", "basic"));
expected = creds3;
assertEquals(expected, got);
}
}