1/* 2 * Copyright (C) 2007 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16package org.apache.harmony.tests.javax.net.ssl; 17 18import java.security.AccessController; 19import java.security.InvalidAlgorithmParameterException; 20import java.security.KeyStore; 21import java.security.KeyStoreException; 22import java.security.NoSuchAlgorithmException; 23import java.security.Provider; 24 25import javax.net.ssl.ManagerFactoryParameters; 26import javax.net.ssl.TrustManager; 27import javax.net.ssl.TrustManagerFactory; 28import javax.net.ssl.TrustManagerFactorySpi; 29 30import junit.framework.TestCase; 31import org.apache.harmony.xnet.tests.support.TrustManagerFactorySpiImpl; 32import org.apache.harmony.xnet.tests.support.MyTrustManagerFactorySpi.Parameters; 33 34public class TrustManagerFactorySpiTest extends TestCase { 35 36 private TrustManagerFactorySpiImpl factory = new TrustManagerFactorySpiImpl(); 37 /** 38 * javax.net.ssl.TrustManagerFactorySpi#TrustManagerFactorySpi() 39 */ 40 public void test_Constructor() { 41 try { 42 TrustManagerFactorySpiImpl tmf = new TrustManagerFactorySpiImpl(); 43 } catch (Exception e) { 44 fail("Unexpected exception " + e.toString()); 45 } 46 } 47 48 /** 49 * @throws NoSuchAlgorithmException 50 * @throws KeyStoreException 51 * javax.net.ssl.TrustManagerFactorySpi#engineInit(KeyStore ks) 52 */ 53 public void test_engineInit_01() throws NoSuchAlgorithmException, 54 KeyStoreException { 55 factory.reset(); 56 Provider provider = new MyProvider(); 57 TrustManagerFactory tmf = TrustManagerFactory.getInstance("MyTMF", 58 provider); 59 KeyStore ks = null; 60 try { 61 ks = KeyStore.getInstance(KeyStore.getDefaultType()); 62 ks.load(null, null); 63 tmf.init(ks); 64 } catch (Exception e) { 65 fail("Unexpected exception " + e.toString()); 66 } 67 assertTrue(factory.isEngineInitCalled()); 68 assertEquals(ks, factory.getKs()); 69 factory.reset(); 70 tmf.init((KeyStore) null); 71 assertTrue(factory.isEngineInitCalled()); 72 assertNull(factory.getKs()); 73 } 74 75 /** 76 * @throws InvalidAlgorithmParameterException 77 * @throws NoSuchAlgorithmException 78 * javax.net.ssl.TrustManagerFactorySpi#engineInit(ManagerFactoryParameters spec) 79 */ 80 public void test_engineInit_02() throws InvalidAlgorithmParameterException, 81 NoSuchAlgorithmException { 82 factory.reset(); 83 Provider provider = new MyProvider(); 84 TrustManagerFactory tmf = TrustManagerFactory.getInstance("MyTMF", 85 provider); 86 Parameters pr = null; 87 try { 88 KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); 89 ks.load(null, null); 90 pr = new Parameters(ks); 91 tmf.init(pr); 92 } catch (Exception e) { 93 fail("Unexpected exception " + e.toString()); 94 } 95 assertTrue(factory.isEngineInitCalled()); 96 assertEquals(pr, factory.getSpec()); 97 factory.reset(); 98 tmf.init((ManagerFactoryParameters) null); 99 assertTrue(factory.isEngineInitCalled()); 100 assertNull(factory.getSpec()); 101 } 102 103 /** 104 * @throws NoSuchAlgorithmException 105 * javax.net.ssl.TrustManagerFactorySpi#engineGetTrustManagers() 106 */ 107 public void test_engineGetTrustManagers() throws NoSuchAlgorithmException { 108 factory.reset(); 109 Provider provider = new MyProvider(); 110 TrustManagerFactory tmf = TrustManagerFactory.getInstance("MyTMF", 111 provider); 112 TrustManager[] tm = tmf.getTrustManagers(); 113 assertTrue(factory.isEngineGetTrustManagersCalled()); 114 factory.reset(); 115 try { 116 KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); 117 ks.load(null, null); 118 tmf.init(ks); 119 tm = tmf.getTrustManagers(); 120 assertTrue(factory.isEngineGetTrustManagersCalled()); 121 } catch (Exception e) { 122 fail("Unexpected exception " + e.toString()); 123 } 124 } 125} 126 127class MyProvider extends Provider { 128 129 public MyProvider() { 130 super("MyProvider", 1.0, "My Test Provider"); 131 AccessController.doPrivileged(new java.security.PrivilegedAction<Void>() { 132 public Void run() { 133 put("TrustManagerFactory.MyTMF", 134 "org.apache.harmony.xnet.tests.support.TrustManagerFactorySpiImpl"); 135 return null; 136 } 137 }); 138 } 139} 140