blob: 40077e0b3c6988ef9c604bd6ead0b3bd989d9001 [file] [log] [blame]
/*
* Copyright 2017, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.managedprovisioning.model;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import android.os.Parcel;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
/**
* Robolectric tests for {@link WifiInfo}.
*/
@RunWith(RobolectricTestRunner.class)
public class WifiInfoRoboTest {
private static final String TEST_SSID = "TestWifi";
private static final boolean TEST_HIDDEN = true;
private static final String TEST_SECURITY_TYPE = "WPA2";
private static final String TEST_PASSWORD = "TestPassword";
private static final String TEST_PROXY_HOST = "proxy.example.com";
private static final int TEST_PROXY_PORT = 7689;
private static final String TEST_PROXY_BYPASS_HOSTS = "http://host1.com;https://host2.com";
private static final String TEST_PAC_URL = "pac.example.com";
@Test
public void testBuilderWriteAndReadBack() {
// WHEN a WifiInfo object is constructed by a set of parameters.
WifiInfo wifiInfo = WifiInfo.Builder.builder()
.setSsid(TEST_SSID)
.setHidden(TEST_HIDDEN)
.setSecurityType(TEST_SECURITY_TYPE)
.setPassword(TEST_PASSWORD)
.setProxyHost(TEST_PROXY_HOST)
.setProxyPort(TEST_PROXY_PORT)
.setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
.setPacUrl(TEST_PAC_URL)
.build();
// THEN the same set of values are set to the object.
assertEquals(TEST_SSID, wifiInfo.ssid);
assertEquals(TEST_HIDDEN, wifiInfo.hidden);
assertEquals(TEST_SECURITY_TYPE, wifiInfo.securityType);
assertEquals(TEST_PASSWORD, wifiInfo.password);
assertEquals(TEST_PROXY_HOST, wifiInfo.proxyHost);
assertEquals(TEST_PROXY_PORT, wifiInfo.proxyPort);
assertEquals(TEST_PROXY_BYPASS_HOSTS, wifiInfo.proxyBypassHosts);
assertEquals(TEST_PAC_URL, wifiInfo.pacUrl);
}
@Test(expected = IllegalArgumentException.class)
public void testFailToConstructWifiInfoWithoutSsid() {
WifiInfo.Builder.builder()
.setHidden(TEST_HIDDEN)
.setSecurityType(TEST_SECURITY_TYPE)
.setPassword(TEST_PASSWORD)
.setProxyHost(TEST_PROXY_HOST)
.setProxyPort(TEST_PROXY_PORT)
.setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
.setPacUrl(TEST_PAC_URL)
.build();
}
@Test
public void testEquals() {
// GIVEN 2 WifiInfo objects are constructed with the same set of parameters.
WifiInfo wifiInfo1 = WifiInfo.Builder.builder()
.setSsid(TEST_SSID)
.setHidden(TEST_HIDDEN)
.setSecurityType(TEST_SECURITY_TYPE)
.setPassword(TEST_PASSWORD)
.setProxyHost(TEST_PROXY_HOST)
.setProxyPort(TEST_PROXY_PORT)
.setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
.setPacUrl(TEST_PAC_URL)
.build();
WifiInfo wifiInfo2 = WifiInfo.Builder.builder()
.setSsid(TEST_SSID)
.setHidden(TEST_HIDDEN)
.setSecurityType(TEST_SECURITY_TYPE)
.setPassword(TEST_PASSWORD)
.setProxyHost(TEST_PROXY_HOST)
.setProxyPort(TEST_PROXY_PORT)
.setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
.setPacUrl(TEST_PAC_URL)
.build();
// WHEN comparing these two objects.
// THEN they are equal.
assertEquals(wifiInfo1, wifiInfo2);
}
@Test
public void testNotEquals() {
// GIVEN 2 WifiInfo objects are constructed with the same set of parameters.
WifiInfo wifiInfo1 = WifiInfo.Builder.builder()
.setSsid(TEST_SSID)
.setHidden(TEST_HIDDEN)
.setSecurityType(TEST_SECURITY_TYPE)
.setPassword(TEST_PASSWORD)
.setProxyHost(TEST_PROXY_HOST)
.setProxyPort(TEST_PROXY_PORT)
.setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
.setPacUrl(TEST_PAC_URL)
.build();
WifiInfo wifiInfo2 = WifiInfo.Builder.builder()
.setSsid("TestWifi2")
.setHidden(TEST_HIDDEN)
.setSecurityType(TEST_SECURITY_TYPE)
.setPassword(TEST_PASSWORD)
.setProxyHost(TEST_PROXY_HOST)
.setProxyPort(TEST_PROXY_PORT)
.setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
.setPacUrl(TEST_PAC_URL)
.build();
// WHEN comparing these two objects.
// THEN they are not equal.
assertThat(wifiInfo2, not(equalTo(wifiInfo1)));
}
@Test
public void testParceable() {
// GIVEN a WifiInfo object.
WifiInfo expectedWifiInfo = WifiInfo.Builder.builder()
.setSsid(TEST_SSID)
.setHidden(TEST_HIDDEN)
.setSecurityType(TEST_SECURITY_TYPE)
.setPassword(TEST_PASSWORD)
.setProxyHost(TEST_PROXY_HOST)
.setProxyPort(TEST_PROXY_PORT)
.setProxyBypassHosts(TEST_PROXY_BYPASS_HOSTS)
.setPacUrl(TEST_PAC_URL)
.build();
// WHEN the WifiInfo is written to parcel and then read back.
Parcel parcel = Parcel.obtain();
expectedWifiInfo.writeToParcel(parcel, 0);
parcel.setDataPosition(0);
WifiInfo actualWifiInfo = WifiInfo.CREATOR.createFromParcel(parcel);
// THEN the same WifiInfo is obtained.
assertEquals(expectedWifiInfo, actualWifiInfo);
}
}