/* 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.
*/
package tests.api.java.net;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.TestTargets;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
import java.net.Authenticator;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.PasswordAuthentication;
import java.net.URL;
import java.net.UnknownHostException;
import java.net.Authenticator.RequestorType;
import java.security.Permission;
import junit.framework.TestCase;
@TestTargetClass(value = Authenticator.class,
untestedMethods = {
@TestTargetNew(
level = TestLevel.NOT_FEASIBLE,
notes = "",
method = "getRequestingHost",
args = {}
),
@TestTargetNew(
level = TestLevel.NOT_FEASIBLE,
notes = "",
method = "getRequestingPort",
args = {}
),
@TestTargetNew(
level = TestLevel.NOT_FEASIBLE,
notes = "",
method = "getRequestingSite",
args = {}
),
@TestTargetNew(
level = TestLevel.NOT_FEASIBLE,
notes = "",
method = "getRequestingProtocol",
args = {}
),
@TestTargetNew(
level = TestLevel.NOT_FEASIBLE,
notes = "",
method = "getRequestingPrompt",
args = {}
),
@TestTargetNew(
level = TestLevel.NOT_FEASIBLE,
notes = "",
method = "getRequestingScheme",
args = {}
)}
)
public class AuthenticatorTest extends TestCase {
/**
* @tests java.net.Authenticator.RequestorType#valueOf(String)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "Test for checking RequestorType values.",
method = "!Constants",
args = {}
)
public void test_RequestorType_valueOfLjava_lang_String() throws Exception {
assertEquals(RequestorType.PROXY, Authenticator.RequestorType
.valueOf("PROXY"));
assertEquals(RequestorType.SERVER, Authenticator.RequestorType
.valueOf("SERVER"));
try {
RequestorType rt = Authenticator.RequestorType.valueOf("BADNAME");
fail("Must throw IllegalArgumentException");
} catch (IllegalArgumentException e) {
// correct
}
// Some old RIs throw IllegalArgumentException
// Latest RIs throw NullPointerException.
try {
Authenticator.RequestorType.valueOf(null);
fail("Must throw an exception");
} catch (NullPointerException e) {
// May be caused by some compilers' code
} catch (IllegalArgumentException e) {
// other compilers will throw this
}
}
/**
* @tests java.net.Authenticator.RequestorType#values()
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "Test for checking RequestorType values.",
method = "!Constants",
args = {}
)
public void test_RequestorType_values() throws Exception {
RequestorType[] rt = RequestorType.values();
assertEquals(RequestorType.PROXY, rt[0]);
assertEquals(RequestorType.SERVER, rt[1]);
}
/**
* @tests java.net.Authenticator#requestPasswordAuthentication(java.net.InetAddress, int, String, String, String)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "requestPasswordAuthentication",
args = {java.net.InetAddress.class, int.class, java.lang.String.class, java.lang.String.class, java.lang.String.class}
)
public void test_requestPasswordAuthentication_InetAddress_int_String_String_String() throws Exception {
// Regression test for Harmony-2413
MockAuthenticator mock = new MockAuthenticator();
InetAddress addr = InetAddress.getLocalHost();
Authenticator.setDefault(mock);
Authenticator.requestPasswordAuthentication(addr, -1, "http", "promt", "HTTP");
assertEquals(mock.getRequestorType(), RequestorType.SERVER);
SecurityManager sm = new SecurityManager() {
final String permissionName = "requestPasswordAuthentication";
public void checkPermission(Permission perm) {
if (perm.getName().equals(permissionName)) {
throw new SecurityException();
}
}
};
SecurityManager oldSm = System.getSecurityManager();
System.setSecurityManager(sm);
try {
Authenticator.requestPasswordAuthentication("test_host", addr, -1,
"http", "promt", "HTTP");
fail("Should throw SecurityException");
} catch (SecurityException e) {
// expected
} finally {
System.setSecurityManager(oldSm);
Authenticator.setDefault(null);
}
}
/**
* @tests java.net.Authenticator#requestPasswordAuthentication(String, java.net.InetAddress, int, String, String, String)
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "requestPasswordAuthentication",
args = {java.lang.String.class, java.net.InetAddress.class, int.class, java.lang.String.class, java.lang.String.class, java.lang.String.class}
)
public void test_requestPasswordAuthentication_String_InetAddress_int_String_String_String() throws Exception {
// Regression test for Harmony-2413
MockAuthenticator mock = new MockAuthenticator();
InetAddress addr = InetAddress.getLocalHost();
Authenticator.setDefault(mock);
Authenticator.requestPasswordAuthentication("test_host", addr, -1, "http", "promt", "HTTP");
assertEquals(mock.getRequestorType(), RequestorType.SERVER);
SecurityManager sm = new SecurityManager() {
final String permissionName = "requestPasswordAuthentication";
public void checkPermission(Permission perm) {
if (perm.getName().equals(permissionName)) {
throw new SecurityException();
}
}
};
SecurityManager oldSm = System.getSecurityManager();
System.setSecurityManager(sm);
try {
Authenticator.requestPasswordAuthentication("test_host", addr, -1,
"http", "promt", "HTTP");
fail("Should throw SecurityException");
} catch (SecurityException e) {
// expected
} finally {
System.setSecurityManager(oldSm);
Authenticator.setDefault(null);
}
}
/**
*
* @tests java.net.Authenticator#
* requestPasswordAuthentication_String_InetAddress_int_String_String_String_URL_Authenticator_RequestorType()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "requestPasswordAuthentication",
args = {java.lang.String.class, java.net.InetAddress.class, int.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.net.URL.class, java.net.Authenticator.RequestorType.class}
)
public void test_requestPasswordAuthentication_String_InetAddress_int_String_String_String_URL_Authenticator_RequestorType()
throws UnknownHostException, MalformedURLException {
MockAuthenticator mock = new MockAuthenticator();
URL url = new URL("http://127.0.0.1");
Authenticator.requestPasswordAuthentication("localhost", InetAddress
.getByName("127.0.0.1"), 80, "HTTP", "", "", url,
RequestorType.PROXY);
assertNull(mock.getRequestingURL());
assertNull(mock.getRequestorType());
SecurityManager sm = new SecurityManager() {
final String permissionName = "requestPasswordAuthentication";
public void checkPermission(Permission perm) {
if (perm.getName().equals(permissionName)) {
throw new SecurityException();
}
}
};
SecurityManager oldSm = System.getSecurityManager();
System.setSecurityManager(sm);
try {
Authenticator.requestPasswordAuthentication("localhost", InetAddress
.getByName("127.0.0.1"), 80, "HTTP", "", "", url,
RequestorType.PROXY);
fail("Should throw SecurityException");
} catch (SecurityException e) {
// expected
} finally {
System.setSecurityManager(oldSm);
Authenticator.setDefault(null);
}
}
/**
*
* @tests java.net.Authenticator#getRequestingURL()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getRequestingURL",
args = {}
)
public void test_getRequestingURL() throws Exception {
MockAuthenticator mock = new MockAuthenticator();
assertNull(mock.getRequestingURL());
}
/**
*
* @tests java.net.Authenticator#getRequestorType()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getRequestorType",
args = {}
)
public void test_getRequestorType() throws Exception {
MockAuthenticator mock = new MockAuthenticator();
assertNull(mock.getRequestorType());
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "setDefault",
args = {java.net.Authenticator.class}
)
public void test_setDefault() {
StubAuthenticator stub = new StubAuthenticator();
InetAddress addr;
try {
addr = InetAddress.getLocalHost();
PasswordAuthentication pa = Authenticator.
requestPasswordAuthentication(addr, 8080, "http", "promt", "HTTP");
assertNull(pa);
} catch (UnknownHostException e) {
fail("UnknownHostException was thrown.");
}
MockAuthenticator mock = new MockAuthenticator();
Authenticator.setDefault(mock);
try {
addr = InetAddress.getLocalHost();
PasswordAuthentication pa = Authenticator.
requestPasswordAuthentication(addr, 80, "http", "promt", "HTTP");
assertNull(pa);
} catch (UnknownHostException e) {
fail("UnknownHostException was thrown.");
}
Authenticator.setDefault(null);
SecurityManager sm = new SecurityManager() {
final String permissionName = "setDefaultAuthenticator";
public void checkPermission(Permission perm) {
if (perm.getName().equals(permissionName)) {
throw new SecurityException();
}
}
};
SecurityManager oldSm = System.getSecurityManager();
System.setSecurityManager(sm);
try {
Authenticator.setDefault(stub);
fail("Should throw SecurityException");
} catch (SecurityException e) {
// expected
} finally {
System.setSecurityManager(oldSm);
Authenticator.setDefault(null);
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "Authenticator",
args = {}
)
public void test_Constructor() {
MockAuthenticator ma = new MockAuthenticator();
assertNull(ma.getRequestingURL());
assertNull(ma.getRequestorType());
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getPasswordAuthentication",
args = {}
)
public void test_getPasswordAuthentication() {
MockAuthenticator ma = new MockAuthenticator();
assertNull(ma.getPasswordAuthentication());
}
/*
* Mock Authernticator for test
*/
class MockAuthenticator extends java.net.Authenticator {
public MockAuthenticator() {
super();
}
public URL getRequestingURL() {
return super.getRequestingURL();
}
public Authenticator.RequestorType getRequestorType() {
return super.getRequestorType();
}
public PasswordAuthentication getPasswordAuthentication() {
return super.getPasswordAuthentication();
}
public String getMockRequestingHost() {
return super.getRequestingHost();
}
public int getMockRequestingPort() {
return super.getRequestingPort();
}
public String getMockRequestingPrompt() {
return super.getRequestingPrompt();
}
public String getMockRequestingProtocol() {
return super.getRequestingProtocol();
}
public String getMockRequestingScheme() {
return super.getRequestingScheme();
}
public InetAddress getMockRequestingSite() {
return super.getRequestingSite();
}
}
class StubAuthenticator extends java.net.Authenticator {
public StubAuthenticator() {
super();
}
public URL getRequestingURL() {
return null;
}
public Authenticator.RequestorType getRequestorType() {
return null;
}
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("test",
new char[] {'t', 'e', 's', 't'});
}
}
}
|