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