1/*
2 *  Licensed to the Apache Software Foundation (ASF) under one or more
3 *  contributor license agreements.  See the NOTICE file distributed with
4 *  this work for additional information regarding copyright ownership.
5 *  The ASF licenses this file to You under the Apache License, Version 2.0
6 *  (the "License"); you may not use this file except in compliance with
7 *  the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 */
17
18/**
19* @author Boris V. Kuznetsov
20*/
21
22package javax.net.ssl;
23
24import java.io.IOException;
25import java.security.Security;
26import java.net.SocketException;
27
28import junit.framework.TestCase;
29
30
31/**
32 * Tests for <code>SSLSocketFactory</code> class methods.
33 *
34 */
35public class SSLSocketFactoryTest extends TestCase {
36
37    private SSLSocketFactory customSocketFactory;
38
39    /*
40     * @see TestCase#setUp()
41     */
42    @Override
43    protected void setUp() throws Exception {
44        super.setUp();
45        String defaultName = Security.getProperty("ssl.SocketFactory.provider");
46        if (defaultName != null) {
47            try {
48                customSocketFactory = (SSLSocketFactory) Class.forName(
49                        defaultName, true, ClassLoader.getSystemClassLoader())
50                        .newInstance();
51             } catch (Exception e) {
52             }
53        }
54        if (customSocketFactory == null) {
55            SSLContext context = DefaultSSLContext.getContext();
56            if (context != null) {
57                customSocketFactory = context.getSocketFactory();
58            }
59        }
60    }
61
62    /*
63     * @see TestCase#tearDown()
64     */
65    @Override
66    protected void tearDown() throws Exception {
67        super.tearDown();
68    }
69
70    public final void testGetDefault() {
71        SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault();
72        if (customSocketFactory != null) {
73            if (!factory.getClass().getName().equals(customSocketFactory.getClass().getName())) {
74                fail("incorrect instance: " + factory.getClass()+
75                        " expected: " + customSocketFactory.getClass().getName());
76            }
77        } else {
78            if (!(factory instanceof DefaultSSLSocketFactory)) {
79                fail("incorrect instance " + factory.getClass());
80            }
81            if (factory.getDefaultCipherSuites().length != 0) {
82                fail("incorrect result: DefaultSSLSocketFactory.getDefaultCipherSuites()");
83            }
84            if (factory.getSupportedCipherSuites().length != 0) {
85                fail("incorrect result: DefaultSSLSocketFactory.getDefaultCipherSuites()");
86            }
87            try {
88                factory.createSocket("localhost", 2021);
89                fail("No expected SocketException");
90            } catch (SocketException e) {
91            } catch (IOException e) {
92                fail(e.toString());
93            }
94        }
95    }
96
97}
98