diff options
author | Peter Qiu <zqiu@google.com> | 2017-02-16 14:07:37 -0800 |
---|---|---|
committer | Peter Qiu <zqiu@google.com> | 2017-02-24 09:25:06 -0800 |
commit | 9432358b816df5530aed86d4107756854e5ac4f0 (patch) | |
tree | 0945f4a29730c4b1dd7b5342de06b67b599866dd /tests | |
parent | 15eeedd83c258ae7eec5065880b0887545124456 (diff) |
WifiConfigStoreLegacy: read legacy Passpoint configuration file
Read and load Passpoint configuration from the legacy Passpoint
configuration file (PerProviderSubscription.conf). Copy the missing
configuration fields to WifiConfiguration, so that a WifiConfiguration
will contained all configuration data for Hotspot 2.0 Release 1
configuration.
The WifiConfiguration for Passpoint configuration will be stored
temporarily in the share store until its owner logs in. When the
configuration owner logs in, the configuration will be converted
to PasspointConfiguration and added to PasspointManager. Then the
shared WifiConfiguration will be removed to complete the migration.
This will be done in the follow-on CLs.
Bug: 34206769
Test: frameworks/opt/net/tests/wifitests/runtests.sh
Change-Id: I946984822599b46e7e79babdf84272290ecf2431
Diffstat (limited to 'tests')
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiConfigStoreLegacyTest.java | 54 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java | 6 |
2 files changed, 56 insertions, 4 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigStoreLegacyTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigStoreLegacyTest.java index 5772430b4..906c895ef 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiConfigStoreLegacyTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigStoreLegacyTest.java @@ -28,6 +28,8 @@ import android.text.TextUtils; import android.util.SparseArray; import com.android.server.net.IpConfigStore; +import com.android.server.wifi.hotspot2.LegacyPasspointConfig; +import com.android.server.wifi.hotspot2.LegacyPasspointConfigParser; import org.junit.After; import org.junit.Before; @@ -51,6 +53,7 @@ public class WifiConfigStoreLegacyTest { @Mock private WifiNative mWifiNative; @Mock private WifiNetworkHistory mWifiNetworkHistory; @Mock private IpConfigStore mIpconfigStore; + @Mock private LegacyPasspointConfigParser mPasspointConfigParser; /** * Test instance of WifiConfigStore. @@ -65,9 +68,8 @@ public class WifiConfigStoreLegacyTest { public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - mWifiConfigStore = - new WifiConfigStoreLegacy( - mWifiNetworkHistory, mWifiNative, mIpconfigStore); + mWifiConfigStore = new WifiConfigStoreLegacy(mWifiNetworkHistory, mWifiNative, + mIpconfigStore, mPasspointConfigParser); } /** @@ -83,16 +85,45 @@ public class WifiConfigStoreLegacyTest { * of the masked wpa_supplicant fields using wpa_supplicant.conf file. */ @Test - public void testLoadFromStores() { + public void testLoadFromStores() throws Exception { WifiConfiguration pskNetwork = WifiConfigurationTestUtil.createPskNetwork(); WifiConfiguration wepNetwork = WifiConfigurationTestUtil.createWepNetwork(); WifiConfiguration eapNetwork = WifiConfigurationTestUtil.createEapNetwork(); + WifiConfiguration passpointNetwork = WifiConfigurationTestUtil.createPasspointNetwork(); eapNetwork.enterpriseConfig.setPassword("EapPassword"); + // Initialize Passpoint configuration data. + int passpointNetworkId = 1234; + String fqdn = passpointNetwork.FQDN; + String providerFriendlyName = passpointNetwork.providerFriendlyName; + long[] roamingConsortiumIds = new long[] {0x1234, 0x5678}; + String realm = "test.com"; + String imsi = "214321"; + + // Update Passpoint network. + // Network ID is used for lookup network extras, so use an unique ID for passpoint network. + passpointNetwork.networkId = passpointNetworkId; + passpointNetwork.enterpriseConfig.setPassword("PaspointPassword"); + // Reset FQDN and provider friendly name so that the derived network from #read will + // obtained these information from networkExtras and {@link LegacyPasspointConfigParser}. + passpointNetwork.FQDN = null; + passpointNetwork.providerFriendlyName = null; + final List<WifiConfiguration> networks = new ArrayList<>(); networks.add(pskNetwork); networks.add(wepNetwork); networks.add(eapNetwork); + networks.add(passpointNetwork); + + // Setup legacy Passpoint configuration data. + Map<String, LegacyPasspointConfig> passpointConfigs = new HashMap<>(); + LegacyPasspointConfig passpointConfig = new LegacyPasspointConfig(); + passpointConfig.mFqdn = fqdn; + passpointConfig.mFriendlyName = providerFriendlyName; + passpointConfig.mRoamingConsortiumOis = roamingConsortiumIds; + passpointConfig.mRealm = realm; + passpointConfig.mImsi = imsi; + passpointConfigs.put(fqdn, passpointConfig); // Return the config data with passwords masked from wpa_supplicant control interface. doAnswer(new AnswerWithArguments() { @@ -102,6 +133,8 @@ public class WifiConfigStoreLegacyTest { createWpaSupplicantLoadData(networks).entrySet()) { configs.put(entry.getKey(), entry.getValue()); } + // Setup networkExtras for Passpoint configuration. + networkExtras.put(passpointNetworkId, createNetworkExtrasForPasspointConfig(fqdn)); return true; } }).when(mWifiNative).migrateNetworksFromSupplicant(any(Map.class), any(SparseArray.class)); @@ -126,8 +159,16 @@ public class WifiConfigStoreLegacyTest { } }).when(mWifiNative).readNetworkVariablesFromSupplicantFile(anyString()); + when(mPasspointConfigParser.parseConfig(anyString())).thenReturn(passpointConfigs); WifiConfigStoreLegacy.WifiConfigStoreDataLegacy storeData = mWifiConfigStore.read(); + // Update the expected configuration for Passpoint network. + passpointNetwork.FQDN = fqdn; + passpointNetwork.providerFriendlyName = providerFriendlyName; + passpointNetwork.roamingConsortiumIds = roamingConsortiumIds; + passpointNetwork.enterpriseConfig.setRealm(realm); + passpointNetwork.enterpriseConfig.setPlmn(imsi); + WifiConfigurationTestUtil.assertConfigurationsEqualForConfigStore( networks, storeData.getConfigurations()); } @@ -252,4 +293,9 @@ public class WifiConfigStoreLegacyTest { return newConfig; } + private Map<String, String> createNetworkExtrasForPasspointConfig(String fqdn) { + Map<String, String> extras = new HashMap<>(); + extras.put(WifiSupplicantControl.ID_STRING_KEY_FQDN, fqdn); + return extras; + } } diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java index 28587d129..7e60d9c8b 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigurationTestUtil.java @@ -30,6 +30,7 @@ import android.text.TextUtils; import java.net.InetAddress; import java.security.cert.X509Certificate; +import java.util.Arrays; import java.util.List; /** @@ -429,6 +430,7 @@ public class WifiConfigurationTestUtil { assertEquals(expected.status, actual.status); assertEquals(expected.FQDN, actual.FQDN); assertEquals(expected.providerFriendlyName, actual.providerFriendlyName); + assertTrue(Arrays.equals(expected.roamingConsortiumIds, actual.roamingConsortiumIds)); assertEquals(expected.linkedConfigurations, actual.linkedConfigurations); assertEquals(expected.defaultGwMacAddress, actual.defaultGwMacAddress); assertEquals(expected.validatedInternetAccess, actual.validatedInternetAccess); @@ -566,6 +568,10 @@ public class WifiConfigurationTestUtil { actual.getFieldValue(WifiEnterpriseConfig.DOM_SUFFIX_MATCH_KEY)); assertEquals(expected.getFieldValue(WifiEnterpriseConfig.CA_PATH_KEY), actual.getFieldValue(WifiEnterpriseConfig.CA_PATH_KEY)); + assertEquals(expected.getFieldValue(WifiEnterpriseConfig.REALM_KEY), + actual.getFieldValue(WifiEnterpriseConfig.REALM_KEY)); + assertEquals(expected.getFieldValue(WifiEnterpriseConfig.PLMN_KEY), + actual.getFieldValue(WifiEnterpriseConfig.PLMN_KEY)); assertEquals(expected.getEapMethod(), actual.getEapMethod()); assertEquals(expected.getPhase2Method(), actual.getPhase2Method()); } |