| /* |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package tests.api.javax.net.ssl; |
| |
| import dalvik.annotation.TestTargetClass; |
| import dalvik.annotation.TestLevel; |
| import dalvik.annotation.TestTargetNew; |
| |
| import java.security.AccessController; |
| import java.security.InvalidAlgorithmParameterException; |
| import java.security.KeyStore; |
| import java.security.KeyStoreException; |
| import java.security.NoSuchAlgorithmException; |
| import java.security.Provider; |
| |
| import javax.net.ssl.ManagerFactoryParameters; |
| import javax.net.ssl.TrustManager; |
| import javax.net.ssl.TrustManagerFactory; |
| import javax.net.ssl.TrustManagerFactorySpi; |
| |
| import junit.framework.TestCase; |
| import org.apache.harmony.xnet.tests.support.TrustManagerFactorySpiImpl; |
| import org.apache.harmony.xnet.tests.support.MyTrustManagerFactorySpi.Parameters; |
| |
| @TestTargetClass(TrustManagerFactorySpi.class) |
| public class TrustManagerFactorySpiTest extends TestCase { |
| |
| private TrustManagerFactorySpiImpl factory = new TrustManagerFactorySpiImpl(); |
| /** |
| * @tests javax.net.ssl.TrustManagerFactorySpi#TrustManagerFactorySpi() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "TrustManagerFactorySpi", |
| args = {} |
| ) |
| public void test_Constructor() { |
| try { |
| TrustManagerFactorySpiImpl tmf = new TrustManagerFactorySpiImpl(); |
| } catch (Exception e) { |
| fail("Unexpected exception " + e.toString()); |
| } |
| } |
| |
| /** |
| * @throws NoSuchAlgorithmException |
| * @throws KeyStoreException |
| * @tests javax.net.ssl.TrustManagerFactorySpi#engineInit(KeyStore ks) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "engineInit", |
| args = {java.security.KeyStore.class} |
| ) |
| public void test_engineInit_01() throws NoSuchAlgorithmException, |
| KeyStoreException { |
| factory.reset(); |
| Provider provider = new MyProvider(); |
| TrustManagerFactory tmf = TrustManagerFactory.getInstance("MyTMF", |
| provider); |
| KeyStore ks = null; |
| try { |
| ks = KeyStore.getInstance(KeyStore.getDefaultType()); |
| ks.load(null, null); |
| tmf.init(ks); |
| } catch (Exception e) { |
| fail("Unexpected exception " + e.toString()); |
| } |
| assertTrue(factory.isEngineInitCalled()); |
| assertEquals(ks, factory.getKs()); |
| factory.reset(); |
| tmf.init((KeyStore) null); |
| assertTrue(factory.isEngineInitCalled()); |
| assertNull(factory.getKs()); |
| } |
| |
| /** |
| * @throws InvalidAlgorithmParameterException |
| * @throws NoSuchAlgorithmException |
| * @tests javax.net.ssl.TrustManagerFactorySpi#engineInit(ManagerFactoryParameters spec) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "engineInit", |
| args = {javax.net.ssl.ManagerFactoryParameters.class} |
| ) |
| public void test_engineInit_02() throws InvalidAlgorithmParameterException, |
| NoSuchAlgorithmException { |
| factory.reset(); |
| Provider provider = new MyProvider(); |
| TrustManagerFactory tmf = TrustManagerFactory.getInstance("MyTMF", |
| provider); |
| Parameters pr = null; |
| try { |
| KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); |
| ks.load(null, null); |
| pr = new Parameters(ks); |
| tmf.init(pr); |
| } catch (Exception e) { |
| fail("Unexpected exception " + e.toString()); |
| } |
| assertTrue(factory.isEngineInitCalled()); |
| assertEquals(pr, factory.getSpec()); |
| factory.reset(); |
| tmf.init((ManagerFactoryParameters) null); |
| assertTrue(factory.isEngineInitCalled()); |
| assertNull(factory.getSpec()); |
| } |
| |
| /** |
| * @throws NoSuchAlgorithmException |
| * @tests javax.net.ssl.TrustManagerFactorySpi#engineGetTrustManagers() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "engineGetTrustManagers", |
| args = {} |
| ) |
| public void test_engineGetTrustManagers() throws NoSuchAlgorithmException { |
| factory.reset(); |
| Provider provider = new MyProvider(); |
| TrustManagerFactory tmf = TrustManagerFactory.getInstance("MyTMF", |
| provider); |
| TrustManager[] tm = tmf.getTrustManagers(); |
| assertTrue(factory.isEngineGetTrustManagersCalled()); |
| factory.reset(); |
| try { |
| KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); |
| ks.load(null, null); |
| tmf.init(ks); |
| tm = tmf.getTrustManagers(); |
| assertTrue(factory.isEngineGetTrustManagersCalled()); |
| } catch (Exception e) { |
| fail("Unexpected exception " + e.toString()); |
| } |
| } |
| } |
| |
| class MyProvider extends Provider { |
| |
| public MyProvider() { |
| super("MyProvider", 1.0, "My Test Provider"); |
| AccessController.doPrivileged(new java.security.PrivilegedAction<Void>() { |
| public Void run() { |
| put("TrustManagerFactory.MyTMF", |
| "org.apache.harmony.xnet.tests.support.TrustManagerFactorySpiImpl"); |
| return null; |
| } |
| }); |
| } |
| } |