/* * 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 */ package org.apache.harmony.security.tests.java.security.cert; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.InputStream; import java.security.cert.CRL; import java.security.cert.CRLException; import java.security.cert.Certificate; import java.security.cert.CertificateException; import java.security.cert.CertificateFactorySpi; import java.util.Collection; import java.util.Iterator; import java.util.List; import org.apache.harmony.security.tests.support.cert.MyCertificateFactorySpi; import junit.framework.TestCase; /** * Tests for CertificateFactorySpi class constructors and methods * */ public class CertificateFactorySpiTest extends TestCase { /** * Constructor for CertStoreSpiTest. * * @param arg0 */ public CertificateFactorySpiTest(String arg0) { super(arg0); } /** * Test for CertificateFactorySpi constructor * Assertion: constructs CertificateFactorySpi */ public void testCertificateFactorySpi01() throws CertificateException, CRLException { CertificateFactorySpi certFactorySpi = new extCertificateFactorySpi(); ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]); try { certFactorySpi.engineGenerateCertPath(bais); fail("UnsupportedOperationException must be thrown"); } catch (UnsupportedOperationException e) { } try { certFactorySpi.engineGenerateCertPath(bais, ""); fail("UnsupportedOperationException must be thrown"); } catch (UnsupportedOperationException e) { } try { List list = null; certFactorySpi.engineGenerateCertPath(list); fail("UnsupportedOperationException must be thrown"); } catch (UnsupportedOperationException e) { } try { certFactorySpi.engineGetCertPathEncodings(); fail("UnsupportedOperationException must be thrown"); } catch (UnsupportedOperationException e) { } Certificate cc = certFactorySpi .engineGenerateCertificate(bais); assertNull("Not null Cerificate", cc); try { certFactorySpi.engineGenerateCertificate(null); fail("CertificateException must be thrown"); } catch (CertificateException e) { } Collection col = certFactorySpi .engineGenerateCertificates(bais); assertNull("Not null Collection", col); try { certFactorySpi.engineGenerateCertificates(null); fail("CertificateException must be thrown"); } catch (CertificateException e) { } CRL ccCRL = certFactorySpi.engineGenerateCRL(bais); assertNull("Not null CRL", ccCRL); try { certFactorySpi.engineGenerateCRL(null); fail("CRLException must be thrown"); } catch (CRLException e) { } Collection colCRL = certFactorySpi .engineGenerateCRLs(bais); assertNull("Not null CRL", colCRL); try { certFactorySpi.engineGenerateCRLs(null); fail("CRLException must be thrown"); } catch (CRLException e) { } } /** * Test for CertificateFactorySpi constructor * Assertion: constructs CertificateFactorySpi */ public void testCertificateFactorySpi02() throws CertificateException, CRLException { CertificateFactorySpi certFactorySpi = new MyCertificateFactorySpi(); MyCertificateFactorySpi.putMode(true); ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]); DataInputStream dis = new DataInputStream(bais); try { certFactorySpi.engineGenerateCertPath(bais); fail("CertificateException must be thrown"); } catch (CertificateException e) { } certFactorySpi.engineGenerateCertPath(dis); try { certFactorySpi.engineGenerateCertPath(bais, "aa"); fail("CertificateException must be thrown"); } catch (CertificateException e) { } try { certFactorySpi.engineGenerateCertPath(dis, ""); fail("IllegalArgumentException must be thrown"); } catch (IllegalArgumentException e) { } certFactorySpi.engineGenerateCertPath(dis, "ss"); try { certFactorySpi.engineGenerateCertificate(bais); fail("CertificateException must be thrown"); } catch (CertificateException e) { } try { certFactorySpi.engineGenerateCertificates(null); fail("CertificateException must be thrown"); } catch (CertificateException e) { } Certificate cert = certFactorySpi .engineGenerateCertificate(dis); assertNull("Result must be null", cert); Collection col = certFactorySpi .engineGenerateCertificates(dis); assertNull("Result must be null", col); try { certFactorySpi.engineGenerateCRL(bais); fail("CRLException must be thrown"); } catch (CRLException e) { } try { certFactorySpi.engineGenerateCRLs(null); fail("CRLException must be thrown"); } catch (CRLException e) { } CRL crl = certFactorySpi.engineGenerateCRL(dis); assertNull("Result must be null", crl); col = certFactorySpi.engineGenerateCRLs(dis); assertNull("Result must be null", col); List list = null; try { certFactorySpi.engineGenerateCertPath(list); fail("NullPointerException must be thrown"); } catch (NullPointerException e) { } Iterator enc = certFactorySpi.engineGetCertPathEncodings(); assertTrue("Incorrect Iterator", enc.hasNext()); } /** * Test for CertificateFactorySpi constructor * Assertion: constructs CertificateFactorySpi */ public void testCertificateFactorySpi03() throws CertificateException, CRLException { CertificateFactorySpi certFactorySpi = new MyCertificateFactorySpi(); MyCertificateFactorySpi.putMode(false); ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]); DataInputStream dis = new DataInputStream(bais); try { certFactorySpi.engineGenerateCertPath(bais); fail("CertificateException must be thrown"); } catch (CertificateException e) { } try { certFactorySpi.engineGenerateCertPath(dis); fail("CertificateException must be thrown"); } catch (CertificateException e) { } try { certFactorySpi.engineGenerateCertPath(bais, "aa"); fail("CertificateException must be thrown"); } catch (CertificateException e) { } certFactorySpi.engineGenerateCertPath(dis, ""); certFactorySpi.engineGenerateCertPath(dis, "ss"); try { certFactorySpi.engineGenerateCertificate(bais); fail("CertificateException must be thrown"); } catch (CertificateException e) { } try { certFactorySpi.engineGenerateCertificates(null); fail("CertificateException must be thrown"); } catch (CertificateException e) { } Certificate cert = certFactorySpi .engineGenerateCertificate(dis); assertNull("Result must be null", cert); Collection col = certFactorySpi .engineGenerateCertificates(dis); assertNull("Result must be null", col); try { certFactorySpi.engineGenerateCRL(bais); fail("CRLException must be thrown"); } catch (CRLException e) { } try { certFactorySpi.engineGenerateCRLs(null); fail("CRLException must be thrown"); } catch (CRLException e) { } CRL crl = certFactorySpi.engineGenerateCRL(dis); assertNull("Result must be null", crl); col = certFactorySpi.engineGenerateCRLs(dis); assertNull("Result must be null", col); List list = null; certFactorySpi.engineGenerateCertPath(list); Iterator enc = certFactorySpi.engineGetCertPathEncodings(); assertFalse("Incorrect Iterator", enc.hasNext()); } private static class extCertificateFactorySpi extends CertificateFactorySpi { public Certificate engineGenerateCertificate(InputStream inStream) throws CertificateException { if (inStream == null) { throw new CertificateException("InputStream null"); } return null; } public Collection engineGenerateCertificates(InputStream inStream) throws CertificateException { if (inStream == null) { throw new CertificateException("InputStream null"); } return null; } public CRL engineGenerateCRL(InputStream inStream) throws CRLException { if (inStream == null) { throw new CRLException("InputStream null"); } return null; } public Collection engineGenerateCRLs(InputStream inStream) throws CRLException { if (inStream == null) { throw new CRLException("InputStream null"); } return null; } } }