1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.javax.net.ssl;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
201cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobimport javax.net.ssl.SSLServerSocket;
211cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobimport javax.net.ssl.SSLServerSocketFactory;
221cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobimport javax.net.ssl.SSLSession;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.SSLSessionBindingEvent;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.SSLSessionBindingListener;
251cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobimport javax.net.ssl.SSLSocket;
261cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobimport javax.net.ssl.SSLSocketFactory;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
281cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobimport java.io.IOException;
291cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grobimport java.net.UnknownHostException;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for SSLSessionBindingListener class
35f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class SSLSessionBindingListenerTest extends TestCase {
38f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public class mySSLSessionBindingListener implements SSLSessionBindingListener {
40f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
411cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        public boolean boundDone = false;
421cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        public boolean unboundDone = false;
43f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mySSLSessionBindingListener() {
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
46f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void valueBound(SSLSessionBindingEvent event) {
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (event != null) boundDone = true;
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void valueUnbound(SSLSessionBindingEvent event) {
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (event != null) unboundDone = true;
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
54f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
56f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws IOException
57f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws UnknownHostException
58f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws InterruptedException
59229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.SSLSessionBindingListener#valueBound(SSLSessionBindingEvent event)
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
611cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob    public void test_valueBound() throws UnknownHostException, IOException,
621cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob            InterruptedException {
631cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        SSLSocket sock = (SSLSocket) SSLSocketFactory.getDefault()
641cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob                .createSocket();
651cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        SSLSession ss = sock.getSession();
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mySSLSessionBindingListener sbl = new mySSLSessionBindingListener();
671cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        ss.putValue("test", sbl);
681cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        assertTrue("valueBound was not called.", sbl.boundDone);
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
70f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
72f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws IOException
73f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws UnknownHostException
74229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.net.ssl.SSLSessionBindingListener#valueUnbound(SSLSessionBindingEvent event)
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
761cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob    public void test_valueUnbound() throws UnknownHostException, IOException {
771cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        SSLSocket sock = (SSLSocket) SSLSocketFactory.getDefault()
781cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob                .createSocket();
791cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        SSLSession ss = sock.getSession();
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        mySSLSessionBindingListener sbl = new mySSLSessionBindingListener();
811cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        ss.putValue("test", sbl);
821cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        ss.removeValue("test");
831cd5a5cfeccb2745d54a1c49fc39e4e3537a9adeUrs Grob        assertTrue("valueUnbound was not called.", sbl.unboundDone);
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
86