TrustManagerFactory2Test.java revision adc854b798c1cfe3bfd4c27d68d5cee38ca617da
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
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project@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;
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
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
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .getTrustManagers());
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            kStore = KeyStore.getInstance(KeyStore.getDefaultType());
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            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    }
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
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
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * 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}