1d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng/*
2d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * Copyright 2016, The Android Open Source Project
3d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng *
4d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * Licensed under the Apache License, Version 2.0 (the "License");
5d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * you may not use this file except in compliance with the License.
6d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * You may obtain a copy of the License at
7d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng *
8d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng *     http://www.apache.org/licenses/LICENSE-2.0
9d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng *
10d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * Unless required by applicable law or agreed to in writing, software
11d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * distributed under the License is distributed on an "AS IS" BASIS,
12d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * See the License for the specific language governing permissions and
14d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng * limitations under the License.
15d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng */
16d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngpackage com.android.managedprovisioning.model;
17d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
18d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.os.Bundle;
19d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.os.Parcel;
20d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.test.AndroidTestCase;
21d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.test.MoreAsserts;
22d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport android.test.suitebuilder.annotation.SmallTest;
23d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
24d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport com.android.managedprovisioning.model.WifiInfo;
25d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
26d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngimport java.lang.Exception;
27d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
28d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng/** Tests for {@link WifiInfo} */
29d1784bd4d917bb36125e6faf125a2425c343838bSteven Ngpublic class WifiInfoTest extends AndroidTestCase {
30d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_SSID = "TestWifi";
31d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final boolean TEST_HIDDEN = true;
32d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_HIDDEN_STR = Boolean.toString(TEST_HIDDEN);
33d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_SECURITY_TYPE = "WPA2";
34d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_PASSWORD = "TestPassword";
35d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_PROXY_HOST = "proxy.example.com";
36d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final int TEST_PROXY_PORT = 7689;
37d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_PROXY_PORT_STR = Integer.toString(TEST_PROXY_PORT);
38d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_PROXY_BYPASS_HOSTS = "http://host1.com;https://host2.com";
39d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    private static final String TEST_PAC_URL = "pac.example.com";
40d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
41d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    @SmallTest
42d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    public void testBuilderWriteAndReadBack() {
43d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // WHEN a WifiInfo object is constructed by a set of parameters.
44d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        WifiInfo wifiInfo = WifiInfo.Builder.builder()
45d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSsid(TEST_SSID)
46d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setHidden(TEST_HIDDEN)
47d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSecurityType(TEST_SECURITY_TYPE)
48d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setPassword(TEST_PASSWORD)
49d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyHost(TEST_PROXY_HOST)
50d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyPort(TEST_PROXY_PORT)
51d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
52d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setPacUrl(TEST_PAC_URL)
53d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .build();
54d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // THEN the same set of values are set to the object.
55d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        assertEquals(TEST_SSID, wifiInfo.ssid);
56d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        assertEquals(TEST_HIDDEN, wifiInfo.hidden);
57d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        assertEquals(TEST_SECURITY_TYPE, wifiInfo.securityType);
58d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        assertEquals(TEST_PASSWORD, wifiInfo.password);
59d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        assertEquals(TEST_PROXY_HOST, wifiInfo.proxyHost);
60d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        assertEquals(TEST_PROXY_PORT, wifiInfo.proxyPort);
61d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        assertEquals(TEST_PROXY_BYPASS_HOSTS, wifiInfo.proxyBypassHosts);
62d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        assertEquals(TEST_PAC_URL, wifiInfo.pacUrl);
63d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    }
64d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
65d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    @SmallTest
6677bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng    public void testFailToConstructWifiInfoWithoutSsid() {
6777bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng        try {
6877bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng            // WHEN a WifiInfo object is constructed without Ssid.
6977bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng            WifiInfo wifiInfo = WifiInfo.Builder.builder()
7077bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng                    .setHidden(TEST_HIDDEN)
7177bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng                    .setSecurityType(TEST_SECURITY_TYPE)
7277bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng                    .setPassword(TEST_PASSWORD)
7377bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng                    .setProxyHost(TEST_PROXY_HOST)
7477bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng                    .setProxyPort(TEST_PROXY_PORT)
7577bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng                    .setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
7677bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng                    .setPacUrl(TEST_PAC_URL)
7777bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng                    .build();
7877bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng            fail("Ssid is mandatory.");
7977bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng        } catch (IllegalArgumentException e) {
8077bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng            // THEN the WifiInfo object fails to construct due to missing ssid.
8177bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng        }
8277bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng    }
8377bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng
8477bac595693aa1aa6e4832f278d5b3b35a3ffd53Steven Ng    @SmallTest
85d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    public void testEquals() {
86d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // GIVEN 2 WifiInfo objects are constructed with the same set of parameters.
87d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        WifiInfo wifiInfo1 = WifiInfo.Builder.builder()
88d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSsid(TEST_SSID)
89d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setHidden(TEST_HIDDEN)
90d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSecurityType(TEST_SECURITY_TYPE)
91d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setPassword(TEST_PASSWORD)
92d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyHost(TEST_PROXY_HOST)
93d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyPort(TEST_PROXY_PORT)
94d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
95d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setPacUrl(TEST_PAC_URL)
96d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .build();
97d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        WifiInfo wifiInfo2 = WifiInfo.Builder.builder()
98d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSsid(TEST_SSID)
99d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setHidden(TEST_HIDDEN)
100d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSecurityType(TEST_SECURITY_TYPE)
101d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setPassword(TEST_PASSWORD)
102d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyHost(TEST_PROXY_HOST)
103d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyPort(TEST_PROXY_PORT)
104d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
105d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setPacUrl(TEST_PAC_URL)
106d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .build();
107d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // WHEN comparing these two objects.
108d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // THEN they are equal.
109d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        assertEquals(wifiInfo1, wifiInfo2);
110d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    }
111d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
112d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    @SmallTest
113d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    public void testNotEquals() {
114d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // GIVEN 2 WifiInfo objects are constructed with the same set of parameters.
115d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        WifiInfo wifiInfo1 = WifiInfo.Builder.builder()
116d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSsid(TEST_SSID)
117d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setHidden(TEST_HIDDEN)
118d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSecurityType(TEST_SECURITY_TYPE)
119d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setPassword(TEST_PASSWORD)
120d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyHost(TEST_PROXY_HOST)
121d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyPort(TEST_PROXY_PORT)
122d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
123d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setPacUrl(TEST_PAC_URL)
124d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .build();
125d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        WifiInfo wifiInfo2 = WifiInfo.Builder.builder()
126d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSsid("TestWifi2")
127d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setHidden(TEST_HIDDEN)
128d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSecurityType(TEST_SECURITY_TYPE)
129d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setPassword(TEST_PASSWORD)
130d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyHost(TEST_PROXY_HOST)
131d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyPort(TEST_PROXY_PORT)
132d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
133d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setPacUrl(TEST_PAC_URL)
134d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .build();
135d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // WHEN comparing these two objects.
136d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // THEN they are not equal.
137d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        MoreAsserts.assertNotEqual(wifiInfo1, wifiInfo2);
138d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    }
139d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
140d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    @SmallTest
141d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    public void testParceable() {
142d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // GIVEN a WifiInfo object.
143d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        WifiInfo expectedWifiInfo = WifiInfo.Builder.builder()
144d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSsid(TEST_SSID)
145d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setHidden(TEST_HIDDEN)
146d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setSecurityType(TEST_SECURITY_TYPE)
147d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setPassword(TEST_PASSWORD)
148d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyHost(TEST_PROXY_HOST)
149d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyPort(TEST_PROXY_PORT)
150d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
151d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .setPacUrl(TEST_PAC_URL)
152d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng                .build();
153d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
154d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // WHEN the WifiInfo is written to parcel and then read back.
155d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        Parcel parcel = Parcel.obtain();
156d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        expectedWifiInfo.writeToParcel(parcel, 0);
157d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        parcel.setDataPosition(0);
158d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        WifiInfo actualWifiInfo = WifiInfo.CREATOR.createFromParcel(parcel);
159d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng
160d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        // THEN the same WifiInfo is obtained.
161d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng        assertEquals(expectedWifiInfo, actualWifiInfo);
162d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng    }
163d1784bd4d917bb36125e6faf125a2425c343838bSteven Ng}
164