TrustManagerFactory2Test.java revision f33eae7e84eb6d3b0f4e86b59605bb3de73009f3
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 dalvik.annotation.TestTargetClass; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargets; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestLevel; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetNew; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidAlgorithmParameterException; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStore; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStoreException; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Security; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.ManagerFactoryParameters; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.TrustManagerFactory; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.SpiEngUtils; 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.xnet.tests.support.MyTrustManagerFactorySpi; 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for TrustManagerFactory class constructors and methods 42f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 44f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes@TestTargetClass(TrustManagerFactory.class) 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class TrustManagerFactory2Test extends TestCase { 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String srvTrustManagerFactory = "TrustManagerFactory"; 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String defaultAlg = "TMF"; 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String TrustManagerFactoryProviderClass = "org.apache.harmony.xnet.tests.support.MyTrustManagerFactorySpi"; 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String[] invalidValues = SpiEngUtils.invalidValues; 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String[] validValues; 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static { 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues = new String[4]; 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[0] = defaultAlg; 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[1] = defaultAlg.toLowerCase(); 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[2] = "Tmf"; 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[3] = "tMF"; 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider mProv; 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() throws Exception { 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.setUp(); 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mProv = (new SpiEngUtils()).new MyProvider("MyTMFProvider", 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Provider for testing", srvTrustManagerFactory.concat(".") 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(defaultAlg), TrustManagerFactoryProviderClass); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.insertProviderAt(mProv, 1); 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see TestCase#tearDown() 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() throws Exception { 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.tearDown(); 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Security.removeProvider(mProv.getName()); 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private void checkResult(TrustManagerFactory tmf) throws Exception { 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project KeyStore kStore = null; 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ManagerFactoryParameters mfp = null; 83f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf.init(kStore); 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("KeyStoreException must be thrown"); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf.init(mfp); 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("InvalidAlgorithmParameterException must be thrown"); 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("getTrustManagers() should return null object", tmf 95f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes .getTrustManagers()); 96f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project kStore = KeyStore.getInstance(KeyStore.getDefaultType()); 99f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes kStore.load(null, null); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (KeyStoreException e) { 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("default keystore is not supported"); 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf.init(kStore); 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mfp = (ManagerFactoryParameters) new MyTrustManagerFactorySpi.Parameters(null); 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf.init(mfp); 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("RuntimeException must be thrown"); 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (RuntimeException e) { 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Incorrect exception", e.getCause() instanceof KeyStoreException); 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mfp = (ManagerFactoryParameters) new MyTrustManagerFactorySpi.Parameters(kStore); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf.init(mfp); 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 115f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm)</code> method 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertions: 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException when algorithm is null; 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not correct; 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns TrustManagerFactory object 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getInstance", 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.lang.String.class} 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_String() throws Exception { 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(null); 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null"); 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(invalidValues[i]); 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown (algorithm: " 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory tmf; 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf = TrustManagerFactory.getInstance(validValues[i]); 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Not instanceof TrustManagerFactory object", 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf instanceof TrustManagerFactory); 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", tmf.getAlgorithm(), 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", tmf.getProvider(), mProv); 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkResult(tmf); 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method 159f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * Assertions: 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException when algorithm is null; 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not correct; 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws IllegalArgumentException when provider is null or empty; 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchProviderException when provider is available; 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns TrustManagerFactory object 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getInstance", 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.lang.String.class, java.lang.String.class} 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getInstanceLjava_lang_StringLjava_lang_String() throws Exception { 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(null, mProv.getName()); 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null"); 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(invalidValues[i], mProv 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getName()); 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown (algorithm: " 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String prov = null; 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(validValues[i], prov); 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is null (algorithm: " 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(validValues[i], ""); 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is empty (algorithm: " 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int j = 1; j < invalidValues.length; j++) { 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(validValues[i], 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project invalidValues[j]); 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchProviderException must be thrown (algorithm: " 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(" provider: ") 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[j]).concat(")")); 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchProviderException e) { 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory tmf; 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf = TrustManagerFactory.getInstance(validValues[i], mProv 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getName()); 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Not instanceof TrustManagerFactory object", 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf instanceof TrustManagerFactory); 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", tmf.getAlgorithm(), 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", tmf.getProvider().getName(), 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mProv.getName()); 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkResult(tmf); 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code>getInstance(String algorithm, Provider provider)</code> 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Assertions: 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NullPointerException when algorithm is null; 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not correct; 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * throws IllegalArgumentException when provider is null; 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns TrustManagerFactory object 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "", 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "getInstance", 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {java.lang.String.class, java.security.Provider.class} 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testLjava_lang_StringLjava_security_Provider() throws Exception { 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(null, mProv); 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException or NullPointerException should be thrown (algorithm is null"); 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(invalidValues[i], mProv); 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchAlgorithmException must be thrown (algorithm: " 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchAlgorithmException e) { 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Provider prov = null; 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory.getInstance(validValues[i], prov); 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException must be thrown when provider is null (algorithm: " 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .concat(invalidValues[i]).concat(")")); 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project TrustManagerFactory tmf; 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < validValues.length; i++) { 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf = TrustManagerFactory.getInstance(validValues[i], mProv); 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Not instanceof TrustManagerFactory object", 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project tmf instanceof TrustManagerFactory); 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect algorithm", tmf.getAlgorithm(), 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project validValues[i]); 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect provider", tmf.getProvider(), mProv); 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project checkResult(tmf); 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}