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 */ 17e82be46881b2ab9d64b35c0ee53fc359b5cfd18aNarayan Kamathpackage org.apache.harmony.tests.javax.net.ssl; 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.net.ssl.SSLEngineResult; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for SSLEngineResult.Status class 25f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class SSLEngineResultHandshakeStatusTest extends TestCase { 28f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code> SSLEngineResult.HandshakeStatus.values() </code> 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SSLEngineResultHandshakeStatus_values() { 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] str = {"NOT_HANDSHAKING", "FINISHED", "NEED_TASK", "NEED_WRAP", "NEED_UNWRAP"}; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SSLEngineResult.HandshakeStatus[] enS = SSLEngineResult.HandshakeStatus.values(); 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (enS.length == str.length) { 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < enS.length; i++) { 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //System.out.println("enS[" + i + "] = " + enS[i]); 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect Status", enS[i].toString(), str[i]); 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Incorrect number of enum constant was returned"); 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 44f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Test for <code> SSLEngineResult.HandshakeStatus.valueOf(String name) </code> 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_SSLEngineResultStatus_valueOf() { 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] str = {"FINISHED", "NEED_TASK", "NEED_UNWRAP", "NEED_WRAP", "NOT_HANDSHAKING"}; 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] str_invalid = {"", "FINISHED1", "NEED_task", "NEED_UN", 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "NEED_WRAP_WRAP", "not_HANDSHAKING", "Bad string for verification valueOf method"}; 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SSLEngineResult.HandshakeStatus enS; 53f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //Correct parameter 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < str.length; i++) { 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project enS = SSLEngineResult.HandshakeStatus.valueOf(str[i]); 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect Status", enS.toString(), str[i]); 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected exception " + e + " was thrown for " + str[i]); 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 63f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //Incorrect parameter 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < str_invalid.length; i++) { 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project enS = SSLEngineResult.HandshakeStatus.valueOf(str_invalid[i]); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException should be thrown for " + str_invalid[i]); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException iae) { 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 73f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //Null parameter 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project enS = SSLEngineResult.HandshakeStatus.valueOf(null); 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException/IllegalArgumentException should be thrown for NULL parameter"); 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException npe) { 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException iae) { 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 83229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom} 84