summaryrefslogtreecommitdiffstats
path: root/tests/wifitests/src/com/android/server/wifi/hotspot2
diff options
context:
space:
mode:
Diffstat (limited to 'tests/wifitests/src/com/android/server/wifi/hotspot2')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java233
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java144
2 files changed, 370 insertions, 7 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
index 46815abf0..8def58ccf 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
@@ -39,11 +39,14 @@ import static org.mockito.MockitoAnnotations.initMocks;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.EAPConstants;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiEnterpriseConfig;
import android.net.wifi.hotspot2.PasspointConfiguration;
import android.net.wifi.hotspot2.pps.Credential;
import android.net.wifi.hotspot2.pps.HomeSp;
import android.os.UserHandle;
import android.test.suitebuilder.annotation.SmallTest;
+import android.util.Base64;
import android.util.Pair;
import com.android.server.wifi.Clock;
@@ -64,6 +67,7 @@ import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -187,7 +191,7 @@ public class PasspointManagerTest {
userCredential.setUsername("username");
userCredential.setPassword("password");
userCredential.setEapType(EAPConstants.EAP_TTLS);
- userCredential.setNonEapInnerMethod("MS-CHAP");
+ userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAP);
credential.setUserCredential(userCredential);
config.setCredential(credential);
return config;
@@ -645,4 +649,231 @@ public class PasspointManagerTest {
verify(mWifiConfigManager).saveToStore(true);
reset(mWifiConfigManager);
}
+
+ /**
+ * Verify that a PasspointProvider with expected PasspointConfiguration will be installed when
+ * adding a legacy Passpoint configuration containing a valid user credential.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void addLegacyPasspointConfigWithUserCredential() throws Exception {
+ // Test data.
+ String fqdn = "test.com";
+ String friendlyName = "Friendly Name";
+ long[] rcOIs = new long[] {0x1234L, 0x2345L};
+ String realm = "realm.com";
+ String username = "username";
+ String password = "password";
+ byte[] base64EncodedPw =
+ Base64.encode(password.getBytes(StandardCharsets.UTF_8), Base64.DEFAULT);
+ String encodedPasswordStr = new String(base64EncodedPw, StandardCharsets.UTF_8);
+ String caCertificateAlias = "CaCert";
+
+ // Setup WifiConfiguration for legacy Passpoint configuraiton.
+ WifiConfiguration wifiConfig = new WifiConfiguration();
+ wifiConfig.FQDN = fqdn;
+ wifiConfig.providerFriendlyName = friendlyName;
+ wifiConfig.roamingConsortiumIds = rcOIs;
+ wifiConfig.enterpriseConfig.setIdentity(username);
+ wifiConfig.enterpriseConfig.setPassword(password);
+ wifiConfig.enterpriseConfig.setRealm(realm);
+ wifiConfig.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.TTLS);
+ wifiConfig.enterpriseConfig.setPhase2Method(WifiEnterpriseConfig.Phase2.PAP);
+ wifiConfig.enterpriseConfig.setCaCertificateAlias(caCertificateAlias);
+
+ // Setup expected {@link PasspointConfiguration}
+ PasspointConfiguration passpointConfig = new PasspointConfiguration();
+ HomeSp homeSp = new HomeSp();
+ homeSp.setFqdn(fqdn);
+ homeSp.setFriendlyName(friendlyName);
+ homeSp.setRoamingConsortiumOis(rcOIs);
+ passpointConfig.setHomeSp(homeSp);
+ Credential credential = new Credential();
+ Credential.UserCredential userCredential = new Credential.UserCredential();
+ userCredential.setUsername(username);
+ userCredential.setPassword(encodedPasswordStr);
+ userCredential.setEapType(EAPConstants.EAP_TTLS);
+ userCredential.setNonEapInnerMethod("PAP");
+ credential.setUserCredential(userCredential);
+ credential.setRealm(realm);
+ passpointConfig.setCredential(credential);
+
+ assertTrue(PasspointManager.addLegacyPasspointConfig(wifiConfig));
+ verifyInstalledConfig(passpointConfig);
+ }
+
+ /**
+ * Verify that adding a legacy Passpoint configuration containing user credential will
+ * fail when client certificate is not provided.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void addLegacyPasspointConfigWithUserCredentialWithoutCaCert() throws Exception {
+ // Test data.
+ String fqdn = "test.com";
+ String friendlyName = "Friendly Name";
+ long[] rcOIs = new long[] {0x1234L, 0x2345L};
+ String realm = "realm.com";
+ String username = "username";
+ String password = "password";
+ byte[] base64EncodedPw =
+ Base64.encode(password.getBytes(StandardCharsets.UTF_8), Base64.DEFAULT);
+ String encodedPasswordStr = new String(base64EncodedPw, StandardCharsets.UTF_8);
+
+ // Setup WifiConfiguration for legacy Passpoint configuraiton.
+ WifiConfiguration wifiConfig = new WifiConfiguration();
+ wifiConfig.FQDN = fqdn;
+ wifiConfig.providerFriendlyName = friendlyName;
+ wifiConfig.roamingConsortiumIds = rcOIs;
+ wifiConfig.enterpriseConfig.setIdentity(username);
+ wifiConfig.enterpriseConfig.setPassword(password);
+ wifiConfig.enterpriseConfig.setRealm(realm);
+ wifiConfig.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.TTLS);
+ wifiConfig.enterpriseConfig.setPhase2Method(WifiEnterpriseConfig.Phase2.PAP);
+
+ assertFalse(PasspointManager.addLegacyPasspointConfig(wifiConfig));
+ }
+
+ /**
+ * Verify that a PasspointProvider with expected PasspointConfiguration will be installed when
+ * adding a legacy Passpoint configuration containing a valid SIM credential.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void addLegacyPasspointConfigWithSimCredential() throws Exception {
+ // Test data.
+ String fqdn = "test.com";
+ String friendlyName = "Friendly Name";
+ long[] rcOIs = new long[] {0x1234L, 0x2345L};
+ String realm = "realm.com";
+ String imsi = "1234";
+
+ // Setup WifiConfiguration for legacy Passpoint configuraiton.
+ WifiConfiguration wifiConfig = new WifiConfiguration();
+ wifiConfig.FQDN = fqdn;
+ wifiConfig.providerFriendlyName = friendlyName;
+ wifiConfig.roamingConsortiumIds = rcOIs;
+ wifiConfig.enterpriseConfig.setRealm(realm);
+ wifiConfig.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.SIM);
+ wifiConfig.enterpriseConfig.setPlmn(imsi);
+
+ // Setup expected {@link PasspointConfiguration}
+ PasspointConfiguration passpointConfig = new PasspointConfiguration();
+ HomeSp homeSp = new HomeSp();
+ homeSp.setFqdn(fqdn);
+ homeSp.setFriendlyName(friendlyName);
+ homeSp.setRoamingConsortiumOis(rcOIs);
+ passpointConfig.setHomeSp(homeSp);
+ Credential credential = new Credential();
+ Credential.SimCredential simCredential = new Credential.SimCredential();
+ simCredential.setEapType(EAPConstants.EAP_SIM);
+ simCredential.setImsi(imsi);
+ credential.setSimCredential(simCredential);
+ credential.setRealm(realm);
+ passpointConfig.setCredential(credential);
+
+ assertTrue(PasspointManager.addLegacyPasspointConfig(wifiConfig));
+ verifyInstalledConfig(passpointConfig);
+ }
+
+ /**
+ * Verify that a PasspointProvider with expected PasspointConfiguration will be installed when
+ * adding a legacy Passpoint configuration containing a valid certificate credential.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void addLegacyPasspointConfigWithCertCredential() throws Exception {
+ // Test data.
+ String fqdn = "test.com";
+ String friendlyName = "Friendly Name";
+ long[] rcOIs = new long[] {0x1234L, 0x2345L};
+ String realm = "realm.com";
+ String caCertificateAlias = "CaCert";
+ String clientCertificateAlias = "ClientCert";
+
+ // Setup WifiConfiguration for legacy Passpoint configuraiton.
+ WifiConfiguration wifiConfig = new WifiConfiguration();
+ wifiConfig.FQDN = fqdn;
+ wifiConfig.providerFriendlyName = friendlyName;
+ wifiConfig.roamingConsortiumIds = rcOIs;
+ wifiConfig.enterpriseConfig.setRealm(realm);
+ wifiConfig.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.TLS);
+ wifiConfig.enterpriseConfig.setCaCertificateAlias(caCertificateAlias);
+ wifiConfig.enterpriseConfig.setClientCertificateAlias(clientCertificateAlias);
+
+ // Setup expected {@link PasspointConfiguration}
+ PasspointConfiguration passpointConfig = new PasspointConfiguration();
+ HomeSp homeSp = new HomeSp();
+ homeSp.setFqdn(fqdn);
+ homeSp.setFriendlyName(friendlyName);
+ homeSp.setRoamingConsortiumOis(rcOIs);
+ passpointConfig.setHomeSp(homeSp);
+ Credential credential = new Credential();
+ Credential.CertificateCredential certCredential = new Credential.CertificateCredential();
+ certCredential.setCertType(Credential.CertificateCredential.CERT_TYPE_X509V3);
+ credential.setCertCredential(certCredential);
+ credential.setRealm(realm);
+ passpointConfig.setCredential(credential);
+
+ assertTrue(PasspointManager.addLegacyPasspointConfig(wifiConfig));
+ verifyInstalledConfig(passpointConfig);
+ }
+
+ /**
+ * Verify that adding a legacy Passpoint configuration containing certificate credential will
+ * fail when CA certificate is not provided.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void addLegacyPasspointConfigWithCertCredentialWithoutCaCert() throws Exception {
+ // Test data.
+ String fqdn = "test.com";
+ String friendlyName = "Friendly Name";
+ long[] rcOIs = new long[] {0x1234L, 0x2345L};
+ String realm = "realm.com";
+ String clientCertificateAlias = "ClientCert";
+
+ // Setup WifiConfiguration for legacy Passpoint configuraiton.
+ WifiConfiguration wifiConfig = new WifiConfiguration();
+ wifiConfig.FQDN = fqdn;
+ wifiConfig.providerFriendlyName = friendlyName;
+ wifiConfig.roamingConsortiumIds = rcOIs;
+ wifiConfig.enterpriseConfig.setRealm(realm);
+ wifiConfig.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.TLS);
+ wifiConfig.enterpriseConfig.setClientCertificateAlias(clientCertificateAlias);
+
+ assertFalse(PasspointManager.addLegacyPasspointConfig(wifiConfig));
+ }
+
+ /**
+ * Verify that adding a legacy Passpoint configuration containing certificate credential will
+ * fail when client certificate is not provided.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void addLegacyPasspointConfigWithCertCredentialWithoutClientCert() throws Exception {
+ // Test data.
+ String fqdn = "test.com";
+ String friendlyName = "Friendly Name";
+ long[] rcOIs = new long[] {0x1234L, 0x2345L};
+ String realm = "realm.com";
+ String caCertificateAlias = "CaCert";
+
+ // Setup WifiConfiguration for legacy Passpoint configuraiton.
+ WifiConfiguration wifiConfig = new WifiConfiguration();
+ wifiConfig.FQDN = fqdn;
+ wifiConfig.providerFriendlyName = friendlyName;
+ wifiConfig.roamingConsortiumIds = rcOIs;
+ wifiConfig.enterpriseConfig.setRealm(realm);
+ wifiConfig.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.TLS);
+ wifiConfig.enterpriseConfig.setCaCertificateAlias(caCertificateAlias);
+
+ assertFalse(PasspointManager.addLegacyPasspointConfig(wifiConfig));
+ }
}
diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java
index 15f92583e..7551bc049 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java
@@ -351,7 +351,7 @@ public class PasspointProviderTest {
config.setHomeSp(homeSp);
Credential credential = new Credential();
Credential.UserCredential userCredential = new Credential.UserCredential();
- userCredential.setNonEapInnerMethod("MS-CHAP-V2");
+ userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAPV2);
credential.setUserCredential(userCredential);
config.setCredential(credential);
mProvider = createProvider(config);
@@ -383,7 +383,7 @@ public class PasspointProviderTest {
Credential credential = new Credential();
credential.setRealm(testRealm);
Credential.UserCredential userCredential = new Credential.UserCredential();
- userCredential.setNonEapInnerMethod("MS-CHAP-V2");
+ userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAPV2);
credential.setUserCredential(userCredential);
config.setCredential(credential);
mProvider = createProvider(config);
@@ -419,7 +419,7 @@ public class PasspointProviderTest {
Credential credential = new Credential();
credential.setRealm(testRealm);
Credential.UserCredential userCredential = new Credential.UserCredential();
- userCredential.setNonEapInnerMethod("MS-CHAP-V2");
+ userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAPV2);
credential.setUserCredential(userCredential);
config.setCredential(credential);
mProvider = createProvider(config);
@@ -482,7 +482,7 @@ public class PasspointProviderTest {
config.setHomeSp(homeSp);
Credential credential = new Credential();
Credential.UserCredential userCredential = new Credential.UserCredential();
- userCredential.setNonEapInnerMethod("MS-CHAP-V2");
+ userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAPV2);
credential.setUserCredential(userCredential);
config.setCredential(credential);
mProvider = createProvider(config);
@@ -541,7 +541,7 @@ public class PasspointProviderTest {
Credential credential = new Credential();
credential.setRealm(testRealm);
Credential.UserCredential userCredential = new Credential.UserCredential();
- userCredential.setNonEapInnerMethod("MS-CHAP-V2");
+ userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAPV2);
credential.setUserCredential(userCredential);
config.setCredential(credential);
mProvider = createProvider(config);
@@ -628,7 +628,7 @@ public class PasspointProviderTest {
Credential.UserCredential userCredential = new Credential.UserCredential();
userCredential.setUsername(username);
userCredential.setPassword(encodedPasswordStr);
- userCredential.setNonEapInnerMethod("MS-CHAP-V2");
+ userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAPV2);
credential.setUserCredential(userCredential);
credential.setCaCertificate(FakeKeys.CA_CERT0);
config.setCredential(credential);
@@ -762,4 +762,136 @@ public class PasspointProviderTest {
assertEquals(WifiEnterpriseConfig.Eap.SIM, wifiEnterpriseConfig.getEapMethod());
assertEquals(imsi, wifiEnterpriseConfig.getPlmn());
}
+
+ /**
+ * Verify that an expected {@link PasspointConfiguration} will be returned when converting
+ * from a {@link WifiConfiguration} containing an user credential.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void convertFromWifiConfigWithUserCredential() throws Exception {
+ // Test data.
+ String fqdn = "test.com";
+ String friendlyName = "Friendly Name";
+ long[] rcOIs = new long[] {0x1234L, 0x2345L};
+ String realm = "realm.com";
+ String username = "username";
+ String password = "password";
+ byte[] base64EncodedPw =
+ Base64.encode(password.getBytes(StandardCharsets.UTF_8), Base64.DEFAULT);
+ String encodedPasswordStr = new String(base64EncodedPw, StandardCharsets.UTF_8);
+
+ // Setup WifiConfiguration for legacy Passpoint configuraiton.
+ WifiConfiguration wifiConfig = new WifiConfiguration();
+ wifiConfig.FQDN = fqdn;
+ wifiConfig.providerFriendlyName = friendlyName;
+ wifiConfig.roamingConsortiumIds = rcOIs;
+ wifiConfig.enterpriseConfig.setIdentity(username);
+ wifiConfig.enterpriseConfig.setPassword(password);
+ wifiConfig.enterpriseConfig.setRealm(realm);
+ wifiConfig.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.TTLS);
+ wifiConfig.enterpriseConfig.setPhase2Method(WifiEnterpriseConfig.Phase2.PAP);
+
+ // Setup expected {@link PasspointConfiguration}
+ PasspointConfiguration passpointConfig = new PasspointConfiguration();
+ HomeSp homeSp = new HomeSp();
+ homeSp.setFqdn(fqdn);
+ homeSp.setFriendlyName(friendlyName);
+ homeSp.setRoamingConsortiumOis(rcOIs);
+ passpointConfig.setHomeSp(homeSp);
+ Credential credential = new Credential();
+ Credential.UserCredential userCredential = new Credential.UserCredential();
+ userCredential.setUsername(username);
+ userCredential.setPassword(encodedPasswordStr);
+ userCredential.setEapType(EAPConstants.EAP_TTLS);
+ userCredential.setNonEapInnerMethod("PAP");
+ credential.setUserCredential(userCredential);
+ credential.setRealm(realm);
+ passpointConfig.setCredential(credential);
+
+ assertEquals(passpointConfig, PasspointProvider.convertFromWifiConfig(wifiConfig));
+ }
+
+ /**
+ * Verify that an expected {@link PasspointConfiguration} will be returned when converting
+ * from a {@link WifiConfiguration} containing a SIM credential.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void convertFromWifiConfigWithSimCredential() throws Exception {
+ // Test data.
+ String fqdn = "test.com";
+ String friendlyName = "Friendly Name";
+ long[] rcOIs = new long[] {0x1234L, 0x2345L};
+ String realm = "realm.com";
+ String imsi = "1234";
+
+ // Setup WifiConfiguration for legacy Passpoint configuraiton.
+ WifiConfiguration wifiConfig = new WifiConfiguration();
+ wifiConfig.FQDN = fqdn;
+ wifiConfig.providerFriendlyName = friendlyName;
+ wifiConfig.roamingConsortiumIds = rcOIs;
+ wifiConfig.enterpriseConfig.setRealm(realm);
+ wifiConfig.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.SIM);
+ wifiConfig.enterpriseConfig.setPlmn(imsi);
+
+ // Setup expected {@link PasspointConfiguration}
+ PasspointConfiguration passpointConfig = new PasspointConfiguration();
+ HomeSp homeSp = new HomeSp();
+ homeSp.setFqdn(fqdn);
+ homeSp.setFriendlyName(friendlyName);
+ homeSp.setRoamingConsortiumOis(rcOIs);
+ passpointConfig.setHomeSp(homeSp);
+ Credential credential = new Credential();
+ Credential.SimCredential simCredential = new Credential.SimCredential();
+ simCredential.setEapType(EAPConstants.EAP_SIM);
+ simCredential.setImsi(imsi);
+ credential.setSimCredential(simCredential);
+ credential.setRealm(realm);
+ passpointConfig.setCredential(credential);
+
+ assertEquals(passpointConfig, PasspointProvider.convertFromWifiConfig(wifiConfig));
+ }
+
+ /**
+ * Verify that an expected {@link PasspointConfiguration} will be returned when converting
+ * from a {@link WifiConfiguration} containing a certificate credential.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void convertFromWifiConfigWithCertCredential() throws Exception {
+ // Test data.
+ String fqdn = "test.com";
+ String friendlyName = "Friendly Name";
+ long[] rcOIs = new long[] {0x1234L, 0x2345L};
+ String realm = "realm.com";
+
+ // Setup WifiConfiguration for legacy Passpoint configuraiton.
+ WifiConfiguration wifiConfig = new WifiConfiguration();
+ wifiConfig.FQDN = fqdn;
+ wifiConfig.providerFriendlyName = friendlyName;
+ wifiConfig.roamingConsortiumIds = rcOIs;
+ wifiConfig.enterpriseConfig.setRealm(realm);
+ wifiConfig.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.TLS);
+
+ // Setup expected {@link PasspointConfiguration}
+ PasspointConfiguration passpointConfig = new PasspointConfiguration();
+ HomeSp homeSp = new HomeSp();
+ homeSp.setFqdn(fqdn);
+ homeSp.setFriendlyName(friendlyName);
+ homeSp.setRoamingConsortiumOis(rcOIs);
+ passpointConfig.setHomeSp(homeSp);
+ Credential credential = new Credential();
+ Credential.CertificateCredential certCredential = new Credential.CertificateCredential();
+ certCredential.setCertType(Credential.CertificateCredential.CERT_TYPE_X509V3);
+ credential.setCertCredential(certCredential);
+ credential.setRealm(realm);
+ passpointConfig.setCredential(credential);
+
+ assertEquals(passpointConfig, PasspointProvider.convertFromWifiConfig(wifiConfig));
+ }
+
}