/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package tests.api.javax.net.ssl; import dalvik.annotation.BrokenTest; import dalvik.annotation.TestTargetClass; import dalvik.annotation.TestLevel; import dalvik.annotation.TestTargetNew; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; import javax.net.SocketFactory; import javax.net.ssl.SSLSocketFactory; import junit.framework.TestCase; import tests.support.Support_PortManager; @TestTargetClass(SSLSocketFactory.class) public class SSLSocketFactoryTest extends TestCase { private ServerSocket ss; protected int startServer(String name) { int portNumber = Support_PortManager.getNextPort(); try { ss = new ServerSocket(portNumber); } catch (IOException e) { fail(name + ": " + e); } return ss.getLocalPort(); } /** * @tests javax.net.ssl.SSLSocketFactory#SSLSocketFactory() */ @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "SSLSocketFactory", args = {} ) public void test_Constructor() { try { SocketFactory sf = SSLSocketFactory.getDefault(); assertTrue(sf instanceof SSLSocketFactory); } catch (Exception e) { fail("Unexpected exception " + e.toString()); } } /** * @tests javax.net.ssl.SSLSocketFactory#getDefault() */ @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "getDefault", args = {} ) public void test_getDefault() { assertNotNull("Incorrect default socket factory", SSLSocketFactory.getDefault()); } /** * @tests javax.net.ssl.SSLSocketFactory#createSocket(Socket s, String host, int port, boolean autoClose) */ @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "createSocket", args = {java.net.Socket.class, java.lang.String.class, int.class, boolean.class} ) public void test_createSocket() { SSLSocketFactory sf = (SSLSocketFactory)SSLSocketFactory.getDefault(); int sport = startServer("test_createSocket()"); int[] invalid = { Integer.MIN_VALUE, -1, 65536, Integer.MAX_VALUE }; try { Socket st = new Socket("localhost", sport); Socket s = sf.createSocket(st, "localhost", sport, false); assertFalse(s.isClosed()); } catch (Exception ex) { fail("Unexpected exception " + ex); } try { Socket st = new Socket("localhost", sport); Socket s = sf.createSocket(st, "localhost", sport, true); s.close(); assertTrue(st.isClosed()); } catch (Exception ex) { fail("Unexpected exception " + ex); } try { sf.createSocket(null, "localhost", sport, true); fail("IOException wasn't thrown"); } catch (IOException ioe) { // expected } catch (NullPointerException e) { // expected } for (int i = 0; i < invalid.length; i++) { try { Socket s = sf.createSocket(new Socket(), "localhost", 1080, false); fail("IOException wasn't thrown"); } catch (IOException ioe) { // expected } } try { Socket st = new Socket("bla-bla", sport); Socket s = sf.createSocket(st, "bla-bla", sport, false); fail("UnknownHostException wasn't thrown: " + "bla-bla"); } catch (UnknownHostException uhe) { // expected } catch (Exception e) { fail(e + " was thrown instead of UnknownHostException"); } } /** * @tests javax.net.ssl.SSLSocketFactory#getDefaultCipherSuites() */ @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "getDefaultCipherSuites", args = {} ) public void test_getDefaultCipherSuites() { try { SSLSocketFactory sf = (SSLSocketFactory) SSLSocketFactory.getDefault(); assertTrue("no default cipher suites returned", sf.getDefaultCipherSuites().length > 0); } catch (Exception e) { fail("Unexpected exception " + e.toString()); } } /** * @tests javax.net.ssl.SSLSocketFactory#getSupportedCipherSuites() */ @TestTargetNew( level = TestLevel.COMPLETE, notes = "", method = "getSupportedCipherSuites", args = {} ) public void test_getSupportedCipherSuites() { try { SSLSocketFactory sf = (SSLSocketFactory) SSLSocketFactory.getDefault(); assertTrue("no supported cipher suites returned", sf.getSupportedCipherSuites().length > 0); } catch (Exception e) { fail("Unexpected exception " + e.toString()); } } }