1a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom/*
2a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom * Copyright (C) 2010 The Android Open Source Project
3a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom *
4a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom * Licensed under the Apache License, Version 2.0 (the "License");
5a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom * you may not use this file except in compliance with the License.
6a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom * You may obtain a copy of the License at
7a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom *
8a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom *      http://www.apache.org/licenses/LICENSE-2.0
9a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom *
10a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom * Unless required by applicable law or agreed to in writing, software
11a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom * distributed under the License is distributed on an "AS IS" BASIS,
12a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom * See the License for the specific language governing permissions and
14a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom * limitations under the License.
15a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom */
16a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom
17a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrompackage libcore.javax.net.ssl;
18a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom
19a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstromimport java.security.KeyStore.Builder;
20a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstromimport java.security.KeyStore.PasswordProtection;
21a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstromimport javax.net.ssl.KeyStoreBuilderParameters;
22a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstromimport java.util.Arrays;
23a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstromimport java.util.List;
24a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstromimport junit.framework.TestCase;
25a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstromimport libcore.java.security.TestKeyStore;
26a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom
27a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrompublic class KeyStoreBuilderParametersTest extends TestCase {
28a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom    public void test_init_Builder_null() {
29aba5e8c281fb9c6be23229246473fa0b433dd997Brian Carlstrom        try {
30aba5e8c281fb9c6be23229246473fa0b433dd997Brian Carlstrom            new KeyStoreBuilderParameters((Builder) null);
31aba5e8c281fb9c6be23229246473fa0b433dd997Brian Carlstrom            fail();
32aba5e8c281fb9c6be23229246473fa0b433dd997Brian Carlstrom        } catch (NullPointerException expected) {
33aba5e8c281fb9c6be23229246473fa0b433dd997Brian Carlstrom        }
34a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom    }
35a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom
36a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom    public void test_init_Builder() {
37a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        TestKeyStore testKeyStore = TestKeyStore.getClient();
38a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        Builder builder = Builder.newInstance(testKeyStore.keyStore,
39a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom                                              new PasswordProtection(testKeyStore.storePassword));
40a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        KeyStoreBuilderParameters ksbp = new KeyStoreBuilderParameters(builder);
41a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        assertNotNull(ksbp);
42a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        assertNotNull(ksbp.getParameters());
43a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        assertEquals(1, ksbp.getParameters().size());
44a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        assertSame(builder, ksbp.getParameters().get(0));
45a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom    }
46a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom
47a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom    public void test_init_List_null() {
48a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        try {
49a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom            new KeyStoreBuilderParameters((List) null);
50a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        } catch (NullPointerException expected) {
51a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        }
52a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom    }
53a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom
54a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom    public void test_init_List() {
55a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        TestKeyStore testKeyStore1 = TestKeyStore.getClient();
56a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        TestKeyStore testKeyStore2 = TestKeyStore.getServer();
57a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        Builder builder1 = Builder.newInstance(testKeyStore1.keyStore,
58a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom                                               new PasswordProtection(testKeyStore1.storePassword));
59a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        Builder builder2 = Builder.newInstance(testKeyStore2.keyStore,
60a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom                                               new PasswordProtection(testKeyStore2.storePassword));
61a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom
62a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        List list = Arrays.asList(builder1, builder2);
63a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        KeyStoreBuilderParameters ksbp = new KeyStoreBuilderParameters(list);
64a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        assertNotNull(ksbp);
65a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        assertNotNull(ksbp.getParameters());
66a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        assertNotSame(list, ksbp.getParameters());
67a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        assertEquals(2, ksbp.getParameters().size());
68a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        assertSame(builder1, ksbp.getParameters().get(0));
69a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        assertSame(builder2, ksbp.getParameters().get(1));
70a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom
71a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        // confirm result is not modifiable
72a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        try {
73a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom            ksbp.getParameters().set(0, builder2);
74a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom            fail();
75a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        } catch (UnsupportedOperationException expected) {
76a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        }
77a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom
78a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        // confirm result is a copy of original
79a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        list.set(0, builder2);
80a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom        assertSame(builder1, ksbp.getParameters().get(0));
81a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom    }
82a5c608e59f9d574ea4bc65e9dff44aae2f34fd26Brian Carlstrom}
83