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