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