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