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
18e82be46881b2ab9d64b35c0ee53fc359b5cfd18aNarayan Kamathpackage org.apache.harmony.tests.javax.net.ssl;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.SSLException;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
23229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for <code>SSLException</code> class constructors and methods.
26f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class SSLExceptionTest extends TestCase {
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private static String[] msgs = {
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            "",
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            "Check new message",
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            "Check new message Check new message Check new message Check new message Check new message" };
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private static Throwable tCause = new Throwable("Throwable for exception");
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Test for <code>SSLException(String)</code> constructor Assertion:
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * constructs SSLException with detail message msg. Parameter
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <code>msg</code> is not null.
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSSLException01() {
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SSLException sE;
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < msgs.length; i++) {
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sE = new SSLException(msgs[i]);
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("getMessage() must return: ".concat(msgs[i]), sE.getMessage(), msgs[i]);
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNull("getCause() must return null", sE.getCause());
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Test for <code>SSLException(String)</code> constructor Assertion:
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * constructs SSLException when <code>msg</code> is null
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSSLException02() {
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String msg = null;
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SSLException sE = new SSLException(msg);
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("getMessage() must return null.", sE.getMessage());
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("getCause() must return null", sE.getCause());
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Test for <code>SSLException(Throwable)</code> constructor
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Assertion: constructs SSLException when <code>cause</code> is null
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSSLException03() {
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Throwable cause = null;
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SSLException sE = new SSLException(cause);
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("getMessage() must return null.", sE.getMessage());
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("getCause() must return null", sE.getCause());
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Test for <code>SSLException(Throwable)</code> constructor
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Assertion: constructs SSLException when <code>cause</code> is not
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * null
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSSLException04() {
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SSLException sE = new SSLException(tCause);
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (sE.getMessage() != null) {
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String toS = tCause.toString();
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String getM = sE.getMessage();
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("getMessage() should contain ".concat(toS), (getM
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .indexOf(toS) != -1));
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull("getCause() must not return null", sE.getCause());
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("getCause() must return ".concat(tCause.toString()), sE.getCause(), tCause);
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Test for <code>SSLException(String, Throwable)</code> constructor
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Assertion: constructs SSLException when <code>cause</code> is null
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <code>msg</code> is null
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSSLException05() {
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SSLException sE = new SSLException(null, null);
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("getMessage() must return null", sE.getMessage());
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("getCause() must return null", sE.getCause());
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Test for <code>SSLException(String, Throwable)</code> constructor
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Assertion: constructs SSLException when <code>cause</code> is null
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <code>msg</code> is not null
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSSLException06() {
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SSLException sE;
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < msgs.length; i++) {
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sE = new SSLException(msgs[i], null);
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("getMessage() must return: ".concat(msgs[i]), sE
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getMessage(), msgs[i]);
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNull("getCause() must return null", sE.getCause());
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Test for <code>SSLException(String, Throwable)</code> constructor
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Assertion: constructs SSLException when <code>cause</code> is not
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * null <code>msg</code> is null
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSSLException07() {
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SSLException sE = new SSLException(null, tCause);
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (sE.getMessage() != null) {
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String toS = tCause.toString();
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String getM = sE.getMessage();
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("getMessage() must should ".concat(toS), (getM
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .indexOf(toS) != -1));
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull("getCause() must not return null", sE.getCause());
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("getCause() must return ".concat(tCause.toString()), sE
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .getCause(), tCause);
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Test for <code>SSLException(String, Throwable)</code> constructor
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Assertion: constructs SSLException when <code>cause</code> is not
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * null <code>msg</code> is not null
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSSLException08() {
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SSLException sE;
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < msgs.length; i++) {
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sE = new SSLException(msgs[i], tCause);
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String getM = sE.getMessage();
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String toS = tCause.toString();
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (msgs[i].length() > 0) {
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertTrue("getMessage() must contain ".concat(msgs[i]), getM
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        .indexOf(msgs[i]) != -1);
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                if (!getM.equals(msgs[i])) {
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    assertTrue("getMessage() should contain ".concat(toS), getM
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                            .indexOf(toS) != -1);
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull("getCause() must not return null", sE.getCause());
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("getCause() must return ".concat(tCause.toString()),
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    sE.getCause(), tCause);
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
158229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom}
159