1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.api.javax.net.ssl;
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets;
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel;
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew;
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass;
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase;
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
10dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grobimport javax.net.ssl.SSLContext;
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.net.ssl.SSLSessionContext;
12dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob
130b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumannimport java.security.KeyManagementException;
14dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grobimport java.security.NoSuchAlgorithmException;
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/**
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Tests for <code>SSLSessionContext</code> class constructors and methods.
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(SSLSessionContext.class)
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class SSLSessionContextTest extends TestCase {
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
23dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob     * @throws NoSuchAlgorithmException
240b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann     * @throws KeyManagementException
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests javax.net.ssl.SSLSessionContex#getSessionCacheSize()
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests javax.net.ssl.SSLSessionContex#setSessionCacheSize(int size)
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargets({
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.COMPLETE,
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "",
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "getSessionCacheSize",
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {}
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.COMPLETE,
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "",
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "setSessionCacheSize",
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {int.class}
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        )
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    })
420b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann    public final void test_sessionCacheSize() throws NoSuchAlgorithmException, KeyManagementException {
430b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann        SSLContext context = SSLContext.getInstance("TLS");
440b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann        context.init(null, null, null);
454207d94cc9adf154018099c275de9518e596cf4aUrs Grob        SSLSessionContext sc = context
46dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob                .getClientSessionContext();
47dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob        sc.setSessionCacheSize(10);
48dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob        assertEquals("10 wasn't returned", 10, sc.getSessionCacheSize());
49dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob        sc.setSessionCacheSize(5);
50dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob        assertEquals("5 wasn't returned", 5, sc.getSessionCacheSize());
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            sc.setSessionCacheSize(-1);
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException wasn't thrown");
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException iae) {
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
61dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob     * @throws NoSuchAlgorithmException
620b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann     * @throws KeyManagementException
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests javax.net.ssl.SSLSessionContex#getSessionTimeout()
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests javax.net.ssl.SSLSessionContex#setSessionTimeout(int seconds)
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargets({
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.COMPLETE,
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "",
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "getSessionTimeout",
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {}
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.COMPLETE,
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "",
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "setSessionTimeout",
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {int.class}
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        )
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    })
800b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann    public final void test_sessionTimeout() throws NoSuchAlgorithmException, KeyManagementException {
810b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann        SSLContext context = SSLContext.getInstance("TLS");
820b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann        context.init(null, null, null);
834207d94cc9adf154018099c275de9518e596cf4aUrs Grob        SSLSessionContext sc = context
84dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob                .getClientSessionContext();
85dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob        sc.setSessionTimeout(100);
86dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob        assertEquals("100 wasn't returned", 100, sc.getSessionTimeout());
87dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob        sc.setSessionTimeout(5000);
88dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob        assertEquals("5000 wasn't returned", 5000, sc.getSessionTimeout());
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            sc.setSessionTimeout(-1);
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException wasn't thrown");
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException iae) {
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
99dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob     * @throws NoSuchAlgorithmException
1000b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann     * @throws KeyManagementException
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests javax.net.ssl.SSLSessionContex#getSession(byte[] sessionId)
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getSession",
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {byte[].class}
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1090b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann    public final void test_getSession() throws NoSuchAlgorithmException, KeyManagementException {
1100b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann        SSLContext context = SSLContext.getInstance("TLS");
1110b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann        context.init(null, null, null);
1124207d94cc9adf154018099c275de9518e596cf4aUrs Grob        SSLSessionContext sc = context
113dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob                .getClientSessionContext();
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
115dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob            sc.getSession(null);
116dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob        } catch (NullPointerException e) {
117dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob            // expected
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
119dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob        assertNull(sc.getSession(new byte[5]));
120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
123dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob     * @throws NoSuchAlgorithmException
1240b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann     * @throws KeyManagementException
125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests javax.net.ssl.SSLSessionContex#getIds()
126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getIds",
131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1330b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann    public final void test_getIds() throws NoSuchAlgorithmException, KeyManagementException {
1340b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann        SSLContext context = SSLContext.getInstance("TLS");
1350b1744916fc98c191a9d30c1e46f3b5b72110fb3Jorg Pleumann        context.init(null, null, null);
1364207d94cc9adf154018099c275de9518e596cf4aUrs Grob        SSLSessionContext sc = context
137dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob                .getClientSessionContext();
138dfaac167b5f6a48ca76cc76e237c548d496da036Urs Grob        assertFalse(sc.getIds().hasMoreElements());
139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}