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