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.nio.BufferUnderflowException; 26d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiuimport java.nio.ByteBuffer; 27d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 28d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu/** 29d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * Unit tests for {@link com.android.server.wifi.hotspot2.anqp.eap.VendorSpecificAuth}. 30d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu */ 31d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu@SmallTest 32d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiupublic class VendorSpecificAuthTest { 33d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu private static final byte[] TEST_DATA = new byte[] {0x12, 0x34, 0x45, 0x56}; 34d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 35d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu /** 36d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * Verify that BufferUnderflowException will be thrown when parsing from an empty buffer. 37d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * 38d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * @throws Exception 39d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu */ 40d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu @Test(expected = BufferUnderflowException.class) 41d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu public void parseEmptyBuffer() throws Exception { 42d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu VendorSpecificAuth.parse(ByteBuffer.wrap(new byte[0]), 1); 43d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu } 44d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 45d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu /** 46d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * Verify that BufferUnderflowException will be thrown when parsing from a truncated buffer. 47d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * 48d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * @throws Exception 49d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu */ 50d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu @Test(expected = BufferUnderflowException.class) 51d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu public void parseTruncatedBuffer() throws Exception { 52d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu VendorSpecificAuth.parse( 53d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu ByteBuffer.wrap(TEST_DATA, 0, TEST_DATA.length - 1), TEST_DATA.length); 54d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu } 55d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 56d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu /** 57d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * Verify that a VendorSpecificAuth with a empty data array is returned when parsing 58d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * a zero byte from a buffer. 59d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * 60d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * @throws Exception 61d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu */ 62d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu @Test 63d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu public void parseBufferWithZeroLength() throws Exception { 64d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu VendorSpecificAuth expected = new VendorSpecificAuth(new byte[0]); 65d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu assertEquals(expected, VendorSpecificAuth.parse(ByteBuffer.wrap(TEST_DATA), 0)); 66d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu } 67d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu 68d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu /** 69d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * Verify that an expected VendorSpecificAuth is returned when parsing a buffer contained 70d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * the expected data. 71d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * 72d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu * @throws Exception 73d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu */ 74d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu @Test 75d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu public void parseBuffer() throws Exception { 76d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu VendorSpecificAuth expected = new VendorSpecificAuth(TEST_DATA); 77d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu VendorSpecificAuth actual = 78d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu VendorSpecificAuth.parse(ByteBuffer.wrap(TEST_DATA), TEST_DATA.length); 79d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu assertEquals(expected, actual); 80d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu } 81d8dddd9671750e6bfbcfa218db16ad096b9904eePeter Qiu} 82