1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.javax.net.ssl;
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
51cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobimport javax.net.ssl.SSLContext;
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.SSLSessionContext;
71cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob
8051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumannimport java.security.KeyManagementException;
91cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobimport java.security.NoSuchAlgorithmException;
10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for <code>SSLSessionContext</code> class constructors and methods.
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class SSLSessionContextTest extends TestCase {
15f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
17f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws NoSuchAlgorithmException
18f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws KeyManagementException
19229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.SSLSessionContex#getSessionCacheSize()
20229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.SSLSessionContex#setSessionCacheSize(int size)
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
22051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumann    public final void test_sessionCacheSize() throws NoSuchAlgorithmException, KeyManagementException {
23051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumann        SSLContext context = SSLContext.getInstance("TLS");
24051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumann        context.init(null, null, null);
25be25811712488827cf836ee6170eca8fb4e14fe4Urs Grob        SSLSessionContext sc = context
261cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob                .getClientSessionContext();
271cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        sc.setSessionCacheSize(10);
281cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        assertEquals("10 wasn't returned", 10, sc.getSessionCacheSize());
291cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        sc.setSessionCacheSize(5);
301cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        assertEquals("5 wasn't returned", 5, sc.getSessionCacheSize());
31f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sc.setSessionCacheSize(-1);
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException wasn't thrown");
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException iae) {
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
39f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
41f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws NoSuchAlgorithmException
42f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws KeyManagementException
43229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.SSLSessionContex#getSessionTimeout()
44229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.SSLSessionContex#setSessionTimeout(int seconds)
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
46051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumann    public final void test_sessionTimeout() throws NoSuchAlgorithmException, KeyManagementException {
47051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumann        SSLContext context = SSLContext.getInstance("TLS");
48051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumann        context.init(null, null, null);
49be25811712488827cf836ee6170eca8fb4e14fe4Urs Grob        SSLSessionContext sc = context
501cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob                .getClientSessionContext();
511cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        sc.setSessionTimeout(100);
521cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        assertEquals("100 wasn't returned", 100, sc.getSessionTimeout());
531cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        sc.setSessionTimeout(5000);
541cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        assertEquals("5000 wasn't returned", 5000, sc.getSessionTimeout());
55f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sc.setSessionTimeout(-1);
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException wasn't thrown");
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException iae) {
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
63f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
65f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws NoSuchAlgorithmException
66f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws KeyManagementException
67229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.SSLSessionContex#getSession(byte[] sessionId)
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
69051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumann    public final void test_getSession() throws NoSuchAlgorithmException, KeyManagementException {
70051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumann        SSLContext context = SSLContext.getInstance("TLS");
71051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumann        context.init(null, null, null);
72be25811712488827cf836ee6170eca8fb4e14fe4Urs Grob        SSLSessionContext sc = context
731cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob                .getClientSessionContext();
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
751cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob            sc.getSession(null);
761cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        } catch (NullPointerException e) {
771cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob            // expected
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
791cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        assertNull(sc.getSession(new byte[5]));
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
81f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
83f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws NoSuchAlgorithmException
84f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws KeyManagementException
85229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.SSLSessionContex#getIds()
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
87051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumann    public final void test_getIds() throws NoSuchAlgorithmException, KeyManagementException {
88051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumann        SSLContext context = SSLContext.getInstance("TLS");
89051f400949489d012498f575c0a40999ad7a4f54Jorg Pleumann        context.init(null, null, null);
90be25811712488827cf836ee6170eca8fb4e14fe4Urs Grob        SSLSessionContext sc = context
911cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob                .getClientSessionContext();
921cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        assertFalse(sc.getIds().hasMoreElements());
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
95229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom}
96