WifiConfigurationTestUtil.java revision 327bd4253115abc757ebaf5f1bddd9f5ad2253e4
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
19f918b154ddceb58c3d214d75ad02180d1907429aRoshan Piusimport static org.junit.Assert.*;
20f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
21f918b154ddceb58c3d214d75ad02180d1907429aRoshan Piusimport android.net.IpConfiguration;
22f918b154ddceb58c3d214d75ad02180d1907429aRoshan Piusimport android.net.LinkAddress;
23f918b154ddceb58c3d214d75ad02180d1907429aRoshan Piusimport android.net.NetworkUtils;
24f918b154ddceb58c3d214d75ad02180d1907429aRoshan Piusimport android.net.ProxyInfo;
25f918b154ddceb58c3d214d75ad02180d1907429aRoshan Piusimport android.net.StaticIpConfiguration;
26bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport android.net.wifi.WifiConfiguration;
275d3609b1931180c37d7292619146ad7d33df9a21Roshan Piusimport android.net.wifi.WifiConfiguration.NetworkSelectionStatus;
28bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport android.net.wifi.WifiEnterpriseConfig;
29f918b154ddceb58c3d214d75ad02180d1907429aRoshan Piusimport android.text.TextUtils;
30bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski
31f918b154ddceb58c3d214d75ad02180d1907429aRoshan Piusimport java.net.InetAddress;
321fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Piusimport java.security.cert.X509Certificate;
339432358b816df5530aed86d4107756854e5ac4f0Peter Qiuimport java.util.Arrays;
34f918b154ddceb58c3d214d75ad02180d1907429aRoshan Piusimport java.util.List;
35e33a4bb414892435c016486585c26022cafdab68Roshan Pius
36bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski/**
37bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Helper for creating and populating WifiConfigurations in unit tests.
38bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski */
390fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskipublic class WifiConfigurationTestUtil {
40b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    /**
41b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe     * These values are used to describe AP's security setting. One AP can support multiple of them,
42b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe     * only if there is no conflict.
43b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe     */
44b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    public static final int SECURITY_NONE = 0;
45b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    public static final int SECURITY_WEP =  1 << 0;
46b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    public static final int SECURITY_PSK =  1 << 1;
47b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    public static final int SECURITY_EAP =  1 << 2;
48b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe
490fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski    /**
50f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * These values are used to describe ip configuration parameters for a network.
51f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     */
52f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static final int STATIC_IP_ASSIGNMENT = 0;
53f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static final int DHCP_IP_ASSIGNMENT = 1;
54f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static final int STATIC_PROXY_SETTING = 0;
55f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static final int PAC_PROXY_SETTING = 1;
56f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static final int NONE_PROXY_SETTING = 2;
57f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
58f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    /**
59f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     * These are constants used to generate predefined WifiConfiguration objects.
60f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     */
61f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final int TEST_NETWORK_ID = -1;
621fe1065da82165183fa057ddbbd2e33bc5708c1bRobin Lee    public static final int TEST_UID = 5;
638600bb5b23872d2f67cf7a12c3d8c40c5f990e84Roshan Pius    public static final String TEST_SSID = "WifiConfigurationTestUtilSSID";
64f50550926a7bddc24adf822876f35812d7d8c7beRoshan Pius    public static final String TEST_PSK = "\"WifiConfigurationTestUtilPsk\"";
65f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String[] TEST_WEP_KEYS =
666a8908d2bc0367397eb92444ac78cc8d43160ef6Roshan Pius            {"\"WifiConfigurationTestUtilWep1\"", "\"WifiConfigurationTestUtilWep2\"",
676a8908d2bc0367397eb92444ac78cc8d43160ef6Roshan Pius                    "45342312ab", "45342312ab45342312ab34ac12"};
68327bd4253115abc757ebaf5f1bddd9f5ad2253e4Roshan Pius    public static final String TEST_EAP_PASSWORD = "WifiConfigurationTestUtilEapPassword";
69f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final int TEST_WEP_TX_KEY_INDEX = 1;
70f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_FQDN = "WifiConfigurationTestUtilFQDN";
71f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_PROVIDER_FRIENDLY_NAME =
72f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius            "WifiConfigurationTestUtilFriendlyName";
73f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_STATIC_IP_LINK_ADDRESS = "192.168.48.2";
74f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final int TEST_STATIC_IP_LINK_PREFIX_LENGTH = 8;
75f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_STATIC_IP_GATEWAY_ADDRESS = "192.168.48.1";
76f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String[] TEST_STATIC_IP_DNS_SERVER_ADDRESSES =
77f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius            new String[]{"192.168.48.1", "192.168.48.10"};
78f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_STATIC_PROXY_HOST = "192.168.48.1";
79f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final int TEST_STATIC_PROXY_PORT = 8000;
80f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_STATIC_PROXY_EXCLUSION_LIST = "";
81f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_PAC_PROXY_LOCATION = "http://";
821fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius    public static final String TEST_CA_CERT_ALIAS = "WifiConfigurationTestUtilCaCertAlias";
83f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
848600bb5b23872d2f67cf7a12c3d8c40c5f990e84Roshan Pius    private static final int MAX_SSID_LENGTH = 32;
85f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    /**
86f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     * Index used to assign unique SSIDs for the generation of predefined WifiConfiguration objects.
87f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     */
88f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    private static int sNetworkIndex = 0;
89f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
90f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    /**
910fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * Construct a {@link android.net.wifi.WifiConfiguration}.
920fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param networkId the configuration's networkId
930fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param uid the configuration's creator uid
940fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param ssid the configuration's ssid
950fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param shared whether the configuration is shared with other users on the device
960fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param enabled whether the configuration is enabled
970fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param fqdn the configuration's FQDN (Hotspot 2.0 only)
980fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param providerFriendlyName the configuration's provider's friendly name (Hotspot 2.0 only)
990fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @return the constructed {@link android.net.wifi.WifiConfiguration}
1000fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     */
101bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski    public static WifiConfiguration generateWifiConfig(int networkId, int uid, String ssid,
102bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski            boolean shared, boolean enabled, String fqdn, String providerFriendlyName) {
103bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        final WifiConfiguration config = new WifiConfiguration();
104bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        config.SSID = ssid;
105bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        config.networkId = networkId;
106bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        config.creatorUid = uid;
107bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        config.shared = shared;
108bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        config.status = enabled ? WifiConfiguration.Status.ENABLED
109bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski                : WifiConfiguration.Status.DISABLED;
1109cc8b06885dc5889a1ed503b25faff5b83d20978Peter Qiu        config.FQDN = fqdn;
1119cc8b06885dc5889a1ed503b25faff5b83d20978Peter Qiu        config.providerFriendlyName = providerFriendlyName;
112bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        return config;
113bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski    }
114b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe
1150fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski    /**
1160fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * Construct a {@link android.net.wifi.WifiConfiguration}.
1170fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param networkId the configuration's networkId
1180fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param uid the configuration's creator uid
1190fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param ssid the configuration's ssid
1200fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param shared whether the configuration is shared with other users on the device
1210fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param enabled whether the configuration is enabled
1220fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param fqdn the configuration's FQDN (Hotspot 2.0 only)
1230fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param providerFriendlyName the configuration's provider's friendly name (Hotspot 2.0 only)
1240fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param security the configuration's security type
1250fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @return the constructed {@link android.net.wifi.WifiConfiguration}
1260fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     */
127b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    public static WifiConfiguration generateWifiConfig(int networkId, int uid, String ssid,
128b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe            boolean shared, boolean enabled, String fqdn, String providerFriendlyName,
129b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe            int security) {
130b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe        WifiConfiguration config = generateWifiConfig(networkId, uid, ssid, shared, enabled, fqdn,
131b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe                providerFriendlyName);
132b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe
13322b5eca14a99c2bbeeae8361c665923ce71e1603Roshan Pius        if ((security == SECURITY_NONE) || ((security & SECURITY_WEP) != 0)) {
134b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
135b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe        } else {
13622b5eca14a99c2bbeeae8361c665923ce71e1603Roshan Pius            if ((security & SECURITY_PSK) != 0) {
137b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe                config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
138b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe            }
139b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe
140b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe            if ((security & SECURITY_EAP) != 0) {
141b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe                config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP);
142b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe                config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X);
1439cc8b06885dc5889a1ed503b25faff5b83d20978Peter Qiu                config.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.TTLS);
144b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe            }
145b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe        }
146b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe        return config;
147b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    }
148e33a4bb414892435c016486585c26022cafdab68Roshan Pius
149e33a4bb414892435c016486585c26022cafdab68Roshan Pius    /**
150f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * Construct a {@link android.net.IpConfiguration }.
151f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param ipAssignmentType One of {@link #STATIC_IP_ASSIGNMENT} or {@link #DHCP_IP_ASSIGNMENT}.
152f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param proxySettingType One of {@link #STATIC_PROXY_SETTING} or {@link #PAC_PROXY_SETTING} or
153f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     *                        {@link #NONE_PROXY_SETTING}.
154f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param linkAddress static ip address string.
155f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param linkPrefixLength static ip address prefix length.
156f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param gatewayAddress static gateway address.
157f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param dnsServerAddresses list of dns servers for static ip configuration.
158f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param proxyHost Static proxy server address.
159f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param proxyPort Static proxy server port.
160f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param proxyExclusionList Static proxy exclusion list.
161f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param pacProxyPath Pac proxy server path.
162f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @return the constructed {@link android.net.IpConfiguration}
163f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     */
164f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static IpConfiguration generateIpConfig(
165f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            int ipAssignmentType, int proxySettingType, String linkAddress, int linkPrefixLength,
166f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            String gatewayAddress, String[] dnsServerAddresses, String proxyHost,
167f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            int proxyPort, String proxyExclusionList, String pacProxyPath) {
168f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        StaticIpConfiguration staticIpConfiguration = null;
169f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        ProxyInfo proxyInfo = null;
170f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        IpConfiguration.IpAssignment ipAssignment = IpConfiguration.IpAssignment.UNASSIGNED;
171f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        IpConfiguration.ProxySettings proxySettings = IpConfiguration.ProxySettings.UNASSIGNED;
172f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
173f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        if (ipAssignmentType == STATIC_IP_ASSIGNMENT) {
174f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            staticIpConfiguration = new StaticIpConfiguration();
175f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            if (!TextUtils.isEmpty(linkAddress)) {
176f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                LinkAddress linkAddr =
177f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                        new LinkAddress(
178f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                                NetworkUtils.numericToInetAddress(linkAddress), linkPrefixLength);
179f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                staticIpConfiguration.ipAddress = linkAddr;
180f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            }
181f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
182f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            if (!TextUtils.isEmpty(gatewayAddress)) {
183f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                InetAddress gatewayAddr =
184f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                        NetworkUtils.numericToInetAddress(gatewayAddress);
185f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                staticIpConfiguration.gateway = gatewayAddr;
186f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            }
187f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            if (dnsServerAddresses != null) {
188f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                for (String dnsServerAddress : dnsServerAddresses) {
189f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                    if (!TextUtils.isEmpty(dnsServerAddress)) {
190f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                        staticIpConfiguration.dnsServers.add(
191f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                                NetworkUtils.numericToInetAddress(dnsServerAddress));
192f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                    }
193f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
194f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                }
195f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            }
196f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            ipAssignment = IpConfiguration.IpAssignment.STATIC;
197f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        } else if (ipAssignmentType == DHCP_IP_ASSIGNMENT) {
198f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            ipAssignment = IpConfiguration.IpAssignment.DHCP;
199f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        }
200f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
201f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        if (proxySettingType == STATIC_PROXY_SETTING) {
202f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            proxyInfo = new ProxyInfo(proxyHost, proxyPort, proxyExclusionList);
203f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            proxySettings = IpConfiguration.ProxySettings.STATIC;
204f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        } else if (proxySettingType == PAC_PROXY_SETTING) {
205f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            proxyInfo = new ProxyInfo(pacProxyPath);
206f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            proxySettings = IpConfiguration.ProxySettings.PAC;
207f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        } else if (proxySettingType == NONE_PROXY_SETTING) {
208f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            proxySettings = IpConfiguration.ProxySettings.NONE;
209f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        }
210f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        return new IpConfiguration(ipAssignment, proxySettings, staticIpConfiguration, proxyInfo);
211f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    }
212f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
213f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    /**
214f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     * Create a new SSID for the the network being created.
215f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     */
216f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    private static String createNewSSID() {
2178600bb5b23872d2f67cf7a12c3d8c40c5f990e84Roshan Pius        String ssid = TEST_SSID + sNetworkIndex++;
2188600bb5b23872d2f67cf7a12c3d8c40c5f990e84Roshan Pius        assertTrue(ssid.length() <= MAX_SSID_LENGTH);
2198600bb5b23872d2f67cf7a12c3d8c40c5f990e84Roshan Pius        return "\"" + ssid + "\"";
220f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
221f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
222f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    /**
223f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     * Helper methods to generate predefined WifiConfiguration objects of the required type. These
224f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     * use a static index to avoid duplicate configurations.
225f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     */
226f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createOpenNetwork() {
227f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateWifiConfig(TEST_NETWORK_ID, TEST_UID, createNewSSID(), true, true, null,
228f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                null, SECURITY_NONE);
229f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
230f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
231f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createOpenHiddenNetwork() {
232f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration = createOpenNetwork();
233f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.hiddenSSID = true;
234f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
235f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
236f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
237f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createPskNetwork() {
238f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration =
239f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                generateWifiConfig(TEST_NETWORK_ID, TEST_UID, createNewSSID(), true, true, null,
240f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                        null, SECURITY_PSK);
241f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.preSharedKey = TEST_PSK;
242f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
243f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
244f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
245ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang    public static WifiConfiguration createPskNetwork(String ssid) {
246ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang        WifiConfiguration configuration =
247ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang                generateWifiConfig(TEST_NETWORK_ID, TEST_UID, ssid, true, true, null,
248ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang                        null, SECURITY_PSK);
249ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang        configuration.preSharedKey = TEST_PSK;
250ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang        return configuration;
251ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang    }
252ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang
253ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang
254f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createPskHiddenNetwork() {
255f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration = createPskNetwork();
256f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.hiddenSSID = true;
257f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
258f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
259f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
260f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createWepNetwork() {
261f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration =
262f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                generateWifiConfig(TEST_NETWORK_ID, TEST_UID, createNewSSID(), true, true, null,
263f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                        null, SECURITY_WEP);
264f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.wepKeys = TEST_WEP_KEYS;
265f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.wepTxKeyIndex = TEST_WEP_TX_KEY_INDEX;
266f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
267f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
268f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
269f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createWepHiddenNetwork() {
270f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration = createWepNetwork();
271f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.hiddenSSID = true;
272f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
273f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
274f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
275f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
276f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createWepNetworkWithSingleKey() {
277f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration =
278f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                generateWifiConfig(TEST_NETWORK_ID, TEST_UID, createNewSSID(), true, true, null,
279f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                        null, SECURITY_WEP);
280f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.wepKeys[0] = TEST_WEP_KEYS[0];
281f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.wepTxKeyIndex = 0;
282f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
283f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
284f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
285f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
286f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createEapNetwork() {
287f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration =
288f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                generateWifiConfig(TEST_NETWORK_ID, TEST_UID, createNewSSID(), true, true,
2899cc8b06885dc5889a1ed503b25faff5b83d20978Peter Qiu                        null, null, SECURITY_EAP);
290f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
291f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
292f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
293ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang    public static WifiConfiguration createEapNetwork(String ssid) {
294ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang        WifiConfiguration configuration =
295ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang                generateWifiConfig(TEST_NETWORK_ID, TEST_UID, ssid, true, true,
296ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang                        null, null, SECURITY_EAP);
297ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang        return configuration;
298ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang    }
299ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang
300ff27ddf1923d9d4d4cfa8cc1a1ddb8748d0f2426Ningyuan Wang
3018757adcc5e1f17354d09b4bacd3abda911974448Paul Stewart    public static WifiConfiguration createEapNetwork(int eapMethod, int phase2Method) {
3028757adcc5e1f17354d09b4bacd3abda911974448Paul Stewart        WifiConfiguration configuration =
3038757adcc5e1f17354d09b4bacd3abda911974448Paul Stewart                generateWifiConfig(TEST_NETWORK_ID, TEST_UID, createNewSSID(), true, true,
3048757adcc5e1f17354d09b4bacd3abda911974448Paul Stewart                        null, null, SECURITY_EAP);
3058757adcc5e1f17354d09b4bacd3abda911974448Paul Stewart        configuration.enterpriseConfig.setEapMethod(eapMethod);
3068757adcc5e1f17354d09b4bacd3abda911974448Paul Stewart        configuration.enterpriseConfig.setPhase2Method(phase2Method);
3078757adcc5e1f17354d09b4bacd3abda911974448Paul Stewart        return configuration;
3088757adcc5e1f17354d09b4bacd3abda911974448Paul Stewart    }
3098757adcc5e1f17354d09b4bacd3abda911974448Paul Stewart
310d7e8058288bdc5085b54fef77dbfa38597cea348Peter Qiu    public static WifiConfiguration createPasspointNetwork() {
311d7e8058288bdc5085b54fef77dbfa38597cea348Peter Qiu        WifiConfiguration configuration =
312d7e8058288bdc5085b54fef77dbfa38597cea348Peter Qiu                generateWifiConfig(TEST_NETWORK_ID, TEST_UID, createNewSSID(), true, true,
313d7e8058288bdc5085b54fef77dbfa38597cea348Peter Qiu                        TEST_FQDN, TEST_PROVIDER_FRIENDLY_NAME, SECURITY_EAP);
314d7e8058288bdc5085b54fef77dbfa38597cea348Peter Qiu        return configuration;
315d7e8058288bdc5085b54fef77dbfa38597cea348Peter Qiu    }
316d7e8058288bdc5085b54fef77dbfa38597cea348Peter Qiu
317f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static IpConfiguration createStaticIpConfigurationWithPacProxy() {
318f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateIpConfig(
319f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                STATIC_IP_ASSIGNMENT, PAC_PROXY_SETTING,
320f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_LINK_ADDRESS, TEST_STATIC_IP_LINK_PREFIX_LENGTH,
321f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_GATEWAY_ADDRESS, TEST_STATIC_IP_DNS_SERVER_ADDRESSES,
322f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_PROXY_HOST, TEST_STATIC_PROXY_PORT, TEST_STATIC_PROXY_EXCLUSION_LIST,
323f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_PAC_PROXY_LOCATION);
324f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
325f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
326f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static IpConfiguration createStaticIpConfigurationWithStaticProxy() {
327f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateIpConfig(
328f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                STATIC_IP_ASSIGNMENT, STATIC_PROXY_SETTING,
329f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_LINK_ADDRESS, TEST_STATIC_IP_LINK_PREFIX_LENGTH,
330f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_GATEWAY_ADDRESS, TEST_STATIC_IP_DNS_SERVER_ADDRESSES,
331f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_PROXY_HOST, TEST_STATIC_PROXY_PORT, TEST_STATIC_PROXY_EXCLUSION_LIST,
332f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_PAC_PROXY_LOCATION);
333f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
334f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
335f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static IpConfiguration createPartialStaticIpConfigurationWithPacProxy() {
336f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateIpConfig(
337f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                STATIC_IP_ASSIGNMENT, PAC_PROXY_SETTING,
338f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_LINK_ADDRESS, TEST_STATIC_IP_LINK_PREFIX_LENGTH,
339f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                null, null,
340f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_PROXY_HOST, TEST_STATIC_PROXY_PORT, TEST_STATIC_PROXY_EXCLUSION_LIST,
341f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_PAC_PROXY_LOCATION);
342f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
343f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
344f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static IpConfiguration createDHCPIpConfigurationWithPacProxy() {
345f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateIpConfig(
346f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                DHCP_IP_ASSIGNMENT, PAC_PROXY_SETTING,
347f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_LINK_ADDRESS, TEST_STATIC_IP_LINK_PREFIX_LENGTH,
348f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_GATEWAY_ADDRESS, TEST_STATIC_IP_DNS_SERVER_ADDRESSES,
349f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_PROXY_HOST, TEST_STATIC_PROXY_PORT, TEST_STATIC_PROXY_EXCLUSION_LIST,
350f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_PAC_PROXY_LOCATION);
351f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
352f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
353f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static IpConfiguration createDHCPIpConfigurationWithStaticProxy() {
354f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateIpConfig(
355f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                DHCP_IP_ASSIGNMENT, STATIC_PROXY_SETTING,
356f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_LINK_ADDRESS, TEST_STATIC_IP_LINK_PREFIX_LENGTH,
357f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_GATEWAY_ADDRESS, TEST_STATIC_IP_DNS_SERVER_ADDRESSES,
358f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_PROXY_HOST, TEST_STATIC_PROXY_PORT, TEST_STATIC_PROXY_EXCLUSION_LIST,
359f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_PAC_PROXY_LOCATION);
360f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
361f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
362f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static IpConfiguration createDHCPIpConfigurationWithNoProxy() {
363f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateIpConfig(
364f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                DHCP_IP_ASSIGNMENT, NONE_PROXY_SETTING,
365f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_LINK_ADDRESS, TEST_STATIC_IP_LINK_PREFIX_LENGTH,
366f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_GATEWAY_ADDRESS, TEST_STATIC_IP_DNS_SERVER_ADDRESSES,
367f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_PROXY_HOST, TEST_STATIC_PROXY_PORT, TEST_STATIC_PROXY_EXCLUSION_LIST,
368f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_PAC_PROXY_LOCATION);
369f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
370f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
3710d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne    /**
3720d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne     * Creates an IP configuration with specific parameters.
3730d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne     * @param proxySetting Must be one of {@link WifiConfigurationTestUtil#STATIC_PROXY_SETTING},
3740d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne     * {@link WifiConfigurationTestUtil#PAC_PROXY_SETTING},
3750d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne     * {@link WifiConfigurationTestUtil#NONE_PROXY_SETTING}
3760d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne     */
3770d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne    public static IpConfiguration createDHCPIpConfigurationWithSpecificProxy(
3780d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne            int proxySetting,
3790d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne            String staticProxyHost,
3800d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne            int staticProxyPort,
3810d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne            String staticProxyExclusionList,
3820d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne            String pacProxyLocation) {
3830d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne        return generateIpConfig(
3840d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne                DHCP_IP_ASSIGNMENT, proxySetting,
3850d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne                TEST_STATIC_IP_LINK_ADDRESS, TEST_STATIC_IP_LINK_PREFIX_LENGTH,
3860d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne                TEST_STATIC_IP_GATEWAY_ADDRESS, TEST_STATIC_IP_DNS_SERVER_ADDRESSES,
3870d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne                staticProxyHost, staticProxyPort, staticProxyExclusionList,
3880d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne                pacProxyLocation);
3890d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne    }
3900d14dbc1da819e72054b9f168c8e3db767dd34bfGlen Kuhne
3911fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius    // TODO: These enterprise configurations may need more parameters set.
3921fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius    public static WifiEnterpriseConfig createPEAPWifiEnterpriseConfigWithGTCPhase2() {
3931fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius        WifiEnterpriseConfig config = new WifiEnterpriseConfig();
3941fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius        config.setEapMethod(WifiEnterpriseConfig.Eap.PEAP);
3951fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius        config.setPhase2Method(WifiEnterpriseConfig.Phase2.GTC);
3961fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius        config.setCaCertificateAliases(new String[] {TEST_CA_CERT_ALIAS + "PEAP"});
3971fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius        config.setCaCertificates(new X509Certificate[] {FakeKeys.CA_CERT0, FakeKeys.CA_CERT1});
3981fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius        return config;
3991fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius    }
4001fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius
4011fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius    public static WifiEnterpriseConfig createTLSWifiEnterpriseConfigWithNonePhase2() {
4021fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius        WifiEnterpriseConfig config = new WifiEnterpriseConfig();
4031fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius        config.setEapMethod(WifiEnterpriseConfig.Eap.TLS);
4041fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius        config.setPhase2Method(WifiEnterpriseConfig.Phase2.NONE);
4051fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius        config.setCaCertificateAliases(new String[] {TEST_CA_CERT_ALIAS + "TLS"});
4061fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius        config.setCaCertificates(new X509Certificate[] {FakeKeys.CA_CERT0, FakeKeys.CA_CERT1});
4071fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius        return config;
4081fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius    }
4091fa858ae90e82658e2d5332f66c62c671e736bfbRoshan Pius
410cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius    public static WifiEnterpriseConfig createTLSWifiEnterpriseConfigWithAkaPhase2() {
411cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius        WifiEnterpriseConfig config = new WifiEnterpriseConfig();
412cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius        config.setEapMethod(WifiEnterpriseConfig.Eap.TLS);
413cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius        config.setPhase2Method(WifiEnterpriseConfig.Phase2.AKA);
414cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius        return config;
415cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius    }
416cb9565f0cb8fa92346549bcacdfbf91cdf8e6bd3Roshan Pius
417f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    /**
4182fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     * Asserts that the 2 WifiConfigurations are equal in the elements saved for both backup/restore
4192fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     * and config store.
420e33a4bb414892435c016486585c26022cafdab68Roshan Pius     */
4212fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    private static void assertCommonConfigurationElementsEqual(
422e33a4bb414892435c016486585c26022cafdab68Roshan Pius            WifiConfiguration expected, WifiConfiguration actual) {
423009ba55ea70190ab6f98d72698d6ee426bcefd9eRoshan Pius        assertNotNull(expected);
424009ba55ea70190ab6f98d72698d6ee426bcefd9eRoshan Pius        assertNotNull(actual);
425e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.SSID, actual.SSID);
426e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.BSSID, actual.BSSID);
427e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.preSharedKey, actual.preSharedKey);
428e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.wepKeys, actual.wepKeys);
429e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.wepTxKeyIndex, actual.wepTxKeyIndex);
430e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.hiddenSSID, actual.hiddenSSID);
431241605aebc6a8f55624026e8b72246bceb1c2ac2Roshan Pius        assertEquals(expected.requirePMF, actual.requirePMF);
432e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.allowedKeyManagement, actual.allowedKeyManagement);
433e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.allowedProtocols, actual.allowedProtocols);
434e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.allowedAuthAlgorithms, actual.allowedAuthAlgorithms);
435241605aebc6a8f55624026e8b72246bceb1c2ac2Roshan Pius        assertEquals(expected.allowedGroupCiphers, actual.allowedGroupCiphers);
436241605aebc6a8f55624026e8b72246bceb1c2ac2Roshan Pius        assertEquals(expected.allowedPairwiseCiphers, actual.allowedPairwiseCiphers);
437e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.shared, actual.shared);
438e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.getIpConfiguration(), actual.getIpConfiguration());
439e33a4bb414892435c016486585c26022cafdab68Roshan Pius    }
4402fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius
4412fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    /**
4422fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     * Asserts that the 2 WifiConfigurations are equal. This only compares the elements saved
4432fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     * fpr backup/restore.
4442fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     */
4452fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    public static void assertConfigurationEqualForBackup(
4462fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius            WifiConfiguration expected, WifiConfiguration actual) {
4472fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius        assertCommonConfigurationElementsEqual(expected, actual);
4482fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    }
4492fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius
4502fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    /**
4512fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     * Asserts that the 2 WifiConfigurations are equal. This compares all the elements saved for
4522fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     * config store.
4532fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     */
4542fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    public static void assertConfigurationEqualForConfigStore(
4552fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius            WifiConfiguration expected, WifiConfiguration actual) {
4562fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius        assertCommonConfigurationElementsEqual(expected, actual);
4576296902ef69724b106973b57b268c30ea4f1ab51Roshan Pius        assertEquals(expected.status, actual.status);
458030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.FQDN, actual.FQDN);
459030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.providerFriendlyName, actual.providerFriendlyName);
4609432358b816df5530aed86d4107756854e5ac4f0Peter Qiu        assertTrue(Arrays.equals(expected.roamingConsortiumIds, actual.roamingConsortiumIds));
461030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.linkedConfigurations, actual.linkedConfigurations);
462030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.defaultGwMacAddress, actual.defaultGwMacAddress);
463030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.validatedInternetAccess, actual.validatedInternetAccess);
464030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.noInternetAccessExpected, actual.noInternetAccessExpected);
465030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.userApproved, actual.userApproved);
466030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.meteredHint, actual.meteredHint);
467030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.useExternalScores, actual.useExternalScores);
468030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.numAssociation, actual.numAssociation);
4692fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius        assertEquals(expected.creatorUid, actual.creatorUid);
4702fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius        assertEquals(expected.creatorName, actual.creatorName);
471030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.creationTime, actual.creationTime);
472030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.lastUpdateUid, actual.lastUpdateUid);
473030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.lastUpdateName, actual.lastUpdateName);
474030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.lastConnectUid, actual.lastConnectUid);
475f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        assertEquals(expected.updateTime, actual.updateTime);
4769ef555a48ac600c8766f703fa60db15b69e20301Peter Qiu        assertEquals(expected.isLegacyPasspointConfig, actual.isLegacyPasspointConfig);
4775d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        assertNetworkSelectionStatusEqualForConfigStore(
4785d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius                expected.getNetworkSelectionStatus(), actual.getNetworkSelectionStatus());
479642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertWifiEnterpriseConfigEqualForConfigStore(
480642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                expected.enterpriseConfig, actual.enterpriseConfig);
4815d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius    }
4825d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius
4835d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius    /**
48450eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius     * Asserts that the 2 WifiConfigurations are equal. This compares all the elements that are
48550eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius     * saved into internal database by WifiConfigurationManager for network additions/updates.
48650eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius     */
48750eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius    public static void assertConfigurationEqualForConfigManagerAddOrUpdate(
48850eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius            WifiConfiguration expected, WifiConfiguration actual) {
48950eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertCommonConfigurationElementsEqual(expected, actual);
49050eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertEquals(expected.FQDN, actual.FQDN);
49150eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertEquals(expected.providerFriendlyName, actual.providerFriendlyName);
49250eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertEquals(expected.noInternetAccessExpected, actual.noInternetAccessExpected);
49350eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertEquals(expected.meteredHint, actual.meteredHint);
49450eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertEquals(expected.useExternalScores, actual.useExternalScores);
49550eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertEquals(expected.ephemeral, actual.ephemeral);
49650eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertEquals(expected.creatorUid, actual.creatorUid);
49750eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertEquals(expected.creatorName, actual.creatorName);
49850eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertEquals(expected.creationTime, actual.creationTime);
49950eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertEquals(expected.lastUpdateUid, actual.lastUpdateUid);
50050eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertEquals(expected.lastUpdateName, actual.lastUpdateName);
50150eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertEquals(expected.updateTime, actual.updateTime);
50250eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertNetworkSelectionStatusEqualForConfigStore(
50350eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius                expected.getNetworkSelectionStatus(), actual.getNetworkSelectionStatus());
50450eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertWifiEnterpriseConfigEqualForConfigStore(
50550eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius                expected.enterpriseConfig, actual.enterpriseConfig);
50650eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius    }
50750eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius
50850eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius    /**
50966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * Asserts that the 2 WifiConfigurations are equal. This compares all the elements that are
51066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     * saved into wpa_supplicant by SupplicantStaNetwork.
51166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne     */
51266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    public static void assertConfigurationEqualForSupplicant(
51366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne            WifiConfiguration expected, WifiConfiguration actual) {
51466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertNotNull(expected);
51566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertNotNull(actual);
51666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(expected.SSID, actual.SSID);
51766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(expected.getNetworkSelectionStatus().getNetworkSelectionBSSID(),
51866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne                actual.getNetworkSelectionStatus().getNetworkSelectionBSSID());
51966e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(expected.preSharedKey, actual.preSharedKey);
52066e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(expected.wepKeys, actual.wepKeys);
52166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(expected.wepTxKeyIndex, actual.wepTxKeyIndex);
52266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(expected.hiddenSSID, actual.hiddenSSID);
52366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(expected.requirePMF, actual.requirePMF);
52466e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(expected.allowedKeyManagement, actual.allowedKeyManagement);
52566e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(expected.allowedProtocols, actual.allowedProtocols);
52666e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(expected.allowedAuthAlgorithms, actual.allowedAuthAlgorithms);
52766e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(expected.allowedGroupCiphers, actual.allowedGroupCiphers);
52866e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne        assertEquals(expected.allowedPairwiseCiphers, actual.allowedPairwiseCiphers);
52964950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius        assertWifiEnterpriseConfigEqualForConfigStore(
53064950d46f5469e5e6ce32ccc81a1f751c40f4202Roshan Pius                expected.enterpriseConfig, actual.enterpriseConfig);
53166e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    }
53266e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne
53366e9f4ab597136cbf4accadb8e009fc68ff071a7Glen Kuhne    /**
534009ba55ea70190ab6f98d72698d6ee426bcefd9eRoshan Pius     * Asserts that the 2 WifiConfigurations are equal. This is a generic version of the comparator
535009ba55ea70190ab6f98d72698d6ee426bcefd9eRoshan Pius     * which is used in QNS tests for comparing the network selections.
536009ba55ea70190ab6f98d72698d6ee426bcefd9eRoshan Pius     * This importantly checks that the networkId's of the 2 configs are equal.
537009ba55ea70190ab6f98d72698d6ee426bcefd9eRoshan Pius     */
538009ba55ea70190ab6f98d72698d6ee426bcefd9eRoshan Pius    public static void assertConfigurationEqual(
539009ba55ea70190ab6f98d72698d6ee426bcefd9eRoshan Pius            WifiConfiguration expected, WifiConfiguration actual) {
540009ba55ea70190ab6f98d72698d6ee426bcefd9eRoshan Pius        assertCommonConfigurationElementsEqual(expected, actual);
541009ba55ea70190ab6f98d72698d6ee426bcefd9eRoshan Pius        assertEquals(expected.networkId, actual.networkId);
542009ba55ea70190ab6f98d72698d6ee426bcefd9eRoshan Pius    }
543009ba55ea70190ab6f98d72698d6ee426bcefd9eRoshan Pius
544009ba55ea70190ab6f98d72698d6ee426bcefd9eRoshan Pius    /**
5455d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius     * Assert that the 2 NetworkSelectionStatus's are equal. This compares all the elements saved
5465d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius     * for config store.
5475d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius     */
5485d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius    public static void assertNetworkSelectionStatusEqualForConfigStore(
5495d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius            NetworkSelectionStatus expected, NetworkSelectionStatus actual) {
5505d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        if (expected.isNetworkTemporaryDisabled()) {
5515d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius            // Temporarily disabled networks are enabled when persisted.
5525d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius            assertEquals(
5535d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius                    NetworkSelectionStatus.NETWORK_SELECTION_ENABLED,
5545d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius                    actual.getNetworkSelectionStatus());
5550e2540a1c1ba3c541a229b039a90789f93c41ee7Roshan Pius            assertEquals(
5560e2540a1c1ba3c541a229b039a90789f93c41ee7Roshan Pius                    NetworkSelectionStatus.NETWORK_SELECTION_ENABLE,
5570e2540a1c1ba3c541a229b039a90789f93c41ee7Roshan Pius                    actual.getNetworkSelectionDisableReason());
5585d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        } else {
5595d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius            assertEquals(expected.getNetworkSelectionStatus(), actual.getNetworkSelectionStatus());
5600e2540a1c1ba3c541a229b039a90789f93c41ee7Roshan Pius            assertEquals(
5610e2540a1c1ba3c541a229b039a90789f93c41ee7Roshan Pius                    expected.getNetworkSelectionDisableReason(),
5620e2540a1c1ba3c541a229b039a90789f93c41ee7Roshan Pius                    actual.getNetworkSelectionDisableReason());
5635d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        }
5645d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        assertEquals(expected.getConnectChoice(), actual.getConnectChoice());
5655d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        assertEquals(expected.getConnectChoiceTimestamp(), actual.getConnectChoiceTimestamp());
5665d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        assertEquals(expected.getHasEverConnected(), actual.getHasEverConnected());
5672fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    }
568642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius
569642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius    /**
570642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius     * Assert that the 2 WifiEnterpriseConfig's are equal. This compares all the elements saved
571642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius     * for config store.
572642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius     */
573642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius    public static void assertWifiEnterpriseConfigEqualForConfigStore(
574642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius            WifiEnterpriseConfig expected, WifiEnterpriseConfig actual) {
575d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.IDENTITY_KEY),
576d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius                actual.getFieldValue(WifiEnterpriseConfig.IDENTITY_KEY));
577d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.ANON_IDENTITY_KEY),
578d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius                actual.getFieldValue(WifiEnterpriseConfig.ANON_IDENTITY_KEY));
579d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.PASSWORD_KEY),
580d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius                actual.getFieldValue(WifiEnterpriseConfig.PASSWORD_KEY));
581d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.CLIENT_CERT_KEY),
582d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius                actual.getFieldValue(WifiEnterpriseConfig.CLIENT_CERT_KEY));
583d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.CA_CERT_KEY),
584d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius                actual.getFieldValue(WifiEnterpriseConfig.CA_CERT_KEY));
585d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.SUBJECT_MATCH_KEY),
586d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius                actual.getFieldValue(WifiEnterpriseConfig.SUBJECT_MATCH_KEY));
587d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.ENGINE_KEY),
588d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius                actual.getFieldValue(WifiEnterpriseConfig.ENGINE_KEY));
589d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.ENGINE_ID_KEY),
590d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius                actual.getFieldValue(WifiEnterpriseConfig.ENGINE_ID_KEY));
591d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.PRIVATE_KEY_ID_KEY),
592d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius                actual.getFieldValue(WifiEnterpriseConfig.PRIVATE_KEY_ID_KEY));
593d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.ALTSUBJECT_MATCH_KEY),
594d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius                actual.getFieldValue(WifiEnterpriseConfig.ALTSUBJECT_MATCH_KEY));
595d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.DOM_SUFFIX_MATCH_KEY),
596d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius                actual.getFieldValue(WifiEnterpriseConfig.DOM_SUFFIX_MATCH_KEY));
597d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.CA_PATH_KEY),
598d83ef7d8c4948afc328d8ef0e746b32c195f271eRoshan Pius                actual.getFieldValue(WifiEnterpriseConfig.CA_PATH_KEY));
5999432358b816df5530aed86d4107756854e5ac4f0Peter Qiu        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.REALM_KEY),
6009432358b816df5530aed86d4107756854e5ac4f0Peter Qiu                actual.getFieldValue(WifiEnterpriseConfig.REALM_KEY));
6019432358b816df5530aed86d4107756854e5ac4f0Peter Qiu        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.PLMN_KEY),
6029432358b816df5530aed86d4107756854e5ac4f0Peter Qiu                actual.getFieldValue(WifiEnterpriseConfig.PLMN_KEY));
603642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getEapMethod(), actual.getEapMethod());
604642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getPhase2Method(), actual.getPhase2Method());
605642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius    }
606f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
607f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    /**
608f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * Asserts that the 2 lists of WifiConfigurations are equal. This compares all the elements
609f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * saved for backup/restore.
610f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     */
611f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static void assertConfigurationsEqualForBackup(
612f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            List<WifiConfiguration> expected, List<WifiConfiguration> actual) {
613f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        assertEquals(expected.size(), actual.size());
614f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        for (WifiConfiguration expectedConfiguration : expected) {
615f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            String expectedConfigKey = expectedConfiguration.configKey();
616f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            boolean didCompare = false;
617f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            for (WifiConfiguration actualConfiguration : actual) {
618f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                String actualConfigKey = actualConfiguration.configKey();
619f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                if (actualConfigKey.equals(expectedConfigKey)) {
620f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                    assertConfigurationEqualForBackup(
621f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                            expectedConfiguration, actualConfiguration);
622f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                    didCompare = true;
623f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                }
624f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            }
625f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            assertTrue(didCompare);
62650eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        }
62750eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius    }
62850eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius
62950eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius    /**
63050eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius     * Asserts that the 2 lists of WifiConfigurations are equal. This compares all the elements
63150eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius     * that are saved into internal database by WifiConfigurationManager for network
63250eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius     * additions/updates.
63350eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius     */
63450eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius    public static void assertConfigurationsEqualForConfigManagerAddOrUpdate(
63550eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius            List<WifiConfiguration> expected, List<WifiConfiguration> actual) {
63650eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        assertEquals(expected.size(), actual.size());
63750eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius        for (WifiConfiguration expectedConfiguration : expected) {
63850eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius            String expectedConfigKey = expectedConfiguration.configKey();
63950eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius            boolean didCompare = false;
64050eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius            for (WifiConfiguration actualConfiguration : actual) {
64150eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius                String actualConfigKey = actualConfiguration.configKey();
64250eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius                if (actualConfigKey.equals(expectedConfigKey)) {
64350eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius                    assertConfigurationEqualForConfigManagerAddOrUpdate(
64450eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius                            expectedConfiguration, actualConfiguration);
64550eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius                    didCompare = true;
64650eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius                }
64750eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius            }
64850eed92fe9556fdd9934683690181fea77ce4eacRoshan Pius            assertTrue(didCompare);
649f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        }
650f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    }
651f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
652f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    /**
653f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * Asserts that the 2 lists of WifiConfigurations are equal. This compares all the elements
654f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * saved for config store.
655f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     */
656f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static void assertConfigurationsEqualForConfigStore(
657f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            List<WifiConfiguration> expected, List<WifiConfiguration> actual) {
658f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        assertEquals(expected.size(), actual.size());
659f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        for (WifiConfiguration expectedConfiguration : expected) {
660f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            String expectedConfigKey = expectedConfiguration.configKey();
661f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            boolean didCompare = false;
662f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            for (WifiConfiguration actualConfiguration : actual) {
663f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                String actualConfigKey = actualConfiguration.configKey();
664f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                if (actualConfigKey.equals(expectedConfigKey)) {
665f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                    assertConfigurationEqualForConfigStore(
666f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                            expectedConfiguration, actualConfiguration);
667f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                    didCompare = true;
668f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                }
669f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            }
670f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            assertTrue(didCompare);
671f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        }
672f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    }
673bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski}
674