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