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