1 /* 2 * Copyright 2016, The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.managedprovisioning.task.wifi; 18 19 import static org.junit.Assert.assertEquals; 20 import static org.junit.Assert.assertTrue; 21 22 import android.net.IpConfiguration; 23 import android.net.wifi.WifiConfiguration; 24 import android.support.test.filters.SmallTest; 25 26 import com.android.managedprovisioning.model.WifiInfo; 27 28 import org.junit.Test; 29 30 /** 31 * Unit test for {@link WifiConfigurationProvider}. 32 */ 33 @SmallTest 34 public class WifiConfigurationProviderTest { 35 private static final String TEST_SSID = "test_ssid"; 36 private static final boolean TEST_HIDDEN = true; 37 private static final String TEST_PAC_URL = "test.pac.url"; 38 private static final String TEST_PROXY_BYPASS_HOST = "testProxyBypassHost"; 39 private static final String TEST_PROXY_HOST = "TestProxyHost"; 40 private static final int TEST_PROXY_PORT = 1234; 41 private static final String TEST_PASSWORD = "testPassword"; 42 private static final String TEST_PASSWORD_WEP = "0123456789"; // length needs to be 10 43 44 private static final WifiInfo.Builder BASE_BUILDER = new WifiInfo.Builder() 45 .setSsid(TEST_SSID) 46 .setHidden(TEST_HIDDEN); 47 48 private static final WifiInfo WIFI_INFO_WPA = BASE_BUILDER 49 .setSecurityType(WifiConfigurationProvider.WPA) 50 .setPassword(TEST_PASSWORD) 51 .build(); 52 53 private static final WifiInfo WIFI_INFO_WEP = BASE_BUILDER 54 .setSecurityType(WifiConfigurationProvider.WEP) 55 .setPassword(TEST_PASSWORD) 56 .build(); 57 58 private static final WifiInfo WIFI_INFO_WEP_2 = BASE_BUILDER 59 .setSecurityType(WifiConfigurationProvider.WEP) 60 .setPassword(TEST_PASSWORD_WEP) 61 .build(); 62 63 private static final WifiInfo WIFI_INFO_NONE = BASE_BUILDER 64 .setSecurityType(WifiConfigurationProvider.NONE) 65 .build(); 66 67 private static final WifiInfo WIFI_INFO_NULL = BASE_BUILDER 68 .build(); 69 70 private static final WifiInfo WIFI_INFO_PAC = BASE_BUILDER 71 .setPacUrl(TEST_PAC_URL) 72 .build(); 73 74 private static final WifiInfo WIFI_INFO_PROXY = BASE_BUILDER 75 .setProxyBypassHosts(TEST_PROXY_BYPASS_HOST) 76 .setProxyHost(TEST_PROXY_HOST) 77 .setProxyPort(TEST_PROXY_PORT) 78 .build(); 79 80 81 private final WifiConfigurationProvider mProvider = new WifiConfigurationProvider(); 82 83 @Test 84 public void testWpa() { 85 WifiConfiguration wifiConf = mProvider.generateWifiConfiguration(WIFI_INFO_WPA); 86 87 assertBase(wifiConf); 88 assertTrue(wifiConf.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WPA_PSK)); 89 assertTrue(wifiConf.allowedProtocols.get(WifiConfiguration.Protocol.WPA)); 90 assertEquals("\"" + TEST_PASSWORD + "\"", wifiConf.preSharedKey); 91 assertEquals(IpConfiguration.ProxySettings.UNASSIGNED, wifiConf.getProxySettings()); 92 } 93 94 @Test 95 public void testWep() { 96 WifiConfiguration wifiConf = mProvider.generateWifiConfiguration(WIFI_INFO_WEP); 97 98 assertBase(wifiConf); 99 assertTrue(wifiConf.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.NONE)); 100 assertEquals("\"" + TEST_PASSWORD + "\"", wifiConf.wepKeys[0]); 101 assertEquals(IpConfiguration.ProxySettings.UNASSIGNED, wifiConf.getProxySettings()); 102 } 103 104 @Test 105 public void testWep2() { 106 WifiConfiguration wifiConf = mProvider.generateWifiConfiguration(WIFI_INFO_WEP_2); 107 108 assertBase(wifiConf); 109 assertTrue(wifiConf.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.NONE)); 110 assertEquals(TEST_PASSWORD_WEP, wifiConf.wepKeys[0]); 111 assertEquals(IpConfiguration.ProxySettings.UNASSIGNED, wifiConf.getProxySettings()); 112 } 113 114 @Test 115 public void testNone() { 116 WifiConfiguration wifiConf = mProvider.generateWifiConfiguration(WIFI_INFO_NONE); 117 118 assertBase(wifiConf); 119 assertTrue(wifiConf.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.NONE)); 120 assertTrue(wifiConf.allowedAuthAlgorithms.get(WifiConfiguration.AuthAlgorithm.OPEN)); 121 assertEquals(IpConfiguration.ProxySettings.UNASSIGNED, wifiConf.getProxySettings()); 122 } 123 124 @Test 125 public void testNull() { 126 WifiConfiguration wifiConf = mProvider.generateWifiConfiguration(WIFI_INFO_NULL); 127 128 assertBase(wifiConf); 129 assertTrue(wifiConf.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.NONE)); 130 assertTrue(wifiConf.allowedAuthAlgorithms.get(WifiConfiguration.AuthAlgorithm.OPEN)); 131 assertEquals(IpConfiguration.ProxySettings.UNASSIGNED, wifiConf.getProxySettings()); 132 } 133 134 @Test 135 public void testPac() { 136 WifiConfiguration wifiConf = mProvider.generateWifiConfiguration(WIFI_INFO_PAC); 137 138 assertBase(wifiConf); 139 assertEquals(IpConfiguration.ProxySettings.PAC, wifiConf.getProxySettings()); 140 } 141 142 @Test 143 public void testStaticProxy() { 144 WifiConfiguration wifiConf = mProvider.generateWifiConfiguration(WIFI_INFO_PROXY); 145 146 assertBase(wifiConf); 147 assertEquals(IpConfiguration.ProxySettings.STATIC, wifiConf.getProxySettings()); 148 } 149 150 private void assertBase(WifiConfiguration wifiConf) { 151 assertEquals(TEST_SSID, wifiConf.SSID); 152 assertEquals(TEST_HIDDEN, wifiConf.hiddenSSID); 153 assertEquals(WifiConfiguration.Status.ENABLED, wifiConf.status); 154 assertEquals(WifiConfiguration.USER_APPROVED, wifiConf.userApproved); 155 } 156 } 157