1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License.
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.javax.net.ssl;
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.KeyManagerFactorySpi;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.KeyStoreBuilderParameters;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.KeyStore;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ArrayList;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.List;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class KeyStoreBuilderParametersTest extends TestCase {
27f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
29229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.KeyStoreBuilderParameters#KeyStoreBuilderParameters(KeyStore.Builder builder)
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_Constructor01() {
324ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        // Null parameter
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
344ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom            new KeyStoreBuilderParameters((KeyStore.Builder) null);
354ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom            fail();
364ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        } catch (NullPointerException expected) {
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
38f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
394ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        // Not null parameter
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        KeyStore.ProtectionParameter pp = new ProtectionParameterImpl();
414ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        KeyStore.Builder bld = KeyStore.Builder.newInstance("testType", null, pp);
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull("Null object KeyStore.Builder", bld);
434ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        KeyStoreBuilderParameters ksp = new KeyStoreBuilderParameters(bld);
444ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        assertNotNull(ksp.getParameters());
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
46f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
48229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.KeyStoreBuilderParameters#KeyStoreBuilderParameters(List parameters)
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_Constructor02() {
51f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
524ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        // Null parameter
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
5491c86f1d5711bbf6ce779a3d3ad5d4793fe886eaBrian Carlstrom            KeyStoreBuilderParameters ksp = new KeyStoreBuilderParameters((List) null);
554ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom            fail();
564ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        } catch (NullPointerException expected) {
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
58f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
594ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        // Empty parameter
600c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom        List lsEmpty = new ArrayList<String>();
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            KeyStoreBuilderParameters ksp = new KeyStoreBuilderParameters(lsEmpty);
634ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom            fail();
644ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        } catch (IllegalArgumentException expected) {
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
66f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
674ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        // Not null parameter
680c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom        List lsFiled = new ArrayList<String>();
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        lsFiled.add("Parameter1");
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        lsFiled.add("Parameter2");
714ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        new KeyStoreBuilderParameters(lsFiled);
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
73f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
75229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.KeyStoreBuilderParameters#getParameters()
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getParameters() {
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] param = {"Parameter1", "Parameter2", "Parameter3"};
790c131a2ca38465b7d1df4eaee63ac73ce4d5986dBrian Carlstrom        List ls = new ArrayList<String>();
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < param.length; i++) {
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ls.add(param[i]);
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        KeyStoreBuilderParameters ksp = new KeyStoreBuilderParameters(ls);
844ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        List res_list = ksp.getParameters();
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
864ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom            res_list.add("test");
874ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom            fail();
884ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        } catch (UnsupportedOperationException expected) {
894ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        }
904ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        Object[] res = res_list.toArray();
914ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        assertEquals(res.length, param.length);
924ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        for (int i = 0; i < res.length; i++) {
934ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom            assertEquals(param[i], res[i]);
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
96f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
974ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom    private static class ProtectionParameterImpl implements KeyStore.ProtectionParameter {
984ccd262b321e206768f652aff1507d4e1258c007Brian Carlstrom        private ProtectionParameterImpl() {}
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
102