Home | History | Annotate | Download | only in jsse
      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 package org.apache.harmony.xnet.provider.jsse;
     19 
     20 import java.security.SecureRandom;
     21 import java.util.Arrays;
     22 
     23 import javax.net.ssl.SSLPeerUnverifiedException;
     24 
     25 import junit.framework.TestCase;
     26 
     27 /**
     28  * Tests for <code>SSLSessionContextImp</code> constructor and methods
     29  */
     30 public class SSLSessionImplTest extends TestCase {
     31 
     32     /*
     33      * Class under test for void SSLSessionImpl(CipherSuite, SecureRandom)
     34      */
     35     public void testSSLSessionImplCipherSuiteSecureRandom() {
     36         SSLSessionImpl session = new SSLSessionImpl(null, null);
     37         assertEquals(session.getCipherSuite(),
     38                 CipherSuite.TLS_NULL_WITH_NULL_NULL.getName());
     39 
     40         session = new SSLSessionImpl(CipherSuite.TLS_RSA_WITH_NULL_MD5,
     41                 new SecureRandom());
     42         session.protocol = ProtocolVersion.TLSv1;
     43         assertEquals("Incorrect protocol", "TLSv1", session.getProtocol());
     44         assertEquals("Incorrect cipher suite", session.getCipherSuite(),
     45                 CipherSuite.TLS_RSA_WITH_NULL_MD5.getName());
     46         assertEquals("Incorrect id", 32, session.getId().length);
     47         assertTrue("Incorrect isValid", session.isValid());
     48         assertTrue("Incorrect isServer", session.isServer);
     49         long time = session.getCreationTime();
     50         assertTrue("Incorrect CreationTime", time <= System.currentTimeMillis());
     51         assertEquals("Incorrect LastAccessedTime", time, session.getLastAccessedTime());
     52         assertNull("Incorrect LocalCertificates", session.getLocalCertificates());
     53         assertNull("Incorrect LocalPrincipal", session.getLocalPrincipal());
     54         assertNull(session.getPeerHost());
     55         assertEquals(-1, session.getPeerPort());
     56         assertNull(session.getSessionContext());
     57 
     58         try {
     59             session.getPeerCertificateChain();
     60             fail("getPeerCertificateChain: No expected SSLPeerUnverifiedException");
     61         } catch (SSLPeerUnverifiedException e) {
     62         }
     63 
     64         try {
     65             session.getPeerCertificates();
     66             fail("getPeerCertificates: No expected SSLPeerUnverifiedException");
     67         } catch (SSLPeerUnverifiedException e) {
     68         }
     69 
     70         try {
     71             session.getPeerPrincipal();
     72             fail("getPeerPrincipal: No expected SSLPeerUnverifiedException");
     73         } catch (SSLPeerUnverifiedException e) {
     74         }
     75     }
     76 
     77     public void testGetApplicationBufferSize() {
     78         assertEquals(SSLSessionImpl.NULL_SESSION.getApplicationBufferSize(),
     79                 SSLRecordProtocol.MAX_DATA_LENGTH);
     80     }
     81 
     82     public void testGetPacketBufferSize() {
     83         assertEquals(SSLSessionImpl.NULL_SESSION.getPacketBufferSize(),
     84                 SSLRecordProtocol.MAX_SSL_PACKET_SIZE);
     85     }
     86 
     87     public void testInvalidate() {
     88         SSLSessionImpl session = new SSLSessionImpl(
     89                 CipherSuite.TLS_RSA_WITH_NULL_MD5, new SecureRandom());
     90         session.invalidate();
     91         assertFalse("Incorrect isValid", session.isValid());
     92 
     93     }
     94 
     95     public void testSetPeer() {
     96         SSLSessionImpl session = new SSLSessionImpl(null);
     97         session.setPeer("someHost", 8080);
     98         assertEquals("someHost", session.getPeerHost());
     99         assertEquals(8080, session.getPeerPort());
    100     }
    101 
    102 
    103     public void testGetValue() {
    104         SSLSessionImpl session = new SSLSessionImpl(null);
    105 
    106         assertEquals(0, session.getValueNames().length);
    107 
    108         try {
    109             session.getValue(null);
    110             fail("No expected IllegalArgumentException");
    111         } catch (IllegalArgumentException e) {
    112         }
    113         assertNull(session.getValue("abc"));
    114 
    115         try {
    116             session.removeValue(null);
    117             fail("No expected IllegalArgumentException");
    118         } catch (IllegalArgumentException e) {
    119         }
    120         session.removeValue("abc");
    121 
    122         try {
    123             session.putValue(null, "1");
    124             fail("No expected IllegalArgumentException");
    125         } catch (IllegalArgumentException e) {
    126         }
    127 
    128         try {
    129             session.putValue("abc", null);
    130             fail("No expected IllegalArgumentException");
    131         } catch (IllegalArgumentException e) {
    132         }
    133 
    134         Object o = new Object();
    135         session.putValue("abc", o);
    136         assertSame(session.getValue("abc"), o);
    137         assertEquals("abc", session.getValueNames()[0]);
    138 
    139         session.removeValue("abc");
    140         assertNull(session.getValue("abc"));
    141     }
    142 
    143     public void testClone() {
    144         SSLSessionImpl session1 = new SSLSessionImpl(
    145                 CipherSuite.TLS_RSA_WITH_NULL_MD5, new SecureRandom());
    146         SSLSessionImpl session2 = (SSLSessionImpl) session1.clone();
    147         assertTrue(Arrays.equals(session1.getId(), session2.getId()));
    148     }
    149 
    150 }