/*
* ====================================================================
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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/>.
*/
package org.apache.ogt.http.impl.client;
import org.apache.ogt.http.auth.AuthScope;
import org.apache.ogt.http.auth.Credentials;
import org.apache.ogt.http.auth.UsernamePasswordCredentials;
import org.apache.ogt.http.impl.client.BasicCredentialsProvider;
import org.junit.Assert;
import org.junit.Test;
/**
* Simple tests for {@link BasicCredentialsProvider}.
*/
public class TestBasicCredentialsProvider {
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");
@Test
public void testBasicCredentialsProviderCredentials() {
BasicCredentialsProvider state = new BasicCredentialsProvider();
state.setCredentials(SCOPE1, CREDS1);
state.setCredentials(SCOPE2, CREDS2);
Assert.assertEquals(CREDS1, state.getCredentials(SCOPE1));
Assert.assertEquals(CREDS2, state.getCredentials(SCOPE2));
}
@Test
public void testBasicCredentialsProviderNoCredentials() {
BasicCredentialsProvider state = new BasicCredentialsProvider();
Assert.assertEquals(null, state.getCredentials(BOGUS));
}
@Test
public void testBasicCredentialsProviderDefaultCredentials() {
BasicCredentialsProvider state = new BasicCredentialsProvider();
state.setCredentials(AuthScope.ANY, CREDS1);
state.setCredentials(SCOPE2, CREDS2);
Assert.assertEquals(CREDS1, state.getCredentials(BOGUS));
}
@Test
public void testDefaultCredentials() throws Exception {
BasicCredentialsProvider state = new BasicCredentialsProvider();
Credentials expected = new UsernamePasswordCredentials("name", "pass");
state.setCredentials(AuthScope.ANY, expected);
Credentials got = state.getCredentials(DEFSCOPE);
Assert.assertEquals(got, expected);
}
@Test
public void testRealmCredentials() throws Exception {
BasicCredentialsProvider state = new BasicCredentialsProvider();
Credentials expected = new UsernamePasswordCredentials("name", "pass");
state.setCredentials(DEFSCOPE, expected);
Credentials got = state.getCredentials(DEFSCOPE);
Assert.assertEquals(expected, got);
}
@Test
public void testHostCredentials() throws Exception {
BasicCredentialsProvider state = new BasicCredentialsProvider();
Credentials expected = new UsernamePasswordCredentials("name", "pass");
state.setCredentials(
new AuthScope("host", AuthScope.ANY_PORT, AuthScope.ANY_REALM), expected);
Credentials got = state.getCredentials(DEFSCOPE);
Assert.assertEquals(expected, got);
}
@Test
public void testWrongHostCredentials() throws Exception {
BasicCredentialsProvider state = new BasicCredentialsProvider();
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"));
Assert.assertNotSame(expected, got);
}
@Test
public void testWrongRealmCredentials() throws Exception {
BasicCredentialsProvider state = new BasicCredentialsProvider();
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"));
Assert.assertNotSame(cred, got);
}
@Test
public void testScopeMatching() {
AuthScope authscope1 = new AuthScope("somehost", 80, "somerealm", "somescheme");
AuthScope authscope2 = new AuthScope("someotherhost", 80, "somerealm", "somescheme");
Assert.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));
Assert.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));
Assert.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));
Assert.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));
Assert.assertTrue(m2 > m1);
m1 = authscope1.match(AuthScope.ANY);
m2 = authscope1.match(
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, "somescheme"));
Assert.assertTrue(m2 > m1);
}
@Test
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);
BasicCredentialsProvider state = new BasicCredentialsProvider();
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;
Assert.assertEquals(expected, got);
got = state.getCredentials(
new AuthScope("someotherhost", 80, "somerealm", "basic"));
expected = creds2;
Assert.assertEquals(expected, got);
got = state.getCredentials(
new AuthScope("somehost", 80, "someotherrealm", "basic"));
expected = creds3;
Assert.assertEquals(expected, got);
}
}