1d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu/* 2d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * Copyright (C) 2016 The Android Open Source Project 3d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * 4d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * Licensed under the Apache License, Version 2.0 (the "License"); 5d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * you may not use this file except in compliance with the License. 6d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * You may obtain a copy of the License at 7d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * 8d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * http://www.apache.org/licenses/LICENSE-2.0 9d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * 10d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * Unless required by applicable law or agreed to in writing, software 11d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * distributed under the License is distributed on an "AS IS" BASIS, 12d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * See the License for the specific language governing permissions and 14d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * limitations under the License. 15d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu */ 16d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 17d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiupackage com.android.server.wifi.hotspot2.anqp.eap; 18d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 19d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiuimport static org.junit.Assert.assertEquals; 20d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 21d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiuimport android.test.suitebuilder.annotation.SmallTest; 22d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 23d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiuimport org.junit.Test; 24d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 25d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiuimport java.net.ProtocolException; 26d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiuimport java.nio.BufferUnderflowException; 27d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiuimport java.nio.ByteBuffer; 28d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 29d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu/** 30d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * Unit tests for {@link com.android.server.wifi.hotspot2.anqp.eap.NonEAPInnerAuth}. 31d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu */ 32d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu@SmallTest 33d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiupublic class NonEAPInnerAuthTest { 34d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu private static final int TEST_AUTH_TYPE = NonEAPInnerAuth.AUTH_TYPE_MSCHAP; 35d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 36d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu /** 37d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * Helper function for generating the test buffer. 38d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * 39d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * @return {@link ByteBuffer} 40d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu */ 41d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu private ByteBuffer getTestBuffer() { 42d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu return ByteBuffer.wrap(new byte[] {(byte) TEST_AUTH_TYPE}); 43d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu } 44d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 45d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu /** 46d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * Verify that BufferUnderflowException will be thrown when parsing from an empty buffer. 47d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * 48d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * @throws Exception 49d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu */ 50d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu @Test(expected = BufferUnderflowException.class) 51d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu public void parseEmptyBuffer() throws Exception { 52d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu NonEAPInnerAuth.parse(ByteBuffer.wrap(new byte[0]), NonEAPInnerAuth.EXPECTED_LENGTH_VALUE); 53d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu } 54d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 55d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu /** 56d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * Verify that ProtocolException will be thrown when the data length is not the expected 57d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * length. 58d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * 59d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * @throws Exception 60d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu */ 61d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu @Test(expected = ProtocolException.class) 62d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu public void parseBufferWithInvalidLength() throws Exception { 63d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu NonEAPInnerAuth.parse(getTestBuffer(), NonEAPInnerAuth.EXPECTED_LENGTH_VALUE - 1); 64d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu } 65d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 66d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu /** 67d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * Verify that an expected NonEAPInnerAuth is returned when parsing a buffer contained 68d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * the expected auth type. 69d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * 70d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * @throws Exception 71d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu */ 72d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu @Test 73d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu public void parseBuffer() throws Exception { 74d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu NonEAPInnerAuth expected = new NonEAPInnerAuth(TEST_AUTH_TYPE); 75d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu NonEAPInnerAuth actual = 76d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu NonEAPInnerAuth.parse(getTestBuffer(), NonEAPInnerAuth.EXPECTED_LENGTH_VALUE); 77d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu assertEquals(expected, actual); 78d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu } 79d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu} 80