You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ml...@apache.org on 2006/06/01 10:15:44 UTC
svn commit: r410788 [6/13] - in
/incubator/harmony/enhanced/classlib/trunk/modules: auth/make/common/
auth/src/test/java/common/javax/security/auth/
auth/src/test/java/common/javax/security/auth/callback/serialization/
auth/src/test/java/common/javax/s...
Added: incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/cert/X509CRLSelectorTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/cert/X509CRLSelectorTest.java?rev=410788&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/cert/X509CRLSelectorTest.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java.injected/java/security/cert/X509CRLSelectorTest.java Thu Jun 1 01:15:17 2006
@@ -0,0 +1,590 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * 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.
+ */
+
+/**
+* @author Alexander Y. Kleymenov
+* @version $Revision$
+*/
+
+package java.security.cert;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.Principal;
+import java.security.PublicKey;
+import java.security.SignatureException;
+import java.security.cert.CRLException;
+import java.security.cert.X509CRLEntry;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Set;
+import javax.security.auth.x500.X500Principal;
+
+import org.apache.harmony.security.asn1.ASN1Integer;
+import org.apache.harmony.security.asn1.ASN1OctetString;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ */
+
+public class X509CRLSelectorTest extends TestCase {
+
+ /**
+ * The abstract class stub implementation.
+ */
+ private class TestCRL extends X509CRL {
+
+ private X500Principal principal = null;
+ private BigInteger crlNumber = null;
+ private Date thisUpdate = null;
+ private Date nextUpdate = null;
+
+ public TestCRL(X500Principal principal) {
+ this.principal = principal;
+ }
+
+ public TestCRL(Date thisUpdate, Date nextUpdate) {
+ setUpdateDates(thisUpdate, nextUpdate);
+ }
+
+ public TestCRL(BigInteger crlNumber) {
+ setCrlNumber(crlNumber);
+ }
+
+ public void setUpdateDates(Date thisUpdate, Date nextUpdate) {
+ this.thisUpdate = thisUpdate;
+ this.nextUpdate = nextUpdate;
+ }
+
+ public void setCrlNumber(BigInteger crlNumber) {
+ this.crlNumber = crlNumber;
+ }
+
+ public X500Principal getIssuerX500Principal() {
+ return principal;
+ }
+
+ public String toString() {
+ return null;
+ }
+
+ public boolean isRevoked(Certificate cert) {
+ return true;
+ }
+
+ public Set getNonCriticalExtensionOIDs() {
+ return null;
+ }
+
+ public Set getCriticalExtensionOIDs() {
+ return null;
+ }
+
+ public byte[] getExtensionValue(String oid) {
+ if ("2.5.29.20".equals(oid) && (crlNumber != null)) {
+ return ASN1OctetString.getInstance().encode(
+ ASN1Integer.getInstance().encode(
+ crlNumber.toByteArray()));
+ }
+ return null;
+ }
+
+ public boolean hasUnsupportedCriticalExtension() {
+ return false;
+ }
+
+ public byte[] getEncoded() {
+ return null;
+ }
+
+ public void verify(PublicKey key)
+ throws CRLException, NoSuchAlgorithmException,
+ InvalidKeyException, NoSuchProviderException,
+ SignatureException
+ {
+ }
+
+ public void verify(PublicKey key, String sigProvider)
+ throws CRLException, NoSuchAlgorithmException,
+ InvalidKeyException, NoSuchProviderException,
+ SignatureException
+ {
+ }
+
+ public int getVersion() {
+ return 2;
+ }
+
+ public Principal getIssuerDN() {
+ return null;
+ }
+
+ public Date getThisUpdate() {
+ return thisUpdate;
+ }
+
+ public Date getNextUpdate() {
+ return nextUpdate;
+ }
+
+ public X509CRLEntry getRevokedCertificate(BigInteger serialNumber) {
+ return null;
+ }
+
+ public Set getRevokedCertificates() {
+ return null;
+ }
+
+ public byte[] getTBSCertList() {
+ return null;
+ }
+
+ public byte[] getSignature() {
+ return null;
+ }
+
+ public String getSigAlgName() {
+ return null;
+ }
+
+ public String getSigAlgOID() {
+ return null;
+ }
+
+ public byte[] getSigAlgParams() {
+ return null;
+ }
+ }
+
+ /**
+ * setIssuers(Collection <X500Principal> issuers) method testing.
+ * Tests if CRLs with any issuers match the selector in the case of
+ * null issuerNames criteria, if specified issuers match the selector,
+ * and if not specified issuer does not match the selector.
+ */
+ public void testSetIssuers() {
+ X509CRLSelector selector = new X509CRLSelector();
+ X500Principal iss1 = new X500Principal("O=First Org.");
+ X500Principal iss2 = new X500Principal("O=Second Org.");
+ X500Principal iss3 = new X500Principal("O=Third Org.");
+ TestCRL crl1 = new TestCRL(iss1);
+ TestCRL crl2 = new TestCRL(iss2);
+ TestCRL crl3 = new TestCRL(iss3);
+
+ selector.setIssuers(null);
+ assertTrue("Any CRL issuers should match in the case of null issuers.",
+ selector.match(crl1) && selector.match(crl2));
+
+ ArrayList issuers = new ArrayList(2);
+ issuers.add(iss1);
+ issuers.add(iss2);
+ selector.setIssuers(issuers);
+ assertTrue("The CRL should match the selection criteria.",
+ selector.match(crl1) && selector.match(crl2));
+ assertFalse("The CRL should not match the selection criteria.",
+ selector.match(crl3));
+ issuers.add(iss3);
+ assertFalse("The internal issuer collection is not protected "
+ + "against the modifications.", selector.match(crl3));
+ }
+
+ /**
+ * setIssuerNames(Collection <?> names) method testing.
+ * Tests if CRLs with any issuers match the selector in the case of
+ * null issuerNames criteria, if specified issuers match the selector,
+ * if not specified issuer does not match the selector, and if the
+ * internal collection of issuer names is copied during initialization.
+ */
+ public void testSetIssuerNames() {
+ X509CRLSelector selector = new X509CRLSelector();
+ String iss1 = "O=First Org.";
+ byte[] iss2 = new byte[]
+ //manually obtained DER encoding of "O=Second Org." issuer name;
+ {48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11,
+ 83, 101, 99, 111, 110, 100, 32, 79, 114, 103, 46};
+ String iss3 = "O=Third Org.";
+ TestCRL crl1 = new TestCRL(new X500Principal(iss1));
+ TestCRL crl2 = new TestCRL(new X500Principal(iss2));
+ TestCRL crl3 = new TestCRL(new X500Principal(iss3));
+
+ try {
+ selector.setIssuerNames(null);
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail("Unexpected IOException was thrown.");
+ }
+ assertTrue("Any CRL issuers should match in the case of null issuers.",
+ selector.match(crl1) && selector.match(crl2));
+
+ ArrayList issuers = new ArrayList(2);
+ issuers.add(iss1);
+ issuers.add(iss2);
+ try {
+ selector.setIssuerNames(issuers);
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail("Unexpected IOException was thrown.");
+ }
+ assertTrue("The CRL should match the selection criteria.",
+ selector.match(crl1) && selector.match(crl2));
+ assertFalse("The CRL should not match the selection criteria.",
+ selector.match(crl3));
+ issuers.add(iss3);
+ assertFalse("The internal issuer collection is not protected "
+ + "against the modifications.", selector.match(crl3));
+ }
+
+ /**
+ * addIssuer(X500Principal issuer) method testing.
+ * Tests if CRLs with specified issuers match the selector,
+ * and if not specified issuer does not match the selector.
+ */
+ public void testAddIssuer() {
+ X509CRLSelector selector = new X509CRLSelector();
+ X500Principal iss1 = new X500Principal("O=First Org.");
+ X500Principal iss2 = new X500Principal("O=Second Org.");
+ TestCRL crl1 = new TestCRL(iss1);
+ TestCRL crl2 = new TestCRL(iss2);
+
+ selector.addIssuer(iss1);
+ assertTrue("The CRL should match the selection criteria.",
+ selector.match(crl1));
+ assertFalse("The CRL should not match the selection criteria.",
+ selector.match(crl2));
+ selector.addIssuer(iss2);
+ assertTrue("The CRL should match the selection criteria.",
+ selector.match(crl2));
+ }
+
+ /**
+ * addIssuerName(String name) method testing.
+ * Tests if CRLs with specified issuers match the selector,
+ * and if not specified issuer does not match the selector.
+ */
+ public void testAddIssuerName1() {
+ X509CRLSelector selector = new X509CRLSelector();
+ String iss1 = "O=First Org.";
+ String iss2 = "O=Second Org.";
+ TestCRL crl1 = new TestCRL(new X500Principal(iss1));
+ TestCRL crl2 = new TestCRL(new X500Principal(iss2));
+
+ try {
+ selector.addIssuerName(iss1);
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail("Unexpected IOException was thrown.");
+ }
+ assertTrue("The CRL should match the selection criteria.",
+ selector.match(crl1));
+ assertFalse("The CRL should not match the selection criteria.",
+ selector.match(crl2));
+ try {
+ selector.addIssuerName(iss2);
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail("Unexpected IOException was thrown.");
+ }
+ assertTrue("The CRL should match the selection criteria.",
+ selector.match(crl2));
+ }
+
+ /**
+ * addIssuerName(byte[] name) method testing.
+ * Tests if CRLs with specified issuers match the selector,
+ * and if not specified issuer does not match the selector.
+ */
+ public void testAddIssuerName2() {
+ X509CRLSelector selector = new X509CRLSelector();
+ byte[] iss1 = new byte[]
+ //manually obtained DER encoding of "O=First Org." issuer name;
+ {48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10,
+ 70, 105, 114, 115, 116, 32, 79, 114, 103, 46};
+ byte[] iss2 = new byte[]
+ //manually obtained DER encoding of "O=Second Org." issuer name;
+ {48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11,
+ 83, 101, 99, 111, 110, 100, 32, 79, 114, 103, 46};
+ TestCRL crl1 = new TestCRL(new X500Principal(iss1));
+ TestCRL crl2 = new TestCRL(new X500Principal(iss2));
+
+ try {
+ selector.addIssuerName(iss1);
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail("Unexpected IOException was thrown.");
+ }
+ assertTrue("The CRL should match the selection criteria.",
+ selector.match(crl1));
+ assertFalse("The CRL should not match the selection criteria.",
+ selector.match(crl2));
+ try {
+ selector.addIssuerName(iss2);
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail("Unexpected IOException was thrown.");
+ }
+ assertTrue("The CRL should match the selection criteria.",
+ selector.match(crl2));
+ }
+
+ /**
+ * setMinCRLNumber(BigInteger minCRL) method testing.
+ * Tests if CRLs with any crl number value match the selector in the case of
+ * null crlNumber criteria, if specified minCRL value matches the selector,
+ * and if CRL with inappropriate crlNumber value does not match the selector.
+ */
+ public void testSetMinCRLNumber() {
+ X509CRLSelector selector = new X509CRLSelector();
+ BigInteger minCRL = new BigInteger("10000");
+ TestCRL crl = new TestCRL(minCRL);
+
+ selector.setMinCRLNumber(null);
+ assertTrue("Any CRL should match in the case of null minCRLNumber.",
+ selector.match(crl));
+ selector.setMinCRLNumber(minCRL);
+ assertTrue("The CRL should match the selection criteria.",
+ selector.match(crl));
+ selector.setMinCRLNumber(new BigInteger("10001"));
+ assertFalse("The CRL should not match the selection criteria.",
+ selector.match(crl));
+ }
+
+ /**
+ * setMaxCRLNumber(BigInteger maxCRL) method testing.
+ * Tests if CRLs with any crl number value match the selector in the case of
+ * null crlNumber criteria, if specified maxCRL value matches the selector,
+ * and if CRL with inappropriate crlNumber value does not match the selector.
+ */
+ public void testSetMaxCRLNumber() {
+ X509CRLSelector selector = new X509CRLSelector();
+ BigInteger maxCRL = new BigInteger("10000");
+ TestCRL crl = new TestCRL(maxCRL);
+
+ selector.setMaxCRLNumber(null);
+ assertTrue("Any CRL should match in the case of null minCRLNumber.",
+ selector.match(crl));
+ selector.setMaxCRLNumber(maxCRL);
+ assertTrue("The CRL should match the selection criteria.",
+ selector.match(crl));
+ selector.setMaxCRLNumber(new BigInteger("9999"));
+ assertFalse("The CRL should not match the selection criteria.",
+ selector.match(crl));
+ }
+
+ /**
+ * setDateAndTime(Date dateAndTime) method testing.
+ * Tests if CRLs with any update dates match the selector in the case of
+ * null dateAndTime criteria, if correct dates match and incorrect
+ * do not match the selector.
+ */
+ public void testSetDateAndTime() {
+ X509CRLSelector selector = new X509CRLSelector();
+ TestCRL crl = new TestCRL(new Date(200), new Date(300));
+ selector.setDateAndTime(null);
+ assertTrue("Any CRL should match in the case of null dateAndTime.",
+ selector.match(crl));
+ selector.setDateAndTime(new Date(200));
+ assertTrue("The CRL should match the selection criteria.",
+ selector.match(crl));
+ selector.setDateAndTime(new Date(250));
+ assertTrue("The CRL should match the selection criteria.",
+ selector.match(crl));
+ selector.setDateAndTime(new Date(300));
+ assertTrue("The CRL should match the selection criteria.",
+ selector.match(crl));
+ selector.setDateAndTime(new Date(150));
+ assertFalse("The CRL should not match the selection criteria.",
+ selector.match(crl));
+ selector.setDateAndTime(new Date(350));
+ assertFalse("The CRL should not match the selection criteria.",
+ selector.match(crl));
+ }
+
+ /**
+ * getIssuers() method testing.
+ * Tests if the method return null in the case of not specified issuers,
+ * if the returned collection corresponds to the specified issuers and
+ * this collection is unmodifiable.
+ */
+ public void testGetIssuers() {
+ X509CRLSelector selector = new X509CRLSelector();
+ X500Principal iss1 = new X500Principal("O=First Org.");
+ X500Principal iss2 = new X500Principal("O=Second Org.");
+ X500Principal iss3 = new X500Principal("O=Third Org.");
+ assertNull("The collection should be null.",
+ selector.getIssuers());
+ selector.addIssuer(iss1);
+ selector.addIssuer(iss2);
+ Collection result = selector.getIssuers();
+ try {
+ result.add(iss3);
+ fail("The returned collection should be unmodifiable.");
+ } catch (UnsupportedOperationException e) {
+ }
+ assertTrue("The collection should contain the specified DN.",
+ result.contains(iss2));
+ }
+
+ /**
+ * getIssuerNames() method testing.
+ * Tests if the method return null in the case of not specified issuers,
+ * if the returned collection corresponds to the specified issuers.
+ */
+ public void testGetIssuerNames() {
+ X509CRLSelector selector = new X509CRLSelector();
+ byte[] iss1 = new byte[]
+ //manually obtained DER encoding of "O=First Org." issuer name;
+ {48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10,
+ 70, 105, 114, 115, 116, 32, 79, 114, 103, 46};
+ byte[] iss2 = new byte[]
+ //manually obtained DER encoding of "O=Second Org." issuer name;
+ {48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11,
+ 83, 101, 99, 111, 110, 100, 32, 79, 114, 103, 46};
+ assertNull("The collection should be null.",
+ selector.getIssuerNames());
+ try {
+ selector.addIssuerName(iss1);
+ selector.addIssuerName(iss2);
+ } catch (IOException e) {
+ e.printStackTrace();
+ fail("Unexpected IOException was thrown.");
+ }
+ Collection result = selector.getIssuerNames();
+ assertEquals("The collection should contain all of the specified DNs.",
+ 2, result.size());
+ }
+
+ /**
+ * getMinCRL() method testing.
+ * Tests if the method return null in the case of not specified minCRL
+ * criteria, and if the returned value corresponds to the specified one.
+ */
+ public void testGetMinCRL() {
+ X509CRLSelector selector = new X509CRLSelector();
+ assertNull("Initially the minCRL should be null.",
+ selector.getMinCRL());
+ BigInteger minCRL = new BigInteger("10000");
+ selector.setMinCRLNumber(minCRL);
+ assertTrue("The result should be equal to specified.",
+ minCRL.equals(selector.getMinCRL()));
+ }
+
+ /**
+ * getMaxCRL() method testing.
+ * Tests if the method return null in the case of not specified maxCRL
+ * criteria, and if the returned value corresponds to the specified one.
+ */
+ public void testGetMaxCRL() {
+ X509CRLSelector selector = new X509CRLSelector();
+ assertNull("Initially the maxCRL should be null.",
+ selector.getMaxCRL());
+ BigInteger maxCRL = new BigInteger("10000");
+ selector.setMaxCRLNumber(maxCRL);
+ assertTrue("The result should be equal to specified.",
+ maxCRL.equals(selector.getMaxCRL()));
+ }
+
+ /**
+ * getDateAndTime() method testing.
+ * Tests if the method return null in the case of not specified dateAndTime
+ * criteria, and if the returned value corresponds to the specified one.
+ */
+ public void testGetDateAndTime() {
+ X509CRLSelector selector = new X509CRLSelector();
+ assertNull("Initially the dateAndTime criteria should be null.",
+ selector.getDateAndTime());
+ Date date = new Date(200);
+ selector.setDateAndTime(date);
+ assertTrue("The result should be equal to specified.",
+ date.equals(selector.getDateAndTime()));
+ }
+
+ /**
+ * match(CRL crl) method testing.
+ * Tests if the null object matches to the selector or not.
+ */
+ public void testMatch() {
+ X509CRLSelector selector = new X509CRLSelector();
+ assertFalse("The null object should not match",
+ selector.match((X509CRL) null));
+ }
+
+ /**
+ * clone() method testing.
+ * Tests if the selector is cloned correctly: the crl which matche to
+ * the initial selector should match to the clone and the change of clone
+ * should not cause the change of initial selector.
+ */
+ public void testClone() {
+ X509CRLSelector selector = new X509CRLSelector();
+ X500Principal iss1 = new X500Principal("O=First Org.");
+ X500Principal iss2 = new X500Principal("O=Second Org.");
+ X500Principal iss3 = new X500Principal("O=Third Org.");
+ BigInteger minCRL = new BigInteger("10000");
+ BigInteger maxCRL = new BigInteger("10000");
+ Date date = new Date(200);
+
+ selector.addIssuer(iss1);
+ selector.addIssuer(iss2);
+ selector.setMinCRLNumber(minCRL);
+ selector.setMaxCRLNumber(maxCRL);
+ selector.setDateAndTime(date);
+
+ X509CRLSelector clone = (X509CRLSelector) selector.clone();
+ TestCRL crl = new TestCRL(iss1);
+ crl.setCrlNumber(minCRL);
+ crl.setUpdateDates(new Date(200), new Date(200));
+ assertTrue("The specified CRL should match the clone selector.",
+ selector.match(crl));
+
+ clone.addIssuer(iss3);
+ assertFalse("The changes of the clone selector should not cause "
+ + "the changes of initial object",
+ selector.getIssuerNames().size() == 3);
+ }
+
+ public void testToString() {
+ X509CRLSelector selector = new X509CRLSelector();
+ X500Principal iss1 = new X500Principal("O=First Org.");
+ X500Principal iss2 = new X500Principal("O=Second Org.");
+ BigInteger minCRL = new BigInteger("10000");
+ BigInteger maxCRL = new BigInteger("10000");
+ Date date = new Date(200);
+
+ selector.addIssuer(iss1);
+ selector.addIssuer(iss2);
+ selector.setMinCRLNumber(minCRL);
+ selector.setMaxCRLNumber(maxCRL);
+ selector.setDateAndTime(date);
+
+ assertNotNull("The result should not be null.", selector.toString());
+ }
+
+ public static Test suite() {
+ return new TestSuite(X509CRLSelectorTest.class);
+ }
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(suite());
+ }
+}
+