1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.javax.net.ssl; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidAlgorithmParameterException; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStore; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStoreException; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Security; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.ManagerFactoryParameters; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.TrustManagerFactory; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.SpiEngUtils; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.xnet.tests.support.MyTrustManagerFactorySpi; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for TrustManagerFactory class constructors and methods 37f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class TrustManagerFactory2Test extends TestCase { 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String srvTrustManagerFactory = "TrustManagerFactory"; 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String defaultAlg = "TMF"; 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String TrustManagerFactoryProviderClass = "org.apache.harmony.xnet.tests.support.MyTrustManagerFactorySpi"; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String[] invalidValues = SpiEngUtils.invalidValues; 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String[] validValues; 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static { 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues = new String[4]; 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[0] = defaultAlg; 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[1] = defaultAlg.toLowerCase(); 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[2] = "Tmf"; 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[3] = "tMF"; 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider mProv; 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() throws Exception { 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.setUp(); 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mProv = (new SpiEngUtils()).new MyProvider("MyTMFProvider", 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Provider for testing", srvTrustManagerFactory.concat(".") 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(defaultAlg), TrustManagerFactoryProviderClass); 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.insertProviderAt(mProv, 1); 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see TestCase#tearDown() 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() throws Exception { 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.tearDown(); 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(mProv.getName()); 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private void checkResult(TrustManagerFactory tmf) throws Exception { 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore kStore = null; 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ManagerFactoryParameters mfp = null; 77f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf.init(kStore); 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("KeyStoreException must be thrown"); 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf.init(mfp); 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("InvalidAlgorithmParameterException must be thrown"); 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("getTrustManagers() should return null object", tmf 89f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes .getTrustManagers()); 90f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project kStore = KeyStore.getInstance(KeyStore.getDefaultType()); 93f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes kStore.load(null, null); 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("default keystore is not supported"); 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf.init(kStore); 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mfp = (ManagerFactoryParameters) new MyTrustManagerFactorySpi.Parameters(null); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf.init(mfp); 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("RuntimeException must be thrown"); 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (RuntimeException e) { 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Incorrect exception", e.getCause() instanceof KeyStoreException); 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mfp = (ManagerFactoryParameters) new MyTrustManagerFactorySpi.Parameters(kStore); 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf.init(mfp); 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 109f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm)</code> method 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertions: 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException when algorithm is null; 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not correct; 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns TrustManagerFactory object 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_String() throws Exception { 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(null); 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null"); 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(invalidValues[i]); 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown (algorithm: " 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory tmf; 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf = TrustManagerFactory.getInstance(validValues[i]); 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Not instanceof TrustManagerFactory object", 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf instanceof TrustManagerFactory); 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", tmf.getAlgorithm(), 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", tmf.getProvider(), mProv); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkResult(tmf); 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method 147f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertions: 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException when algorithm is null; 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not correct; 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws IllegalArgumentException when provider is null or empty; 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchProviderException when provider is available; 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns TrustManagerFactory object 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_StringLjava_lang_String() throws Exception { 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(null, mProv.getName()); 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null"); 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(invalidValues[i], mProv 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getName()); 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown (algorithm: " 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String prov = null; 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(validValues[i], prov); 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is null (algorithm: " 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(validValues[i], ""); 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is empty (algorithm: " 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int j = 1; j < invalidValues.length; j++) { 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(validValues[i], 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project invalidValues[j]); 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchProviderException must be thrown (algorithm: " 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(" provider: ") 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[j]).concat(")")); 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory tmf; 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf = TrustManagerFactory.getInstance(validValues[i], mProv 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getName()); 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Not instanceof TrustManagerFactory object", 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf instanceof TrustManagerFactory); 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", tmf.getAlgorithm(), 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", tmf.getProvider().getName(), 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mProv.getName()); 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkResult(tmf); 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, Provider provider)</code> 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertions: 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException when algorithm is null; 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not correct; 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws IllegalArgumentException when provider is null; 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns TrustManagerFactory object 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testLjava_lang_StringLjava_security_Provider() throws Exception { 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(null, mProv); 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null"); 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(invalidValues[i], mProv); 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown (algorithm: " 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider prov = null; 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(validValues[i], prov); 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is null (algorithm: " 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory tmf; 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf = TrustManagerFactory.getInstance(validValues[i], mProv); 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Not instanceof TrustManagerFactory object", 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf instanceof TrustManagerFactory); 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", tmf.getAlgorithm(), 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", tmf.getProvider(), mProv); 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkResult(tmf); 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 255229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom} 256