blob: f05b04c6645f7e9cc4878fa172efca8a553c09b5 [file] [log] [blame]
Brian Carlstromebabb912010-04-02 14:13:53 -07001/*
2 * Copyright (C) 2010 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package javax.net.ssl;
18
Brian Carlstrom9a106a62010-06-21 13:28:58 -070019import java.security.StandardNames;
Brian Carlstromebabb912010-04-02 14:13:53 -070020import java.util.Arrays;
21import junit.framework.TestCase;
22
23public class SSLSessionTest extends TestCase {
24
Brian Carlstrombcfb3252010-05-02 11:27:52 -070025 public void test_SSLSocket_TestSSLSessions_create() {
26 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -070027 assertNotNull(s.invalid);
28 assertFalse(s.invalid.isValid());
29 assertTrue(s.server.isValid());
30 assertTrue(s.client.isValid());
31 }
32
33 public void test_SSLSession_getApplicationBufferSize() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -070034 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -070035 assertTrue(s.invalid.getApplicationBufferSize() > 0);
36 assertTrue(s.server.getApplicationBufferSize() > 0);
37 assertTrue(s.client.getApplicationBufferSize() > 0);
38 }
39
Brian Carlstromebabb912010-04-02 14:13:53 -070040 public void test_SSLSession_getCipherSuite() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -070041 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -070042 assertNotNull(s.invalid.getCipherSuite());
Brian Carlstromfd487fb2010-05-17 16:10:53 -070043 assertEquals(StandardNames.CIPHER_SUITE_INVALID, s.invalid.getCipherSuite());
Brian Carlstromebabb912010-04-02 14:13:53 -070044 assertNotNull(s.server.getCipherSuite());
45 assertNotNull(s.client.getCipherSuite());
46 assertEquals(s.server.getCipherSuite(),
47 s.client.getCipherSuite());
Brian Carlstrom9acacc32010-05-14 11:14:18 -070048 assertTrue(StandardNames.CIPHER_SUITES.contains(s.server.getCipherSuite()));
Brian Carlstromebabb912010-04-02 14:13:53 -070049 }
50
51 public void test_SSLSession_getCreationTime() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -070052 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -070053 assertTrue(s.invalid.getCreationTime() > 0);
54 assertTrue(s.server.getCreationTime() > 0);
55 assertTrue(s.client.getCreationTime() > 0);
56 assertTrue(Math.abs(s.server.getCreationTime() - s.client.getCreationTime()) < 1 * 1000);
57 }
58
59 public void test_SSLSession_getId() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -070060 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -070061 assertNotNull(s.invalid.getId());
62 assertNotNull(s.server.getId());
63 assertNotNull(s.client.getId());
64 assertEquals(0, s.invalid.getId().length);
Brian Carlstrombcfb3252010-05-02 11:27:52 -070065 if (TestSSLContext.sslServerSocketSupportsSessionTickets()) {
66 assertEquals(0, s.server.getId().length);
67 } else {
68 assertEquals(32, s.server.getId().length);
69 assertTrue(Arrays.equals(s.server.getId(), s.client.getId()));
70 }
Brian Carlstromebabb912010-04-02 14:13:53 -070071 assertEquals(32, s.client.getId().length);
Brian Carlstromebabb912010-04-02 14:13:53 -070072 }
73
74 public void test_SSLSession_getLastAccessedTime() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -070075 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -070076 assertTrue(s.invalid.getLastAccessedTime() > 0);
77 assertTrue(s.server.getLastAccessedTime() > 0);
78 assertTrue(s.client.getLastAccessedTime() > 0);
Brian Carlstrome9505132010-05-19 11:34:29 -070079 assertTrue(Math.abs(s.server.getLastAccessedTime()
80 - s.client.getLastAccessedTime()) < 1 * 1000);
Brian Carlstromebabb912010-04-02 14:13:53 -070081 assertTrue(s.server.getLastAccessedTime() >=
82 s.server.getCreationTime());
83 assertTrue(s.client.getLastAccessedTime() >=
84 s.client.getCreationTime());
85 }
86
87 public void test_SSLSession_getLocalCertificates() throws Exception {
Brian Carlstrombcfb3252010-05-02 11:27:52 -070088 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -070089 assertNull(s.invalid.getLocalCertificates());
90 assertNull(s.client.getLocalCertificates());
91 assertNotNull(s.server.getLocalCertificates());
Brian Carlstrom059dbc02010-07-08 14:44:44 -070092 TestKeyStore.assertChainLength(s.server.getLocalCertificates());
93 TestSSLContext.assertServerCertificateChain(s.s.c.serverTrustManager,
94 s.server.getLocalCertificates());
Brian Carlstrom204cab32010-05-17 15:23:45 -070095 TestSSLContext.assertCertificateInKeyStore(s.server.getLocalCertificates()[0],
Brian Carlstrom059dbc02010-07-08 14:44:44 -070096 s.s.c.serverKeyStore);
Brian Carlstromebabb912010-04-02 14:13:53 -070097 }
98
99 public void test_SSLSession_getLocalPrincipal() throws Exception {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700100 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -0700101 assertNull(s.invalid.getLocalPrincipal());
102 assertNull(s.client.getLocalPrincipal());
103 assertNotNull(s.server.getLocalPrincipal());
104 assertNotNull(s.server.getLocalPrincipal().getName());
Brian Carlstrom204cab32010-05-17 15:23:45 -0700105 TestSSLContext.assertCertificateInKeyStore(s.server.getLocalPrincipal(),
Brian Carlstrom059dbc02010-07-08 14:44:44 -0700106 s.s.c.serverKeyStore);
Brian Carlstromebabb912010-04-02 14:13:53 -0700107 }
108
109 public void test_SSLSession_getPacketBufferSize() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700110 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -0700111 assertTrue(s.invalid.getPacketBufferSize() > 0);
112 assertTrue(s.server.getPacketBufferSize() > 0);
113 assertTrue(s.client.getPacketBufferSize() > 0);
114 }
115
116 public void test_SSLSession_getPeerCertificateChain() throws Exception {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700117 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -0700118 try {
119 s.invalid.getPeerCertificateChain();
120 fail();
Brian Carlstrome9505132010-05-19 11:34:29 -0700121 } catch (SSLPeerUnverifiedException expected) {
Brian Carlstromebabb912010-04-02 14:13:53 -0700122 }
123 assertNotNull(s.client.getPeerCertificates());
Brian Carlstrom059dbc02010-07-08 14:44:44 -0700124 TestKeyStore.assertChainLength(s.client.getPeerCertificateChain());
Brian Carlstromebabb912010-04-02 14:13:53 -0700125 try {
Brian Carlstrom059dbc02010-07-08 14:44:44 -0700126 assertNull(s.server.getPeerCertificateChain());
Brian Carlstromebabb912010-04-02 14:13:53 -0700127 fail();
Brian Carlstrome9505132010-05-19 11:34:29 -0700128 } catch (SSLPeerUnverifiedException expected) {
Brian Carlstromebabb912010-04-02 14:13:53 -0700129 }
130 }
131
132 public void test_SSLSession_getPeerCertificates() throws Exception {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700133 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -0700134 try {
135 s.invalid.getPeerCertificates();
136 fail();
Brian Carlstrome9505132010-05-19 11:34:29 -0700137 } catch (SSLPeerUnverifiedException expected) {
Brian Carlstromebabb912010-04-02 14:13:53 -0700138 }
139 assertNotNull(s.client.getPeerCertificates());
Brian Carlstrom059dbc02010-07-08 14:44:44 -0700140 TestKeyStore.assertChainLength(s.client.getPeerCertificates());
141 TestSSLContext.assertServerCertificateChain(s.s.c.serverTrustManager,
142 s.client.getPeerCertificates());
Brian Carlstrom204cab32010-05-17 15:23:45 -0700143 TestSSLContext.assertCertificateInKeyStore(s.client.getPeerCertificates()[0],
Brian Carlstrom059dbc02010-07-08 14:44:44 -0700144 s.s.c.serverKeyStore);
Brian Carlstromebabb912010-04-02 14:13:53 -0700145 try {
146 s.server.getPeerCertificates();
147 fail();
Brian Carlstrome9505132010-05-19 11:34:29 -0700148 } catch (SSLPeerUnverifiedException expected) {
Brian Carlstromebabb912010-04-02 14:13:53 -0700149 }
150 }
151
152 public void test_SSLSession_getPeerHost() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700153 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -0700154 assertNull(s.invalid.getPeerHost());
155 assertNotNull(s.server.getPeerHost());
156 assertNotNull(s.client.getPeerHost());
157 }
158
159 public void test_SSLSession_getPeerPort() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700160 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -0700161 assertEquals(-1, s.invalid.getPeerPort());
162 assertTrue(s.server.getPeerPort() > 0);
163 assertEquals(s.s.c.port, s.client.getPeerPort());
164 }
165
166 public void test_SSLSession_getPeerPrincipal() throws Exception {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700167 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -0700168 try {
169 s.invalid.getPeerPrincipal();
170 fail();
Brian Carlstrome9505132010-05-19 11:34:29 -0700171 } catch (SSLPeerUnverifiedException expected) {
Brian Carlstromebabb912010-04-02 14:13:53 -0700172 }
173 try {
174 s.server.getPeerPrincipal();
175 fail();
Brian Carlstrome9505132010-05-19 11:34:29 -0700176 } catch (SSLPeerUnverifiedException expected) {
Brian Carlstromebabb912010-04-02 14:13:53 -0700177 }
178 assertNotNull(s.client.getPeerPrincipal());
179 assertNotNull(s.client.getPeerPrincipal().getName());
Brian Carlstrom204cab32010-05-17 15:23:45 -0700180 TestSSLContext.assertCertificateInKeyStore(s.client.getPeerPrincipal(),
Brian Carlstrom059dbc02010-07-08 14:44:44 -0700181 s.s.c.serverKeyStore);
Brian Carlstromebabb912010-04-02 14:13:53 -0700182 }
183
184 public void test_SSLSession_getProtocol() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700185 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -0700186 assertNotNull(s.invalid.getProtocol());
187 assertEquals("NONE", s.invalid.getProtocol());
188 assertNotNull(s.server.getProtocol());
189 assertNotNull(s.client.getProtocol());
190 assertEquals(s.server.getProtocol(),
191 s.client.getProtocol());
Brian Carlstrom9acacc32010-05-14 11:14:18 -0700192 assertTrue(StandardNames.SSL_SOCKET_PROTOCOLS.contains(s.server.getProtocol()));
Brian Carlstromebabb912010-04-02 14:13:53 -0700193 }
194
195 public void test_SSLSession_getSessionContext() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700196 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -0700197 assertNull(s.invalid.getSessionContext());
198 assertNotNull(s.server.getSessionContext());
199 assertNotNull(s.client.getSessionContext());
Brian Carlstrom059dbc02010-07-08 14:44:44 -0700200 assertEquals(s.s.c.serverContext.getServerSessionContext(),
Brian Carlstromebabb912010-04-02 14:13:53 -0700201 s.server.getSessionContext());
Brian Carlstrom059dbc02010-07-08 14:44:44 -0700202 assertEquals(s.s.c.clientContext.getClientSessionContext(),
Brian Carlstromebabb912010-04-02 14:13:53 -0700203 s.client.getSessionContext());
204 assertNotSame(s.server.getSessionContext(),
205 s.client.getSessionContext());
206 }
207
208 public void test_SSLSession_getValue() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700209 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -0700210 try {
211 s.invalid.getValue(null);
Brian Carlstrome9505132010-05-19 11:34:29 -0700212 } catch (IllegalArgumentException expected) {
Brian Carlstromebabb912010-04-02 14:13:53 -0700213 }
214 assertNull(s.invalid.getValue("BOGUS"));
215 }
216
217 public void test_SSLSession_getValueNames() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700218 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -0700219 assertNotNull(s.invalid.getValueNames());
220 assertEquals(0, s.invalid.getValueNames().length);
221 }
222
223 public void test_SSLSession_invalidate() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700224 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -0700225 assertFalse(s.invalid.isValid());
226 s.invalid.invalidate();
227 assertFalse(s.invalid.isValid());
228 assertNull(s.invalid.getSessionContext());
229
230 assertTrue(s.server.isValid());
231 s.server.invalidate();
232 assertFalse(s.server.isValid());
233 assertNull(s.server.getSessionContext());
234
235 assertTrue(s.client.isValid());
236 s.client.invalidate();
237 assertFalse(s.client.isValid());
238 assertNull(s.client.getSessionContext());
239 }
240
241 public void test_SSLSession_isValid() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700242 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstromebabb912010-04-02 14:13:53 -0700243 assertFalse(s.invalid.isValid());
244 assertTrue(s.server.isValid());
245 assertTrue(s.client.isValid());
246 }
247
248 public void test_SSLSession_putValue() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700249 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstrom8ee2e662010-04-05 11:50:10 -0700250 String key = "KEY";
251 String value = "VALUE";
Brian Carlstromebabb912010-04-02 14:13:53 -0700252 assertNull(s.invalid.getValue(key));
253 assertEquals(0, s.invalid.getValueNames().length);
254 s.invalid.putValue(key, value);
255 assertSame(value, s.invalid.getValue(key));
256 assertEquals(1, s.invalid.getValueNames().length);
257 assertEquals(key, s.invalid.getValueNames()[0]);
258 }
259
260 public void test_SSLSession_removeValue() {
Brian Carlstrombcfb3252010-05-02 11:27:52 -0700261 TestSSLSessions s = TestSSLSessions.create();
Brian Carlstrom8ee2e662010-04-05 11:50:10 -0700262 String key = "KEY";
263 String value = "VALUE";
Brian Carlstromebabb912010-04-02 14:13:53 -0700264 s.invalid.putValue(key, value);
265 assertEquals(1, s.invalid.getValueNames().length);
266 assertEquals(key, s.invalid.getValueNames()[0]);
267 s.invalid.removeValue(key);
268 assertNull(s.invalid.getValue(key));
269 assertEquals(0, s.invalid.getValueNames().length);
270 }
271}