WifiConfigurationTestUtil.java revision 2fafcc56fda54b1adf8b6743beaac59dbb84dfec
1bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski/* 2bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Copyright (C) 2016 The Android Open Source Project 3bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * 4bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Licensed under the Apache License, Version 2.0 (the "License"); 5bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * you may not use this file except in compliance with the License. 6bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * You may obtain a copy of the License at 7bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * 8bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * http://www.apache.org/licenses/LICENSE-2.0 9bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * 10bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Unless required by applicable law or agreed to in writing, software 11bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * distributed under the License is distributed on an "AS IS" BASIS, 12bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * See the License for the specific language governing permissions and 140fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * limitations under the License. 15bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski */ 16bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 17bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskipackage com.android.server.wifi; 18bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 19bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport android.net.wifi.WifiConfiguration; 20bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport android.net.wifi.WifiEnterpriseConfig; 21bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 22e33a4bb414892435c016486585c26022cafdab68Roshan Piusimport static org.junit.Assert.*; 23e33a4bb414892435c016486585c26022cafdab68Roshan Pius 24bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski/** 25bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Helper for creating and populating WifiConfigurations in unit tests. 26bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski */ 270fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskipublic class WifiConfigurationTestUtil { 28b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe /** 29b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe * These values are used to describe AP's security setting. One AP can support multiple of them, 30b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe * only if there is no conflict. 31b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe */ 32b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe public static final int SECURITY_NONE = 0; 33b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe public static final int SECURITY_WEP = 1 << 0; 34b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe public static final int SECURITY_PSK = 1 << 1; 35b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe public static final int SECURITY_EAP = 1 << 2; 36b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe 370fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski /** 380fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * Construct a {@link android.net.wifi.WifiConfiguration}. 390fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param networkId the configuration's networkId 400fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param uid the configuration's creator uid 410fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param ssid the configuration's ssid 420fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param shared whether the configuration is shared with other users on the device 430fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param enabled whether the configuration is enabled 440fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param fqdn the configuration's FQDN (Hotspot 2.0 only) 450fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param providerFriendlyName the configuration's provider's friendly name (Hotspot 2.0 only) 460fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @return the constructed {@link android.net.wifi.WifiConfiguration} 470fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski */ 48bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski public static WifiConfiguration generateWifiConfig(int networkId, int uid, String ssid, 49bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski boolean shared, boolean enabled, String fqdn, String providerFriendlyName) { 50bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski final WifiConfiguration config = new WifiConfiguration(); 51bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.SSID = ssid; 52bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.networkId = networkId; 53bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.creatorUid = uid; 54bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.shared = shared; 55bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.status = enabled ? WifiConfiguration.Status.ENABLED 56bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski : WifiConfiguration.Status.DISABLED; 57bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski if (fqdn != null) { 58bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.FQDN = fqdn; 59bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.providerFriendlyName = providerFriendlyName; 60bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.SIM); 61bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 62bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski return config; 63bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 64b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe 650fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski /** 660fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * Construct a {@link android.net.wifi.WifiConfiguration}. 670fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param networkId the configuration's networkId 680fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param uid the configuration's creator uid 690fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param ssid the configuration's ssid 700fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param shared whether the configuration is shared with other users on the device 710fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param enabled whether the configuration is enabled 720fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param fqdn the configuration's FQDN (Hotspot 2.0 only) 730fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param providerFriendlyName the configuration's provider's friendly name (Hotspot 2.0 only) 740fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param security the configuration's security type 750fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @return the constructed {@link android.net.wifi.WifiConfiguration} 760fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski */ 77b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe public static WifiConfiguration generateWifiConfig(int networkId, int uid, String ssid, 78b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe boolean shared, boolean enabled, String fqdn, String providerFriendlyName, 79b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe int security) { 80b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe WifiConfiguration config = generateWifiConfig(networkId, uid, ssid, shared, enabled, fqdn, 81b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe providerFriendlyName); 82b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe 83b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe if (security == SECURITY_NONE) { 84b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 85b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe } else { 86b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe if (((security & SECURITY_WEP) != 0) || ((security & SECURITY_PSK) != 0)) { 87b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 88b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe } 89b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe 90b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe if ((security & SECURITY_EAP) != 0) { 91b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP); 92b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X); 93b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe } 94b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe } 95b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe return config; 96b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe } 97e33a4bb414892435c016486585c26022cafdab68Roshan Pius 98e33a4bb414892435c016486585c26022cafdab68Roshan Pius /** 992fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius * Asserts that the 2 WifiConfigurations are equal in the elements saved for both backup/restore 1002fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius * and config store. 101e33a4bb414892435c016486585c26022cafdab68Roshan Pius */ 1022fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius private static void assertCommonConfigurationElementsEqual( 103e33a4bb414892435c016486585c26022cafdab68Roshan Pius WifiConfiguration expected, WifiConfiguration actual) { 104e33a4bb414892435c016486585c26022cafdab68Roshan Pius assertEquals(expected.SSID, actual.SSID); 105e33a4bb414892435c016486585c26022cafdab68Roshan Pius assertEquals(expected.BSSID, actual.BSSID); 106e33a4bb414892435c016486585c26022cafdab68Roshan Pius assertEquals(expected.preSharedKey, actual.preSharedKey); 107e33a4bb414892435c016486585c26022cafdab68Roshan Pius assertEquals(expected.wepKeys, actual.wepKeys); 108e33a4bb414892435c016486585c26022cafdab68Roshan Pius assertEquals(expected.wepTxKeyIndex, actual.wepTxKeyIndex); 109e33a4bb414892435c016486585c26022cafdab68Roshan Pius assertEquals(expected.hiddenSSID, actual.hiddenSSID); 110e33a4bb414892435c016486585c26022cafdab68Roshan Pius assertEquals(expected.allowedKeyManagement, actual.allowedKeyManagement); 111e33a4bb414892435c016486585c26022cafdab68Roshan Pius assertEquals(expected.allowedProtocols, actual.allowedProtocols); 112e33a4bb414892435c016486585c26022cafdab68Roshan Pius assertEquals(expected.allowedAuthAlgorithms, actual.allowedAuthAlgorithms); 113e33a4bb414892435c016486585c26022cafdab68Roshan Pius assertEquals(expected.shared, actual.shared); 114e33a4bb414892435c016486585c26022cafdab68Roshan Pius assertEquals(expected.getIpConfiguration(), actual.getIpConfiguration()); 115e33a4bb414892435c016486585c26022cafdab68Roshan Pius } 1162fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius 1172fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius /** 1182fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius * Asserts that the 2 WifiConfigurations are equal. This only compares the elements saved 1192fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius * fpr backup/restore. 1202fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius */ 1212fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius public static void assertConfigurationEqualForBackup( 1222fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius WifiConfiguration expected, WifiConfiguration actual) { 1232fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius assertCommonConfigurationElementsEqual(expected, actual); 1242fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius } 1252fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius 1262fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius /** 1272fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius * Asserts that the 2 WifiConfigurations are equal. This compares all the elements saved for 1282fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius * config store. 1292fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius */ 1302fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius public static void assertConfigurationEqualForConfigStore( 1312fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius WifiConfiguration expected, WifiConfiguration actual) { 1322fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius assertCommonConfigurationElementsEqual(expected, actual); 1332fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius assertEquals(expected.creatorUid, actual.creatorUid); 1342fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius assertEquals(expected.creatorName, actual.creatorName); 1352fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius } 136bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski} 137