/* * 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. */ /** * @author Vera Y. Petrashkova * @version $Revision$ */ package tests.security.cert; import junit.framework.TestCase; import java.security.cert.CertPath; import java.security.cert.CertPathValidatorException; import java.security.cert.Certificate; import java.util.Iterator; import java.util.List; import java.util.StringTokenizer; import java.util.Vector; /** * Tests for <code>CertPathValidatorException</code> class constructors and * methods. * */ public class CertPathValidatorExceptionTest extends TestCase { private static String[] msgs = { "", "Check new message", "Check new message Check new message Check new message Check new message Check new message" }; private static Throwable tCause = new Throwable("Throwable for exception"); /** * Test for <code>CertPathValidatorException()</code> constructor * Assertion: constructs CertPathValidatorException with no detail message */ public void testCertPathValidatorException01() { CertPathValidatorException tE = new CertPathValidatorException(); assertNull("getMessage() must return null.", tE.getMessage()); assertNull("getCause() must return null", tE.getCause()); } /** * Test for <code>CertPathValidatorException(String)</code> constructor * Assertion: constructs CertPathValidatorException with detail message msg. * Parameter <code>msg</code> is not null. */ public void testCertPathValidatorException02() { CertPathValidatorException tE; for (int i = 0; i < msgs.length; i++) { tE = new CertPathValidatorException(msgs[i]); assertEquals("getMessage() must return: ".concat(msgs[i]), tE .getMessage(), msgs[i]); assertNull("getCause() must return null", tE.getCause()); } } /** * Test for <code>CertPathValidatorException(String)</code> constructor * Assertion: constructs CertPathValidatorException when <code>msg</code> * is null */ public void testCertPathValidatorException03() { String msg = null; CertPathValidatorException tE = new CertPathValidatorException(msg); assertNull("getMessage() must return null.", tE.getMessage()); assertNull("getCause() must return null", tE.getCause()); } /** * Test for <code>CertPathValidatorException(Throwable)</code> constructor * Assertion: constructs CertPathValidatorException when <code>cause</code> * is null */ public void testCertPathValidatorException04() { Throwable cause = null; CertPathValidatorException tE = new CertPathValidatorException(cause); assertNull("getMessage() must return null.", tE.getMessage()); assertNull("getCause() must return null", tE.getCause()); } /** * Test for <code>CertPathValidatorException(Throwable)</code> constructor * Assertion: constructs CertPathValidatorException when <code>cause</code> * is not null */ public void testCertPathValidatorException05() { CertPathValidatorException tE = new CertPathValidatorException(tCause); if (tE.getMessage() != null) { String toS = tCause.toString(); String getM = tE.getMessage(); assertTrue("getMessage() should contain ".concat(toS), (getM .indexOf(toS) != -1)); } assertNotNull("getCause() must not return null", tE.getCause()); assertEquals("getCause() must return ".concat(tCause.toString()), tE .getCause(), tCause); } /** * Test for <code>CertPathValidatorException(String, Throwable)</code> * constructor Assertion: constructs CertPathValidatorException when * <code>cause</code> is null <code>msg</code> is null */ public void testCertPathValidatorException06() { CertPathValidatorException tE = new CertPathValidatorException(null, null); assertNull("getMessage() must return null", tE.getMessage()); assertNull("getCause() must return null", tE.getCause()); } /** * Test for <code>CertPathValidatorException(String, Throwable)</code> * constructor Assertion: constructs CertPathValidatorException when * <code>cause</code> is null <code>msg</code> is not null */ public void testCertPathValidatorException07() { CertPathValidatorException tE; for (int i = 0; i < msgs.length; i++) { tE = new CertPathValidatorException(msgs[i], null); assertEquals("getMessage() must return: ".concat(msgs[i]), tE .getMessage(), msgs[i]); assertNull("getCause() must return null", tE.getCause()); } } /** * Test for <code>CertPathValidatorException(String, Throwable)</code> * constructor Assertion: constructs CertPathValidatorException when * <code>cause</code> is not null <code>msg</code> is null */ public void testCertPathValidatorException08() { CertPathValidatorException tE = new CertPathValidatorException(null, tCause); if (tE.getMessage() != null) { String toS = tCause.toString(); String getM = tE.getMessage(); assertTrue("getMessage() must should ".concat(toS), (getM .indexOf(toS) != -1)); } assertNotNull("getCause() must not return null", tE.getCause()); assertEquals("getCause() must return ".concat(tCause.toString()), tE .getCause(), tCause); } /** * Test for <code>CertPathValidatorException(String, Throwable)</code> * constructor Assertion: constructs CertPathValidatorException when * <code>cause</code> is not null <code>msg</code> is not null */ public void testCertPathValidatorException09() { CertPathValidatorException tE; for (int i = 0; i < msgs.length; i++) { tE = new CertPathValidatorException(msgs[i], tCause); String getM = tE.getMessage(); String toS = tCause.toString(); if (msgs[i].length() > 0) { assertTrue("getMessage() must contain ".concat(msgs[i]), getM .indexOf(msgs[i]) != -1); if (!getM.equals(msgs[i])) { assertTrue("getMessage() should contain ".concat(toS), getM .indexOf(toS) != -1); } } assertNotNull("getCause() must not return null", tE.getCause()); assertEquals("getCause() must return ".concat(tCause.toString()), tE.getCause(), tCause); } } /** * Test for * <code>CertPathValidatorException(String, Throwable, CertPath, int)</code> * constructor Assertion: constructs CertPathValidatorException when * <code>cause</code> is null <code>msg</code> is null * <code>certPath</code> is null <code>index</code> is -1 */ public void testCertPathValidatorException10() { CertPathValidatorException tE = new CertPathValidatorException(null, null, null, -1); assertNull("getMessage() must return null", tE.getMessage()); assertNull("getCause() must return null", tE.getCause()); assertNull("getCertPath() must return null", tE.getCertPath()); assertEquals("getIndex() must be -1", tE.getIndex(), -1); } /** * Test for * <code>CertPathValidatorException(String, Throwable, CertPath, int)</code> * constructor Assertion: constructs CertPathValidatorException when * <code>cause</code> is null <code>msg</code> is null * <code>certPath</code> is null <code>index</code> not -1 throws: * IllegalArgumentException */ public void testCertPathValidatorException11() { int[] indx = { 0, 1, 100, Integer.MAX_VALUE, Integer.MIN_VALUE }; for (int j = 0; j < indx.length; j++) { for (int i = 0; i < msgs.length; i++) { try { new CertPathValidatorException(msgs[i], tCause, null, indx[j]); fail("Error. IllegalArgumentException was not thrown as expected. " + " msg: " + msgs[i] + ", certPath is null and index is " + indx[j]); } catch (IllegalArgumentException e) { } } } } /** * Test for * <code>CertPathValidatorException(String, Throwable, CertPath, int)</code> * constructor Assertion: constructs CertPathValidatorException when * <code>cause</code> not null <code>msg</code> not null * <code>certPath</code> is null <code>index</code> is -1 */ public void testCertPathValidatorException12() { CertPathValidatorException tE; for (int i = 0; i < msgs.length; i++) { try { tE = new CertPathValidatorException(msgs[i], tCause, null, -1); String getM = tE.getMessage(); String toS = tCause.toString(); if (msgs[i].length() > 0) { assertTrue("getMessage() must contain ".concat(msgs[i]), getM.indexOf(msgs[i]) != -1); if (!getM.equals(msgs[i])) { assertTrue("getMessage() should contain ".concat(toS), getM.indexOf(toS) != -1); } } assertNotNull("getCause() must not return null", tE.getCause()); assertEquals("getCause() must return " .concat(tCause.toString()), tE.getCause(), tCause); assertNull("getCertPath() must return null", tE.getCertPath()); assertEquals("getIndex() must return -1", tE.getIndex(), -1); } catch (IndexOutOfBoundsException e) { fail("Unexpected exception: " + e.toString() + " Parameters: msg: " + msgs[i] + ", certPath is null and index is -1"); } } } /** * Test for * <code>CertPathValidatorException(String, Throwable, CertPath, int)</code> * constructor Assertion: constructs CertPathValidatorException when * <code>cause</code> not null <code>msg</code> not null * <code>certPath</code> not null <code>index</code>< -1 || >= * certPath.getCertificates().size() throws: IndexOutOfBoundsException */ public void testCertPathValidatorException13() { myCertPath mcp = new myCertPath("X.509", ""); CertPath cp = mcp.get("X.509"); int[] indx = { -2, -100, 0, 1, 100, Integer.MAX_VALUE, Integer.MIN_VALUE }; for (int j = 0; j < indx.length; j++) { for (int i = 0; i < msgs.length; i++) { try { new CertPathValidatorException(msgs[i], tCause, cp, indx[j]); fail("IndexOutOfBoundsException was not thrown as expected. " + " msg: " + msgs[i] + ", certPath is null and index is " + indx[j]); } catch (IndexOutOfBoundsException e) { } } } } /** * Test for * <code>CertPathValidatorException(String, Throwable, CertPath, int)</code> * constructor Assertion: constructs CertPathValidatorException when * <code>cause</code> not null <code>msg</code> not null * <code>certPath</code> not null <code>index</code>< * certPath.getCertificates().size() */ public void testCertPathValidatorException14() { CertPathValidatorException tE; myCertPath mcp = new myCertPath("X.509", ""); CertPath cp = mcp.get("X.509"); for (int i = 0; i < msgs.length; i++) { try { tE = new CertPathValidatorException(msgs[i], tCause, cp, -1); String getM = tE.getMessage(); String toS = tCause.toString(); if (msgs[i].length() > 0) { assertTrue("getMessage() must contain ".concat(msgs[i]), getM.indexOf(msgs[i]) != -1); if (!getM.equals(msgs[i])) { assertTrue("getMessage() should contain ".concat(toS), getM.indexOf(toS) != -1); } } assertNotNull("getCause() must not return null", tE.getCause()); assertEquals("getCause() must return " .concat(tCause.toString()), tE.getCause(), tCause); assertNotNull("getCertPath() must not return null", tE .getCertPath()); assertEquals( "getCertPath() must return ".concat(cp.toString()), tE .getCertPath(), cp); assertEquals("getIndex() must return -1", tE.getIndex(), -1); } catch (IndexOutOfBoundsException e) { fail("Unexpected IndexOutOfBoundsException was thrown. " + e.toString()); } } } /** * Test for <code>getCertPath()</code>. Returns the certification path * that was being validated when the exception was thrown. */ public void testCertPathValidatorException15() { CertPathValidatorException tE = new CertPathValidatorException(); assertNull("getCertPath() must return null.", tE.getCertPath()); for (int i = 0; i < msgs.length; i++) { tE = new CertPathValidatorException(msgs[i]); assertNull("getCertPath() must return null ", tE.getCertPath()); } Throwable cause = null; tE = new CertPathValidatorException(cause); assertNull("getCertPath() must return null.", tE.getCertPath()); tE = new CertPathValidatorException(tCause); assertNull("getCertPath() must return null.", tE.getCertPath()); for (int i = 0; i < msgs.length; i++) { tE = new CertPathValidatorException(msgs[i], tCause); assertNull("getCertPath() must return null", tE.getCertPath()); } tE = new CertPathValidatorException(null, null, null, -1); assertNull("getCertPath() must return null", tE.getCertPath()); for (int i = 0; i < msgs.length; i++) { try { tE = new CertPathValidatorException(msgs[i], tCause, null, -1); assertNull("getCertPath() must return null", tE.getCertPath()); } catch (IndexOutOfBoundsException e) { fail("Unexpected exception: " + e.getMessage()); } } myCertPath mcp = new myCertPath("X.509", ""); CertPath cp = mcp.get("X.509"); for (int i = 0; i < msgs.length; i++) { try { tE = new CertPathValidatorException(msgs[i], tCause, cp, -1); assertNotNull("getCertPath() must not return null", tE .getCertPath()); assertEquals( "getCertPath() must return ".concat(cp.toString()), tE .getCertPath(), cp); } catch (IndexOutOfBoundsException e) { fail("Unexpected IndexOutOfBoundsException was thrown. " + e.toString()); } } } /** * Test for <code>getIndex()</code>. Returns the index of the certificate * in the certification path that caused the exception to be thrown. Note * that the list of certificates in a CertPath is zero based. If no index * has been set, -1 is returned. */ public void testCertPathValidatorException16() { CertPathValidatorException tE = new CertPathValidatorException(); assertEquals("getIndex() must be equals -1", -1, tE.getIndex()); for (int i = 0; i < msgs.length; i++) { tE = new CertPathValidatorException(msgs[i]); assertEquals("getIndex() must be equals -1", -1, tE.getIndex()); } Throwable cause = null; tE = new CertPathValidatorException(cause); assertEquals("getIndex() must be equals -1", -1, tE.getIndex()); tE = new CertPathValidatorException(tCause); assertEquals("getIndex() must be equals -1", -1, tE.getIndex()); for (int i = 0; i < msgs.length; i++) { tE = new CertPathValidatorException(msgs[i], tCause); assertEquals("getIndex() must be equals -1", -1, tE.getIndex()); } tE = new CertPathValidatorException(null, null, null, -1); assertEquals("getIndex() must be equals -1", -1, tE.getIndex()); myCertPath mcp = new myCertPath("X.509", ""); CertPath cp = mcp.get("X.509"); for (int i = 0; i < msgs.length; i++) { try { tE = new CertPathValidatorException(msgs[i], tCause, cp, -1); assertNotNull("getIndex() must not return null", tE .getCertPath()); assertEquals( "getIndex() must return ".concat(cp.toString()), tE .getCertPath(), cp); } catch (IndexOutOfBoundsException e) { fail("Unexpected IndexOutOfBoundsException was thrown. " + e.getMessage()); } } } class myCertPath extends CertPath { private static final long serialVersionUID = 5871603047244722511L; public List<Certificate> getCertificates() { return new Vector<Certificate>(); } public byte[] getEncoded() { return new byte[0]; } public byte[] getEncoded(String s) { return new byte[0]; } public Iterator<String> getEncodings() { return (Iterator<String>) (new StringTokenizer("ss ss ss ss")); } protected myCertPath(String s) { super(s); } public CertPath get(String s) { return new myCertPath(s); } public myCertPath(String s, String s1) { super(s); } } }