WifiConfigurationTestUtil.java revision f03d366f869da748d97706dbcfbd30b989186f4e
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;
32f918b154ddceb58c3d214d75ad02180d1907429aRoshan Piusimport java.util.List;
33e33a4bb414892435c016486585c26022cafdab68Roshan Pius
34bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski/**
35bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Helper for creating and populating WifiConfigurations in unit tests.
36bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski */
370fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskipublic class WifiConfigurationTestUtil {
38b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    /**
39b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe     * These values are used to describe AP's security setting. One AP can support multiple of them,
40b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe     * only if there is no conflict.
41b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe     */
42b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    public static final int SECURITY_NONE = 0;
43b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    public static final int SECURITY_WEP =  1 << 0;
44b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    public static final int SECURITY_PSK =  1 << 1;
45b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    public static final int SECURITY_EAP =  1 << 2;
46b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe
470fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski    /**
48f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * These values are used to describe ip configuration parameters for a network.
49f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     */
50f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static final int STATIC_IP_ASSIGNMENT = 0;
51f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static final int DHCP_IP_ASSIGNMENT = 1;
52f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static final int STATIC_PROXY_SETTING = 0;
53f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static final int PAC_PROXY_SETTING = 1;
54f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static final int NONE_PROXY_SETTING = 2;
55f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
56f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    /**
57f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     * These are constants used to generate predefined WifiConfiguration objects.
58f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     */
59f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final int TEST_NETWORK_ID = -1;
60f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final int TEST_UID = 1;
61f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_SSID = "WifiConfigurationTestUtilSSID_";
62f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_PSK = "WifiConfigurationTestUtilPsk";
63f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String[] TEST_WEP_KEYS =
64f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius            {"WifiConfigurationTestUtilWep1", "WifiConfigurationTestUtilWep2",
65f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                    "WifiConfigurationTestUtilWep3", "WifiConfigurationTestUtilWep3"};
66f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final int TEST_WEP_TX_KEY_INDEX = 1;
67f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_FQDN = "WifiConfigurationTestUtilFQDN";
68f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_PROVIDER_FRIENDLY_NAME =
69f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius            "WifiConfigurationTestUtilFriendlyName";
70f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_STATIC_IP_LINK_ADDRESS = "192.168.48.2";
71f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final int TEST_STATIC_IP_LINK_PREFIX_LENGTH = 8;
72f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_STATIC_IP_GATEWAY_ADDRESS = "192.168.48.1";
73f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String[] TEST_STATIC_IP_DNS_SERVER_ADDRESSES =
74f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius            new String[]{"192.168.48.1", "192.168.48.10"};
75f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_STATIC_PROXY_HOST = "192.168.48.1";
76f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final int TEST_STATIC_PROXY_PORT = 8000;
77f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_STATIC_PROXY_EXCLUSION_LIST = "";
78f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static final String TEST_PAC_PROXY_LOCATION = "http://";
79f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
80f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    /**
81f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     * Index used to assign unique SSIDs for the generation of predefined WifiConfiguration objects.
82f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     */
83f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    private static int sNetworkIndex = 0;
84f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
85f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    /**
860fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * Construct a {@link android.net.wifi.WifiConfiguration}.
870fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param networkId the configuration's networkId
880fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param uid the configuration's creator uid
890fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param ssid the configuration's ssid
900fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param shared whether the configuration is shared with other users on the device
910fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param enabled whether the configuration is enabled
920fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param fqdn the configuration's FQDN (Hotspot 2.0 only)
930fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param providerFriendlyName the configuration's provider's friendly name (Hotspot 2.0 only)
940fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @return the constructed {@link android.net.wifi.WifiConfiguration}
950fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     */
96bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski    public static WifiConfiguration generateWifiConfig(int networkId, int uid, String ssid,
97bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski            boolean shared, boolean enabled, String fqdn, String providerFriendlyName) {
98bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        final WifiConfiguration config = new WifiConfiguration();
99bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        config.SSID = ssid;
100bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        config.networkId = networkId;
101bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        config.creatorUid = uid;
102bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        config.shared = shared;
103bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        config.status = enabled ? WifiConfiguration.Status.ENABLED
104bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski                : WifiConfiguration.Status.DISABLED;
105bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        if (fqdn != null) {
106bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski            config.FQDN = fqdn;
107bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski            config.providerFriendlyName = providerFriendlyName;
108bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski            config.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.SIM);
109bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        }
110bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski        return config;
111bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski    }
112b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe
1130fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski    /**
1140fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * Construct a {@link android.net.wifi.WifiConfiguration}.
1150fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param networkId the configuration's networkId
1160fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param uid the configuration's creator uid
1170fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param ssid the configuration's ssid
1180fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param shared whether the configuration is shared with other users on the device
1190fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param enabled whether the configuration is enabled
1200fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param fqdn the configuration's FQDN (Hotspot 2.0 only)
1210fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param providerFriendlyName the configuration's provider's friendly name (Hotspot 2.0 only)
1220fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param security the configuration's security type
1230fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @return the constructed {@link android.net.wifi.WifiConfiguration}
1240fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     */
125b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    public static WifiConfiguration generateWifiConfig(int networkId, int uid, String ssid,
126b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe            boolean shared, boolean enabled, String fqdn, String providerFriendlyName,
127b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe            int security) {
128b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe        WifiConfiguration config = generateWifiConfig(networkId, uid, ssid, shared, enabled, fqdn,
129b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe                providerFriendlyName);
130b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe
131b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe        if (security == SECURITY_NONE) {
132b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
133b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe        } else {
134b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe            if (((security & SECURITY_WEP) != 0) || ((security & SECURITY_PSK) != 0)) {
135b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe                config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
136b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe            }
137b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe
138b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe            if ((security & SECURITY_EAP) != 0) {
139b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe                config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP);
140b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe                config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X);
141b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe            }
142b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe        }
143b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe        return config;
144b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe    }
145e33a4bb414892435c016486585c26022cafdab68Roshan Pius
146e33a4bb414892435c016486585c26022cafdab68Roshan Pius    /**
147f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * Construct a {@link android.net.IpConfiguration }.
148f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param ipAssignmentType One of {@link #STATIC_IP_ASSIGNMENT} or {@link #DHCP_IP_ASSIGNMENT}.
149f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param proxySettingType One of {@link #STATIC_PROXY_SETTING} or {@link #PAC_PROXY_SETTING} or
150f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     *                        {@link #NONE_PROXY_SETTING}.
151f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param linkAddress static ip address string.
152f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param linkPrefixLength static ip address prefix length.
153f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param gatewayAddress static gateway address.
154f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param dnsServerAddresses list of dns servers for static ip configuration.
155f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param proxyHost Static proxy server address.
156f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param proxyPort Static proxy server port.
157f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param proxyExclusionList Static proxy exclusion list.
158f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @param pacProxyPath Pac proxy server path.
159f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * @return the constructed {@link android.net.IpConfiguration}
160f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     */
161f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static IpConfiguration generateIpConfig(
162f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            int ipAssignmentType, int proxySettingType, String linkAddress, int linkPrefixLength,
163f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            String gatewayAddress, String[] dnsServerAddresses, String proxyHost,
164f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            int proxyPort, String proxyExclusionList, String pacProxyPath) {
165f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        StaticIpConfiguration staticIpConfiguration = null;
166f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        ProxyInfo proxyInfo = null;
167f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        IpConfiguration.IpAssignment ipAssignment = IpConfiguration.IpAssignment.UNASSIGNED;
168f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        IpConfiguration.ProxySettings proxySettings = IpConfiguration.ProxySettings.UNASSIGNED;
169f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
170f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        if (ipAssignmentType == STATIC_IP_ASSIGNMENT) {
171f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            staticIpConfiguration = new StaticIpConfiguration();
172f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            if (!TextUtils.isEmpty(linkAddress)) {
173f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                LinkAddress linkAddr =
174f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                        new LinkAddress(
175f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                                NetworkUtils.numericToInetAddress(linkAddress), linkPrefixLength);
176f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                staticIpConfiguration.ipAddress = linkAddr;
177f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            }
178f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
179f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            if (!TextUtils.isEmpty(gatewayAddress)) {
180f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                InetAddress gatewayAddr =
181f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                        NetworkUtils.numericToInetAddress(gatewayAddress);
182f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                staticIpConfiguration.gateway = gatewayAddr;
183f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            }
184f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            if (dnsServerAddresses != null) {
185f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                for (String dnsServerAddress : dnsServerAddresses) {
186f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                    if (!TextUtils.isEmpty(dnsServerAddress)) {
187f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                        staticIpConfiguration.dnsServers.add(
188f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                                NetworkUtils.numericToInetAddress(dnsServerAddress));
189f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                    }
190f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
191f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                }
192f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            }
193f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            ipAssignment = IpConfiguration.IpAssignment.STATIC;
194f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        } else if (ipAssignmentType == DHCP_IP_ASSIGNMENT) {
195f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            ipAssignment = IpConfiguration.IpAssignment.DHCP;
196f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        }
197f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
198f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        if (proxySettingType == STATIC_PROXY_SETTING) {
199f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            proxyInfo = new ProxyInfo(proxyHost, proxyPort, proxyExclusionList);
200f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            proxySettings = IpConfiguration.ProxySettings.STATIC;
201f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        } else if (proxySettingType == PAC_PROXY_SETTING) {
202f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            proxyInfo = new ProxyInfo(pacProxyPath);
203f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            proxySettings = IpConfiguration.ProxySettings.PAC;
204f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        } else if (proxySettingType == NONE_PROXY_SETTING) {
205f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            proxySettings = IpConfiguration.ProxySettings.NONE;
206f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        }
207f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        return new IpConfiguration(ipAssignment, proxySettings, staticIpConfiguration, proxyInfo);
208f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    }
209f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
210f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    /**
211f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     * Create a new SSID for the the network being created.
212f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     */
213f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    private static String createNewSSID() {
214f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return "\"" + TEST_SSID + sNetworkIndex++ + "\"";
215f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
216f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
217f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    /**
218f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     * Helper methods to generate predefined WifiConfiguration objects of the required type. These
219f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     * use a static index to avoid duplicate configurations.
220f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius     */
221f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createOpenNetwork() {
222f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateWifiConfig(TEST_NETWORK_ID, TEST_UID, createNewSSID(), true, true, null,
223f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                null, SECURITY_NONE);
224f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
225f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
226f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createOpenHiddenNetwork() {
227f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration = createOpenNetwork();
228f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.hiddenSSID = true;
229f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
230f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
231f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
232f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createPskNetwork() {
233f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration =
234f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                generateWifiConfig(TEST_NETWORK_ID, TEST_UID, createNewSSID(), true, true, null,
235f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                        null, SECURITY_PSK);
236f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.preSharedKey = TEST_PSK;
237f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
238f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
239f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
240f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createPskHiddenNetwork() {
241f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration = createPskNetwork();
242f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.hiddenSSID = true;
243f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
244f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
245f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
246f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createWepNetwork() {
247f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration =
248f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                generateWifiConfig(TEST_NETWORK_ID, TEST_UID, createNewSSID(), true, true, null,
249f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                        null, SECURITY_WEP);
250f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.wepKeys = TEST_WEP_KEYS;
251f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.wepTxKeyIndex = TEST_WEP_TX_KEY_INDEX;
252f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
253f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
254f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
255f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createWepHiddenNetwork() {
256f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration = createWepNetwork();
257f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.hiddenSSID = true;
258f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
259f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
260f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
261f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
262f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createWepNetworkWithSingleKey() {
263f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration =
264f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                generateWifiConfig(TEST_NETWORK_ID, TEST_UID, createNewSSID(), true, true, null,
265f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                        null, SECURITY_WEP);
266f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.wepKeys[0] = TEST_WEP_KEYS[0];
267f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        configuration.wepTxKeyIndex = 0;
268f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
269f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
270f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
271f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
272f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static WifiConfiguration createEapNetwork() {
273f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        WifiConfiguration configuration =
274f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                generateWifiConfig(TEST_NETWORK_ID, TEST_UID, createNewSSID(), true, true,
275f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                        TEST_FQDN, TEST_PROVIDER_FRIENDLY_NAME, SECURITY_EAP);
276f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return configuration;
277f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
278f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
279f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static IpConfiguration createStaticIpConfigurationWithPacProxy() {
280f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateIpConfig(
281f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                STATIC_IP_ASSIGNMENT, PAC_PROXY_SETTING,
282f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_LINK_ADDRESS, TEST_STATIC_IP_LINK_PREFIX_LENGTH,
283f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_GATEWAY_ADDRESS, TEST_STATIC_IP_DNS_SERVER_ADDRESSES,
284f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_PROXY_HOST, TEST_STATIC_PROXY_PORT, TEST_STATIC_PROXY_EXCLUSION_LIST,
285f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_PAC_PROXY_LOCATION);
286f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
287f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
288f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static IpConfiguration createStaticIpConfigurationWithStaticProxy() {
289f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateIpConfig(
290f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                STATIC_IP_ASSIGNMENT, STATIC_PROXY_SETTING,
291f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_LINK_ADDRESS, TEST_STATIC_IP_LINK_PREFIX_LENGTH,
292f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_GATEWAY_ADDRESS, TEST_STATIC_IP_DNS_SERVER_ADDRESSES,
293f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_PROXY_HOST, TEST_STATIC_PROXY_PORT, TEST_STATIC_PROXY_EXCLUSION_LIST,
294f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_PAC_PROXY_LOCATION);
295f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
296f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
297f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static IpConfiguration createPartialStaticIpConfigurationWithPacProxy() {
298f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateIpConfig(
299f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                STATIC_IP_ASSIGNMENT, PAC_PROXY_SETTING,
300f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_LINK_ADDRESS, TEST_STATIC_IP_LINK_PREFIX_LENGTH,
301f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                null, null,
302f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_PROXY_HOST, TEST_STATIC_PROXY_PORT, TEST_STATIC_PROXY_EXCLUSION_LIST,
303f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_PAC_PROXY_LOCATION);
304f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
305f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
306f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static IpConfiguration createDHCPIpConfigurationWithPacProxy() {
307f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateIpConfig(
308f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                DHCP_IP_ASSIGNMENT, PAC_PROXY_SETTING,
309f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_LINK_ADDRESS, TEST_STATIC_IP_LINK_PREFIX_LENGTH,
310f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_GATEWAY_ADDRESS, TEST_STATIC_IP_DNS_SERVER_ADDRESSES,
311f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_PROXY_HOST, TEST_STATIC_PROXY_PORT, TEST_STATIC_PROXY_EXCLUSION_LIST,
312f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_PAC_PROXY_LOCATION);
313f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
314f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
315f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static IpConfiguration createDHCPIpConfigurationWithStaticProxy() {
316f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateIpConfig(
317f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                DHCP_IP_ASSIGNMENT, STATIC_PROXY_SETTING,
318f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_LINK_ADDRESS, TEST_STATIC_IP_LINK_PREFIX_LENGTH,
319f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_GATEWAY_ADDRESS, TEST_STATIC_IP_DNS_SERVER_ADDRESSES,
320f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_PROXY_HOST, TEST_STATIC_PROXY_PORT, TEST_STATIC_PROXY_EXCLUSION_LIST,
321f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_PAC_PROXY_LOCATION);
322f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
323f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
324f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    public static IpConfiguration createDHCPIpConfigurationWithNoProxy() {
325f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        return generateIpConfig(
326f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                DHCP_IP_ASSIGNMENT, NONE_PROXY_SETTING,
327f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_LINK_ADDRESS, TEST_STATIC_IP_LINK_PREFIX_LENGTH,
328f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_IP_GATEWAY_ADDRESS, TEST_STATIC_IP_DNS_SERVER_ADDRESSES,
329f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_STATIC_PROXY_HOST, TEST_STATIC_PROXY_PORT, TEST_STATIC_PROXY_EXCLUSION_LIST,
330f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius                TEST_PAC_PROXY_LOCATION);
331f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    }
332f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius
333f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius    /**
3342fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     * Asserts that the 2 WifiConfigurations are equal in the elements saved for both backup/restore
3352fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     * and config store.
336e33a4bb414892435c016486585c26022cafdab68Roshan Pius     */
3372fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    private static void assertCommonConfigurationElementsEqual(
338e33a4bb414892435c016486585c26022cafdab68Roshan Pius            WifiConfiguration expected, WifiConfiguration actual) {
339e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.SSID, actual.SSID);
340e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.BSSID, actual.BSSID);
341e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.preSharedKey, actual.preSharedKey);
342e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.wepKeys, actual.wepKeys);
343e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.wepTxKeyIndex, actual.wepTxKeyIndex);
344e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.hiddenSSID, actual.hiddenSSID);
345e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.allowedKeyManagement, actual.allowedKeyManagement);
346e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.allowedProtocols, actual.allowedProtocols);
347e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.allowedAuthAlgorithms, actual.allowedAuthAlgorithms);
348e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.shared, actual.shared);
349e33a4bb414892435c016486585c26022cafdab68Roshan Pius        assertEquals(expected.getIpConfiguration(), actual.getIpConfiguration());
350e33a4bb414892435c016486585c26022cafdab68Roshan Pius    }
3512fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius
3522fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    /**
3532fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     * Asserts that the 2 WifiConfigurations are equal. This only compares the elements saved
3542fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     * fpr backup/restore.
3552fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     */
3562fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    public static void assertConfigurationEqualForBackup(
3572fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius            WifiConfiguration expected, WifiConfiguration actual) {
3582fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius        assertCommonConfigurationElementsEqual(expected, actual);
3592fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    }
3602fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius
3612fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    /**
3622fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     * Asserts that the 2 WifiConfigurations are equal. This compares all the elements saved for
3632fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     * config store.
3642fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius     */
3652fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    public static void assertConfigurationEqualForConfigStore(
3662fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius            WifiConfiguration expected, WifiConfiguration actual) {
3672fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius        assertCommonConfigurationElementsEqual(expected, actual);
368030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.FQDN, actual.FQDN);
369030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.providerFriendlyName, actual.providerFriendlyName);
370030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.linkedConfigurations, actual.linkedConfigurations);
371030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.defaultGwMacAddress, actual.defaultGwMacAddress);
372030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.validatedInternetAccess, actual.validatedInternetAccess);
373030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.noInternetAccessExpected, actual.noInternetAccessExpected);
374030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.userApproved, actual.userApproved);
375030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.meteredHint, actual.meteredHint);
376030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.useExternalScores, actual.useExternalScores);
377030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.numAssociation, actual.numAssociation);
3782fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius        assertEquals(expected.creatorUid, actual.creatorUid);
3792fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius        assertEquals(expected.creatorName, actual.creatorName);
380030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.creationTime, actual.creationTime);
381030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.lastUpdateUid, actual.lastUpdateUid);
382030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.lastUpdateName, actual.lastUpdateName);
383030c5debfefddf0512cd53fec48b269c08d9972eRoshan Pius        assertEquals(expected.lastConnectUid, actual.lastConnectUid);
384f03d366f869da748d97706dbcfbd30b989186f4eRoshan Pius        assertEquals(expected.updateTime, actual.updateTime);
3855d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        assertNetworkSelectionStatusEqualForConfigStore(
3865d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius                expected.getNetworkSelectionStatus(), actual.getNetworkSelectionStatus());
387642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertWifiEnterpriseConfigEqualForConfigStore(
388642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                expected.enterpriseConfig, actual.enterpriseConfig);
3895d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius    }
3905d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius
3915d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius    /**
3925d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius     * Assert that the 2 NetworkSelectionStatus's are equal. This compares all the elements saved
3935d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius     * for config store.
3945d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius     */
3955d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius    public static void assertNetworkSelectionStatusEqualForConfigStore(
3965d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius            NetworkSelectionStatus expected, NetworkSelectionStatus actual) {
3975d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        if (expected.isNetworkTemporaryDisabled()) {
3985d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius            // Temporarily disabled networks are enabled when persisted.
3995d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius            assertEquals(
4005d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius                    NetworkSelectionStatus.NETWORK_SELECTION_ENABLED,
4015d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius                    actual.getNetworkSelectionStatus());
4025d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        } else {
4035d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius            assertEquals(expected.getNetworkSelectionStatus(), actual.getNetworkSelectionStatus());
4045d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        }
4055d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        assertEquals(
4065d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius                expected.getNetworkSelectionDisableReason(),
4075d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius                actual.getNetworkSelectionDisableReason());
4085d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        assertEquals(expected.getConnectChoice(), actual.getConnectChoice());
4095d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        assertEquals(expected.getConnectChoiceTimestamp(), actual.getConnectChoiceTimestamp());
4105d3609b1931180c37d7292619146ad7d33df9a21Roshan Pius        assertEquals(expected.getHasEverConnected(), actual.getHasEverConnected());
4112fafcc56fda54b1adf8b6743beaac59dbb84dfecRoshan Pius    }
412642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius
413642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius    /**
414642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius     * Assert that the 2 WifiEnterpriseConfig's are equal. This compares all the elements saved
415642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius     * for config store.
416642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius     */
417642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius    public static void assertWifiEnterpriseConfigEqualForConfigStore(
418642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius            WifiEnterpriseConfig expected, WifiEnterpriseConfig actual) {
419642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.IDENTITY_KEY, ""),
420642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                actual.getFieldValue(WifiEnterpriseConfig.IDENTITY_KEY, ""));
421642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.ANON_IDENTITY_KEY, ""),
422642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                actual.getFieldValue(WifiEnterpriseConfig.ANON_IDENTITY_KEY, ""));
423642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.PASSWORD_KEY, ""),
424642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                actual.getFieldValue(WifiEnterpriseConfig.PASSWORD_KEY, ""));
425642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.CLIENT_CERT_KEY, ""),
426642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                actual.getFieldValue(WifiEnterpriseConfig.CLIENT_CERT_KEY, ""));
427642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.CA_CERT_KEY, ""),
428642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                actual.getFieldValue(WifiEnterpriseConfig.CA_CERT_KEY, ""));
429642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.SUBJECT_MATCH_KEY, ""),
430642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                actual.getFieldValue(WifiEnterpriseConfig.SUBJECT_MATCH_KEY, ""));
431642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.ENGINE_KEY, ""),
432642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                actual.getFieldValue(WifiEnterpriseConfig.ENGINE_KEY, ""));
433642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.ENGINE_ID_KEY, ""),
434642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                actual.getFieldValue(WifiEnterpriseConfig.ENGINE_ID_KEY, ""));
435642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.PRIVATE_KEY_ID_KEY, ""),
436642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                actual.getFieldValue(WifiEnterpriseConfig.PRIVATE_KEY_ID_KEY, ""));
437642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.ALTSUBJECT_MATCH_KEY, ""),
438642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                actual.getFieldValue(WifiEnterpriseConfig.ALTSUBJECT_MATCH_KEY, ""));
439642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.DOM_SUFFIX_MATCH_KEY, ""),
440642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                actual.getFieldValue(WifiEnterpriseConfig.DOM_SUFFIX_MATCH_KEY, ""));
441642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getFieldValue(WifiEnterpriseConfig.CA_PATH_KEY, ""),
442642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius                actual.getFieldValue(WifiEnterpriseConfig.CA_PATH_KEY, ""));
443642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getEapMethod(), actual.getEapMethod());
444642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius        assertEquals(expected.getPhase2Method(), actual.getPhase2Method());
445642b0bb43ed856bac0503d3169d67026de2c1b02Roshan Pius    }
446f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
447f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    /**
448f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * Asserts that the 2 lists of WifiConfigurations are equal. This compares all the elements
449f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * saved for backup/restore.
450f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     */
451f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static void assertConfigurationsEqualForBackup(
452f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            List<WifiConfiguration> expected, List<WifiConfiguration> actual) {
453f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        assertEquals(expected.size(), actual.size());
454f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        for (WifiConfiguration expectedConfiguration : expected) {
455f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            String expectedConfigKey = expectedConfiguration.configKey();
456f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            boolean didCompare = false;
457f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            for (WifiConfiguration actualConfiguration : actual) {
458f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                String actualConfigKey = actualConfiguration.configKey();
459f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                if (actualConfigKey.equals(expectedConfigKey)) {
460f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                    assertConfigurationEqualForBackup(
461f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                            expectedConfiguration, actualConfiguration);
462f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                    didCompare = true;
463f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                }
464f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            }
465f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            assertTrue(didCompare);
466f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        }
467f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    }
468f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius
469f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    /**
470f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * Asserts that the 2 lists of WifiConfigurations are equal. This compares all the elements
471f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     * saved for config store.
472f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius     */
473f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    public static void assertConfigurationsEqualForConfigStore(
474f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            List<WifiConfiguration> expected, List<WifiConfiguration> actual) {
475f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        assertEquals(expected.size(), actual.size());
476f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        for (WifiConfiguration expectedConfiguration : expected) {
477f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            String expectedConfigKey = expectedConfiguration.configKey();
478f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            boolean didCompare = false;
479f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            for (WifiConfiguration actualConfiguration : actual) {
480f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                String actualConfigKey = actualConfiguration.configKey();
481f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                if (actualConfigKey.equals(expectedConfigKey)) {
482f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                    assertConfigurationEqualForConfigStore(
483f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                            expectedConfiguration, actualConfiguration);
484f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                    didCompare = true;
485f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius                }
486f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            }
487f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius            assertTrue(didCompare);
488f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius        }
489f918b154ddceb58c3d214d75ad02180d1907429aRoshan Pius    }
490bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski}
491