blob: 5c7b2537365ac1b559cae2eed6fc1eae189ab5ac [file] [log] [blame]
/*
* 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 org.apache.harmony.security.tests.java.security;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.TestTargetNew;
import dalvik.annotation.TestLevel;
import java.io.Serializable;
import java.security.AllPermission;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.Permission;
import java.security.PermissionCollection;
import java.security.PublicKey;
import java.security.SecurityPermission;
import java.security.SignatureException;
import java.security.UnresolvedPermission;
import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.util.Arrays;
import java.util.Enumeration;
import org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert;
import org.apache.harmony.testframework.serialization.SerializationTest;
import tests.util.SerializationTester;
import org.apache.harmony.testframework.serialization.SerializationTest;
import org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert;
import tests.util.SerializationTester;
import junit.framework.TestCase;
@TestTargetClass(UnresolvedPermission.class)
/**
* Tests for <code>UnresolvedPermission</code> class fields and methods
*
*/
public class UnresolvedPermissionTest extends TestCase {
/**
* Creates an Object with given name, type, action, certificates. Empty or
* null type is not allowed - exception should be thrown.
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "UnresolvedPermission",
args = {java.lang.String.class, java.lang.String.class, java.lang.String.class, java.security.cert.Certificate[].class}
)
public void testCtor() {
String type = "laskjhlsdk 2345346";
String name = "^%#UHVKU^%V 887y";
String action = "JHB ^%(*&T klj3h4";
UnresolvedPermission up = new UnresolvedPermission(type, name, action,
null);
assertEquals(type, up.getName());
assertEquals("", up.getActions());
assertEquals("(unresolved " + type + " " + name + " " + action + ")",
up.toString());
up = new UnresolvedPermission(type, null, null, null);
assertEquals(type, up.getName());
assertEquals("", up.getActions());
assertEquals("(unresolved " + type + " null null)", up.toString());
up = new UnresolvedPermission(type, "", "",
new java.security.cert.Certificate[0]);
assertEquals(type, up.getName());
assertEquals("", up.getActions());
assertEquals("(unresolved " + type + " )", up.toString());
try {
new UnresolvedPermission(null, name, action, null);
fail("No expected NullPointerException");
} catch (NullPointerException ok) {
}
// Regression for HARMONY-733
up = new UnresolvedPermission("", "name", "action", null);
assertEquals("", up.getName());
}
/**
* UnresolvedPermission never implies any other permission.
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "implies",
args = {java.security.Permission.class}
)
public void testImplies() {
UnresolvedPermission up = new UnresolvedPermission(
"java.security.SecurityPermission", "a.b.c", null, null);
assertFalse(up.implies(up));
assertFalse(up.implies(new AllPermission()));
assertFalse(up.implies(new SecurityPermission("a.b.c")));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "!SerializationSelf",
args = {}
)
public void testSerialization() throws Exception {
UnresolvedPermission up = new UnresolvedPermission(
"java.security.SecurityPermission", "a.b.c", "actions", null);
assertEquals("java.security.SecurityPermission", up.getUnresolvedType());
assertEquals("a.b.c", up.getUnresolvedName());
assertEquals("actions", up.getUnresolvedActions());
assertNull(up.getUnresolvedCerts());
UnresolvedPermission deserializedUp = (UnresolvedPermission) SerializationTester
.getDeserilizedObject(up);
assertEquals("java.security.SecurityPermission", deserializedUp
.getUnresolvedType());
assertEquals("a.b.c", deserializedUp.getUnresolvedName());
assertEquals("actions", deserializedUp.getUnresolvedActions());
assertNull(deserializedUp.getUnresolvedCerts());
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "!SerializationGolden",
args = {}
)
public void testSerialization_Compatibility() throws Exception {
UnresolvedPermission up = new UnresolvedPermission(
"java.security.SecurityPermission", "a.b.c", "actions", null);
assertEquals("java.security.SecurityPermission", up.getUnresolvedType());
assertEquals("a.b.c", up.getUnresolvedName());
assertEquals("actions", up.getUnresolvedActions());
assertNull(up.getUnresolvedCerts());
SerializationTest.verifyGolden(this, up, new SerializableAssert() {
public void assertDeserialized(Serializable orig, Serializable ser) {
UnresolvedPermission deserializedUp = (UnresolvedPermission) ser;
assertEquals("java.security.SecurityPermission", deserializedUp
.getUnresolvedType());
assertEquals("a.b.c", deserializedUp.getUnresolvedName());
assertEquals("actions", deserializedUp.getUnresolvedActions());
assertNull(deserializedUp.getUnresolvedCerts());
}
});
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "equals",
args = {java.lang.Object.class}
)
public void testEquals() {
UnresolvedPermission up1 = new UnresolvedPermission("type1", "name1",
"action1", null);
UnresolvedPermission up2 = new UnresolvedPermission("type1", "name1",
"action1", null);
UnresolvedPermission up3 = new UnresolvedPermission("type3", "name3",
"action3", null);
UnresolvedPermission up4 = null;
assertTrue(up1.equals(up1));
assertTrue(up2.equals(up2));
assertTrue(up3.equals(up3));
assertTrue(!up1.equals(null));
assertTrue(!up2.equals(null));
assertTrue(!up3.equals(null));
assertTrue(up1.equals(up2));
assertTrue(!up1.equals(up3));
assertTrue(up2.equals(up1));
assertTrue(!up2.equals(up3));
assertTrue(!up3.equals(up1));
assertTrue(!up3.equals(up2));
try {
assertTrue(up4.equals(up1));
fail("NullPointerException expected");
} catch (NullPointerException e) {
// expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getActions",
args = {}
)
public void testGetActions() {
UnresolvedPermission up1 = new UnresolvedPermission("type1", "name1",
"action1", null);
UnresolvedPermission up2 = null;
assertEquals("", up1.getActions());
try {
up2.getActions();
fail("NullPointerException expected");
} catch (NullPointerException e) {
// expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getUnresolvedActions",
args = {}
)
public void testGetUnresolvedActions() {
UnresolvedPermission up1 = new UnresolvedPermission("type1", "name1",
"action1 @#$%^&*", null);
UnresolvedPermission up2 = null;
assertEquals("action1 @#$%^&*", up1.getUnresolvedActions());
try {
up2.getUnresolvedActions();
fail("NullPointerException expected");
} catch (NullPointerException e) {
// expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getUnresolvedCerts",
args = {}
)
public void testGetUnresolvedCerts() {
Certificate[] certificate = new java.security.cert.Certificate[] {
new Certificate(null) {
@Override
public byte[] getEncoded()
throws CertificateEncodingException {
// TODO Auto-generated method stub
return null;
}
@Override
public PublicKey getPublicKey() {
// TODO Auto-generated method stub
return null;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return null;
}
@Override
public void verify(PublicKey key)
throws CertificateException,
NoSuchAlgorithmException, InvalidKeyException,
NoSuchProviderException, SignatureException {
// TODO Auto-generated method stub
}
@Override
public void verify(PublicKey key, String sigProvider)
throws CertificateException,
NoSuchAlgorithmException, InvalidKeyException,
NoSuchProviderException, SignatureException {
// TODO Auto-generated method stub
}
}
};
UnresolvedPermission up1 = new UnresolvedPermission("type1", "name1",
"action1 @#$%^&*", null);
UnresolvedPermission up2 = null;
UnresolvedPermission up3 = new UnresolvedPermission("type3", "name3",
"action3", certificate);
assertNull(up1.getUnresolvedCerts());
assertTrue(Arrays.equals(certificate, up3.getUnresolvedCerts()));
try {
up2.getUnresolvedCerts();
fail("NullPointerException expected");
} catch (NullPointerException e) {
// expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getUnresolvedName",
args = {}
)
public void testGetUnresolvedName() {
UnresolvedPermission up1 = new UnresolvedPermission("type1", "name1!@#$%^&&* )(",
"action1 @#$%^&*", null);
UnresolvedPermission up2 = null;
assertEquals("name1!@#$%^&&* )(", up1.getUnresolvedName());
try {
up2.getUnresolvedName();
fail("NullPointerException expected");
} catch (NullPointerException e) {
// expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getUnresolvedType",
args = {}
)
public void testGetUnresolvedType() {
UnresolvedPermission up1 = new UnresolvedPermission("type1@#$%^&* )(", "name1",
"action1", null);
UnresolvedPermission up2 = null;
assertEquals("type1@#$%^&* )(", up1.getUnresolvedType());
try {
up2.getUnresolvedType();
fail("NullPointerException expected");
} catch (NullPointerException e) {
// expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "hashCode",
args = {}
)
public void testHashCode() {
UnresolvedPermission up1 = new UnresolvedPermission("type1", "name1",
"action1", null);
UnresolvedPermission up2 = new UnresolvedPermission("type1", "name1",
"action1", null);
UnresolvedPermission up3 = new UnresolvedPermission("type3", "name3",
"action3", null);
UnresolvedPermission up4 = null;
assertTrue(up1.hashCode() == up2.hashCode());
assertTrue(up1.hashCode() != up3.hashCode());
assertTrue(up2.hashCode() != up3.hashCode());
try {
up4.hashCode();
fail("NullPointerException expected");
} catch (NullPointerException e) {
// expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "newPermissionCollection",
args = {}
)
public void testNewPermissionCollection() {
UnresolvedPermission up1 = new UnresolvedPermission("type1", "name1",
"action1", null);
UnresolvedPermission up2 = new UnresolvedPermission("type1", "name1",
"action1", null);
UnresolvedPermission up3 = null;
PermissionCollection pc = up1.newPermissionCollection();
assertTrue(!pc.isReadOnly());
pc.add(up1);
pc.add(up2);
Enumeration<Permission> permissions = pc.elements();
assertNotNull(permissions);
assertTrue("Should imply", !pc.implies(up1));
assertTrue("Should not imply", !pc.implies(up3));
try {
up3.newPermissionCollection();
fail("NullPointerException expected");
} catch (NullPointerException e) {
// expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "toString",
args = {}
)
public void testToString() {
UnresolvedPermission up1 = new UnresolvedPermission("type1", "name1",
"action1", null);
UnresolvedPermission up2 = new UnresolvedPermission("type1", "name1",
"action1", null);
UnresolvedPermission up3 = null;
assertTrue(up1.toString().contains(""));
assertTrue(up2.toString().contains(""));
try {
up3.toString();
fail("NullPointerException expected");
}catch (NullPointerException e) {
// expected
}
}
}