178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu/* 278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * Copyright (C) 2016 The Android Open Source Project 378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * 478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * Licensed under the Apache License, Version 2.0 (the "License"); 578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * you may not use this file except in compliance with the License. 678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * You may obtain a copy of the License at 778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * 878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * http://www.apache.org/licenses/LICENSE-2.0 978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * 1078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * Unless required by applicable law or agreed to in writing, software 1178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * distributed under the License is distributed on an "AS IS" BASIS, 1278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * See the License for the specific language governing permissions and 1478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * limitations under the License 1578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu */ 1678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 1778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xupackage android.net.wifi; 1878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 1978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xuimport static org.junit.Assert.assertEquals; 208f86598c612698b39cad15b4a0f03619d05fd7d6Paul Stewartimport static org.junit.Assert.assertFalse; 2178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xuimport static org.junit.Assert.assertTrue; 2278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 230fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewartimport android.net.wifi.WifiEnterpriseConfig.Eap; 240fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewartimport android.net.wifi.WifiEnterpriseConfig.Phase2; 250fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewartimport android.os.Parcel; 2678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xuimport android.security.Credentials; 2778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xuimport android.test.suitebuilder.annotation.SmallTest; 2878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 2978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xuimport org.junit.Before; 3078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xuimport org.junit.Test; 3178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 3278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xuimport java.security.cert.X509Certificate; 3378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 3478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 3578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu/** 3678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * Unit tests for {@link android.net.wifi.WifiEnterpriseConfig}. 3778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu */ 3878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu@SmallTest 3978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xupublic class WifiEnterpriseConfigTest { 4078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu // Maintain a ground truth of the keystore uri prefix which is expected by wpa_supplicant. 4178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu public static final String KEYSTORE_URI = "keystore://"; 4278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu public static final String CA_CERT_PREFIX = KEYSTORE_URI + Credentials.CA_CERTIFICATE; 4378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu public static final String KEYSTORES_URI = "keystores://"; 4478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 4578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu private WifiEnterpriseConfig mEnterpriseConfig; 4678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 4778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu @Before 4878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu public void setUp() throws Exception { 4978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu mEnterpriseConfig = new WifiEnterpriseConfig(); 5078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu } 5178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 5278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu @Test 5378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu public void testSetGetSingleCaCertificate() { 5478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu X509Certificate cert0 = FakeKeys.CA_CERT0; 5578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu mEnterpriseConfig.setCaCertificate(cert0); 5678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu assertEquals(mEnterpriseConfig.getCaCertificate(), cert0); 5778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu } 5878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 5978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu @Test 6078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu public void testSetGetMultipleCaCertificates() { 6178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu X509Certificate cert0 = FakeKeys.CA_CERT0; 6278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu X509Certificate cert1 = FakeKeys.CA_CERT1; 6378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu mEnterpriseConfig.setCaCertificates(new X509Certificate[] {cert0, cert1}); 6478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu X509Certificate[] result = mEnterpriseConfig.getCaCertificates(); 6578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu assertEquals(result.length, 2); 6678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu assertTrue(result[0] == cert0 && result[1] == cert1); 6778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu } 6878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 6978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu @Test 7078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu public void testSaveSingleCaCertificateAlias() { 7178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu final String alias = "single_alias 0"; 7278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu mEnterpriseConfig.setCaCertificateAliases(new String[] {alias}); 7378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu assertEquals(getCaCertField(), CA_CERT_PREFIX + alias); 7478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu } 7578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 7678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu @Test 7778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu public void testLoadSingleCaCertificateAlias() { 7878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu final String alias = "single_alias 1"; 7978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu setCaCertField(CA_CERT_PREFIX + alias); 8078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu String[] aliases = mEnterpriseConfig.getCaCertificateAliases(); 8178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu assertEquals(aliases.length, 1); 8278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu assertEquals(aliases[0], alias); 8378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu } 8478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 8578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu @Test 8678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu public void testSaveMultipleCaCertificates() { 8778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu final String alias0 = "single_alias 0"; 8878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu final String alias1 = "single_alias 1"; 8978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu mEnterpriseConfig.setCaCertificateAliases(new String[] {alias0, alias1}); 9078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu assertEquals(getCaCertField(), String.format("%s%s %s", 9178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu KEYSTORES_URI, 9278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu WifiEnterpriseConfig.encodeCaCertificateAlias(Credentials.CA_CERTIFICATE + alias0), 9378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu WifiEnterpriseConfig.encodeCaCertificateAlias(Credentials.CA_CERTIFICATE + alias1))); 9478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu } 9578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 9678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu @Test 9778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu public void testLoadMultipleCaCertificates() { 9878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu final String alias0 = "single_alias 0"; 9978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu final String alias1 = "single_alias 1"; 10078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu setCaCertField(String.format("%s%s %s", 10178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu KEYSTORES_URI, 10278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu WifiEnterpriseConfig.encodeCaCertificateAlias(Credentials.CA_CERTIFICATE + alias0), 10378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu WifiEnterpriseConfig.encodeCaCertificateAlias(Credentials.CA_CERTIFICATE + alias1))); 10478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu String[] aliases = mEnterpriseConfig.getCaCertificateAliases(); 10578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu assertEquals(aliases.length, 2); 10678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu assertEquals(aliases[0], alias0); 10778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu assertEquals(aliases[1], alias1); 10878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu } 10978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 11078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu private String getCaCertField() { 11178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu return mEnterpriseConfig.getFieldValue(WifiEnterpriseConfig.CA_CERT_KEY, ""); 11278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu } 11378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 11478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu private void setCaCertField(String value) { 11578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu mEnterpriseConfig.setFieldValue(WifiEnterpriseConfig.CA_CERT_KEY, value); 11678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu } 1170fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 1180fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart // Retrieves the value for a specific key supplied to wpa_supplicant. 1190fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart private class SupplicantConfigExtractor implements WifiEnterpriseConfig.SupplicantSaver { 1200fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart private String mValue = null; 1210fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart private String mKey; 1220fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 1230fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart SupplicantConfigExtractor(String key) { 1240fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mKey = key; 1250fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 1260fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 1270fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart @Override 1280fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart public boolean saveValue(String key, String value) { 129dad21481f7856586e17c01b391a0329a11eab722Paul Stewart if (key.equals(mKey)) { 1300fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mValue = value; 1310fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 1320fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart return true; 1330fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 1340fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 1350fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart public String getValue() { 1360fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart return mValue; 1370fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 1380fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 1390fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 1400fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart private String getSupplicantEapMethod() { 1410fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart SupplicantConfigExtractor entryExtractor = new SupplicantConfigExtractor( 1420fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart WifiEnterpriseConfig.EAP_KEY); 1430fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.saveToSupplicant(entryExtractor); 1440fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart return entryExtractor.getValue(); 1450fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 1460fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 1470fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart private String getSupplicantPhase2Method() { 1480fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart SupplicantConfigExtractor entryExtractor = new SupplicantConfigExtractor( 1490fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart WifiEnterpriseConfig.PHASE2_KEY); 1500fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.saveToSupplicant(entryExtractor); 1510fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart return entryExtractor.getValue(); 1520fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 1530fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 1540fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart /** Verifies the default value for EAP outer and inner methods */ 1550fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart @Test 1560fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart public void eapInnerDefault() { 1570fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals(null, getSupplicantEapMethod()); 1580fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals(null, getSupplicantPhase2Method()); 1590fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 1600fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 1610fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart /** Verifies that the EAP inner method is reset when we switch to TLS */ 1620fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart @Test 1630fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart public void eapPhase2MethodForTls() { 1640fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart // Initially select an EAP method that supports an phase2. 1650fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setEapMethod(Eap.PEAP); 1660fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setPhase2Method(Phase2.MSCHAPV2); 1670fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("PEAP", getSupplicantEapMethod()); 1680fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("\"auth=MSCHAPV2\"", getSupplicantPhase2Method()); 1690fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 1700fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart // Change the EAP method to another type which supports a phase2. 1710fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setEapMethod(Eap.TTLS); 1720fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("TTLS", getSupplicantEapMethod()); 1730fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("\"auth=MSCHAPV2\"", getSupplicantPhase2Method()); 1740fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 1750fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart // Change the EAP method to TLS which does not support a phase2. 1760fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setEapMethod(Eap.TLS); 1770fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals(null, getSupplicantPhase2Method()); 1780fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 1790fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 1800fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart /** Verfies that the EAP inner method is reset when we switch phase2 to NONE */ 1810fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart @Test 1820fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart public void eapPhase2None() { 1830fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart // Initially select an EAP method that supports an phase2. 1840fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setEapMethod(Eap.PEAP); 1850fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setPhase2Method(Phase2.MSCHAPV2); 1860fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("PEAP", getSupplicantEapMethod()); 1870fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("\"auth=MSCHAPV2\"", getSupplicantPhase2Method()); 1880fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 1890fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart // Change the phase2 method to NONE and ensure the value is cleared. 1900fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setPhase2Method(Phase2.NONE); 1910fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals(null, getSupplicantPhase2Method()); 1920fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 1930fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 1940fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart /** Verfies that the correct "autheap" parameter is supplied for TTLS/GTC. */ 1950fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart @Test 1960fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart public void peapGtcToTtls() { 1970fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setEapMethod(Eap.PEAP); 1980fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setPhase2Method(Phase2.GTC); 1990fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("PEAP", getSupplicantEapMethod()); 2000fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("\"auth=GTC\"", getSupplicantPhase2Method()); 2010fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 2020fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setEapMethod(Eap.TTLS); 2030fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("TTLS", getSupplicantEapMethod()); 2040fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("\"autheap=GTC\"", getSupplicantPhase2Method()); 2050fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 2060fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 2070fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart /** Verfies that the correct "auth" parameter is supplied for PEAP/GTC. */ 2080fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart @Test 2090fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart public void ttlsGtcToPeap() { 2100fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setEapMethod(Eap.TTLS); 2110fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setPhase2Method(Phase2.GTC); 2120fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("TTLS", getSupplicantEapMethod()); 2130fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("\"autheap=GTC\"", getSupplicantPhase2Method()); 2140fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 2150fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setEapMethod(Eap.PEAP); 2160fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("PEAP", getSupplicantEapMethod()); 2170fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("\"auth=GTC\"", getSupplicantPhase2Method()); 2180fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 2190fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 2200fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart /** Verfies that the copy constructor preseves the inner method information. */ 2210fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart @Test 2220fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart public void copyConstructor() { 2230fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart WifiEnterpriseConfig enterpriseConfig = new WifiEnterpriseConfig(); 2240fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart enterpriseConfig.setEapMethod(Eap.TTLS); 2250fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart enterpriseConfig.setPhase2Method(Phase2.GTC); 2260fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig = new WifiEnterpriseConfig(enterpriseConfig); 2270fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("TTLS", getSupplicantEapMethod()); 2280fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("\"autheap=GTC\"", getSupplicantPhase2Method()); 2290fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 2300fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 2310fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart /** Verfies that parceling a WifiEnterpriseConfig preseves method information. */ 2320fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart @Test 2330fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart public void parcelConstructor() { 2340fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart WifiEnterpriseConfig enterpriseConfig = new WifiEnterpriseConfig(); 2350fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart enterpriseConfig.setEapMethod(Eap.TTLS); 2360fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart enterpriseConfig.setPhase2Method(Phase2.GTC); 2370fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart Parcel parcel = Parcel.obtain(); 2380fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart enterpriseConfig.writeToParcel(parcel, 0); 2390fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart parcel.setDataPosition(0); // Allow parcel to be read from the beginning. 2400fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig = WifiEnterpriseConfig.CREATOR.createFromParcel(parcel); 2410fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("TTLS", getSupplicantEapMethod()); 2420fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("\"autheap=GTC\"", getSupplicantPhase2Method()); 2430fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 2440fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart 2450fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart /** Verifies proper operation of the getKeyId() method. */ 2460fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart @Test 2470fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart public void getKeyId() { 2480fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("NULL", mEnterpriseConfig.getKeyId(null)); 2490fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart WifiEnterpriseConfig enterpriseConfig = new WifiEnterpriseConfig(); 2500fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart enterpriseConfig.setEapMethod(Eap.TTLS); 2510fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart enterpriseConfig.setPhase2Method(Phase2.GTC); 2520fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("TTLS_GTC", mEnterpriseConfig.getKeyId(enterpriseConfig)); 2530fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setEapMethod(Eap.PEAP); 2540fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart mEnterpriseConfig.setPhase2Method(Phase2.MSCHAPV2); 2550fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart assertEquals("PEAP_MSCHAPV2", mEnterpriseConfig.getKeyId(enterpriseConfig)); 2560fa719c7706dc6e447d16543518d4ecb269b91d0Paul Stewart } 2578f86598c612698b39cad15b4a0f03619d05fd7d6Paul Stewart 2588f86598c612698b39cad15b4a0f03619d05fd7d6Paul Stewart /** Verifies that passwords are not displayed in toString. */ 2598f86598c612698b39cad15b4a0f03619d05fd7d6Paul Stewart @Test 2608f86598c612698b39cad15b4a0f03619d05fd7d6Paul Stewart public void passwordNotInToString() { 2618f86598c612698b39cad15b4a0f03619d05fd7d6Paul Stewart String password = "supersecret"; 2628f86598c612698b39cad15b4a0f03619d05fd7d6Paul Stewart mEnterpriseConfig.setPassword(password); 2638f86598c612698b39cad15b4a0f03619d05fd7d6Paul Stewart assertFalse(mEnterpriseConfig.toString().contains(password)); 2648f86598c612698b39cad15b4a0f03619d05fd7d6Paul Stewart } 26578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu} 266