/*
* 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.security.cert;
import dalvik.annotation.TestTargets;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
import dalvik.annotation.TestTargetClass;
import junit.framework.TestCase;
import java.security.cert.PolicyNode;
import java.security.cert.PolicyQualifierInfo;
import java.util.HashSet;
import java.util.Set;
import java.util.Iterator;
import org.apache.harmony.security.tests.support.cert.PolicyNodeImpl;
/**
* Tests for <code>java.security.cert.PolicyNode</code> fields and methods
*
*/
@TestTargetClass(PolicyNode.class)
public class PolicyNodeTest extends TestCase {
private String validPolicy = "ValidPolicy";
private String anyPolicy = "2.5.29.32.0";
private boolean criticalityIndicator = true;
private HashSet hs = null;
/**
* Returns valid DER encoding for the following ASN.1 definition
* (as specified in RFC 3280 -
* Internet X.509 Public Key Infrastructure.
* Certificate and Certificate Revocation List (CRL) Profile.
* http://www.ietf.org/rfc/rfc3280.txt):
*
* PolicyQualifierInfo ::= SEQUENCE {
* policyQualifierId PolicyQualifierId,
* qualifier ANY DEFINED BY policyQualifierId
* }
*
* where policyQualifierId (OID) is
* 1.3.6.1.5.5.7.2.1
* and qualifier (IA5String) is
* "http://www.qq.com/stmt.txt"
*
* (data generated by own encoder during test development)
*/
private static final byte[] getDerEncoding() {
// DO NOT MODIFY!
return new byte[] {
(byte)0x30, (byte)0x26, // tag Seq, length
(byte)0x06, (byte)0x08, // tag OID, length
(byte)0x2b, (byte)0x06, (byte)0x01, (byte)0x05, // oid value
(byte)0x05, (byte)0x07, (byte)0x02, (byte)0x01, // oid value
(byte)0x16, (byte)0x1a, // tag IA5String, length
(byte)0x68, (byte)0x74, (byte)0x74, (byte)0x70, // IA5String value
(byte)0x3a, (byte)0x2f, (byte)0x2f, (byte)0x77, // IA5String value
(byte)0x77, (byte)0x77, (byte)0x2e, (byte)0x71, // IA5String value
(byte)0x71, (byte)0x2e, (byte)0x63, (byte)0x6f, // IA5String value
(byte)0x6d, (byte)0x2f, (byte)0x73, (byte)0x74, // IA5String value
(byte)0x6d, (byte)0x74, (byte)0x2e, (byte)0x74, // IA5String value
(byte)0x78, (byte)0x74 // IA5String value
};
}
protected void setUp() {
hs = new HashSet();
hs.add(new String("StringParameter1"));
hs.add(new String("StringParameter2"));
hs.add(new String("StringParameter3"));
}
protected void setUp1() {
hs = new HashSet();
try {
hs.add(new PolicyQualifierInfo(getDerEncoding()));
} catch (Exception e) {
fail("Ezxception " + e + " for setUp1()");
}
}
class MyPolicyNode extends PolicyNodeImpl {
MyPolicyNode(PolicyNodeImpl policynode, String s, Set set,
boolean flag, Set set1, boolean flag1) {
super(policynode, s, set, flag, set1, flag1);
}
}
//
// Tests
//
/**
* @tests java.security.cert.PolicyNode#getDepth()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getDepth",
args = {}
)
public final void test_getDepth() {
MyPolicyNode pn = new MyPolicyNode(null, validPolicy, null, criticalityIndicator, null, true);
try {
assertEquals(pn.getDepth(), 0);
} catch (Exception e) {
fail("Unexpected exception: " + e);
}
MyPolicyNode pn1 = new MyPolicyNode(pn, validPolicy, null, criticalityIndicator, null, true);
try {
assertEquals(pn1.getDepth(), 1);
} catch (Exception e) {
fail("Unexpected exception: " + e);
}
}
/**
* @tests java.security.cert.PolicyNode#getValidPolicy()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getValidPolicy",
args = {}
)
public final void test_getValidPolicy() {
MyPolicyNode pn = new MyPolicyNode(null, null, null, criticalityIndicator, null, true);
try {
assertEquals(pn.getValidPolicy(), "");
} catch (Exception e) {
fail("Unexpected exception: " + e);
}
pn = new MyPolicyNode(pn, validPolicy, null, criticalityIndicator, null, true);
try {
assertEquals(pn.getValidPolicy(), "ValidPolicy");
} catch (Exception e) {
fail("Unexpected exception: " + e);
}
pn = new MyPolicyNode(pn, anyPolicy, null, criticalityIndicator, null, true);
try {
assertEquals(pn.getValidPolicy(), "2.5.29.32.0");
} catch (Exception e) {
fail("Unexpected exception: " + e);
}
}
/**
* @tests java.security.cert.PolicyNode#isCritical()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "isCritical",
args = {}
)
public final void test_isCritical() {
MyPolicyNode pn = new MyPolicyNode(null, anyPolicy, null, criticalityIndicator, null, true);
try {
assertEquals(pn.isCritical(), true);
} catch (Exception e) {
fail("Unexpected exception: " + e);
}
criticalityIndicator = false;
pn = new MyPolicyNode(null, validPolicy, null, criticalityIndicator, null, true);
try {
assertEquals(pn.isCritical(), false);
} catch (Exception e) {
fail("Unexpected exception: " + e);
}
}
/**
* @tests java.security.cert.PolicyNode#getParent()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getParent",
args = {}
)
public final void test_getParent() {
MyPolicyNode pn = new MyPolicyNode(null, anyPolicy, null, criticalityIndicator, null, true);
try {
assertNull(pn.getParent());
assertEquals(pn.getDepth(), 0);
} catch (Exception e) {
fail("Unexpected exception: " + e);
}
MyPolicyNode pn1 = new MyPolicyNode(pn, anyPolicy, null, criticalityIndicator, null, true);
try {
PolicyNode newPN = pn1.getParent();
assertEquals(newPN.getDepth(), 0);
} catch (Exception e) {
fail("Unexpected exception: " + e);
}
MyPolicyNode pn2 = new MyPolicyNode(pn1, anyPolicy, null, criticalityIndicator, null, true);
try {
PolicyNode newPN = pn2.getParent();
assertEquals(newPN.getDepth(), 1);
} catch (Exception e) {
fail("Unexpected exception: " + e);
}
}
/**
* @tests java.security.cert.PolicyNode#getExpectedPolicies()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getExpectedPolicies",
args = {}
)
public final void test_getExpectedPolicies() {
setUp();
MyPolicyNode pn = new MyPolicyNode(null, anyPolicy, null, criticalityIndicator, hs, true);
try {
Set res = pn.getExpectedPolicies();
assertEquals(res.size(), hs.size());
assertEquals(res, hs);
} catch (Exception e) {
fail("Unexpected exception: " + e);
}
}
/**
* @tests java.security.cert.PolicyNode#getPolicyQualifiers()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getPolicyQualifiers",
args = {}
)
public final void test_getPolicyQualifiers() {
setUp1();
MyPolicyNode pn = new MyPolicyNode(null, anyPolicy, hs, criticalityIndicator, null, true);
try {
Set res = pn.getPolicyQualifiers();
assertEquals(res.size(), hs.size());
assertEquals(res, hs);
} catch (Exception e) {
fail("Unexpected exception: " + e);
}
}
/**
* @tests java.security.cert.PolicyNode#getChildren()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getChildren",
args = {}
)
public final void test_getChildren() {
MyPolicyNode pn = new MyPolicyNode(null, anyPolicy, null, criticalityIndicator, null, true);
Iterator it = pn.getChildren();
try {
it.remove();
fail("UnsupportedOperationException was not thrown");
} catch (UnsupportedOperationException uoe) {
//expected
}
MyPolicyNode pn1 = new MyPolicyNode(pn, anyPolicy, null, criticalityIndicator, null, true);
try {
it = pn1.getChildren();
assertFalse(it.hasNext());
} catch (Exception e) {
fail("Unexpected exception: " + e);
}
}
} |