summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2016-11-22 18:31:24 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2016-11-22 18:31:25 +0000
commit5cee8f82a0845ecf28a8543ed3e169f44646bd4b (patch)
tree498ef5a3edc4f449390a96e2cdfef00674ffa5ee /tests
parenta3bc4bd66d786359d0336410fee7b6bee25850a9 (diff)
parentc04479601696f56c9cc240d4c7fc49fa99f51825 (diff)
Merge "hotspot2: add support for managing Passpoint configurations"
Diffstat (limited to 'tests')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java200
1 files changed, 197 insertions, 3 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 ffc212230..1d9f9372d 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
@@ -22,16 +22,25 @@ import static android.net.wifi.WifiManager.EXTRA_PASSPOINT_ICON_FILE;
import static android.net.wifi.WifiManager.PASSPOINT_ICON_RECEIVED_ACTION;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
import android.content.Context;
import android.content.Intent;
+import android.net.wifi.EAPConstants;
+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 com.android.server.wifi.FakeKeys;
+import com.android.server.wifi.IMSIParameter;
+import com.android.server.wifi.SIMAccessor;
import com.android.server.wifi.WifiInjector;
import org.junit.Before;
@@ -39,6 +48,9 @@ import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Unit tests for {@link com.android.server.wifi.hotspot2.PasspointManager}.
*/
@@ -46,17 +58,23 @@ import org.mockito.Mock;
public class PasspointManagerTest {
private static final long BSSID = 0x112233445566L;
private static final String ICON_FILENAME = "test";
+ private static final String TEST_FQDN = "test1.test.com";
+ private static final String TEST_FQDN1 = "test.com";
+ private static final String TEST_FRIENDLY_NAME = "friendly name";
+ private static final String TEST_REALM = "realm.test.com";
+ private static final String TEST_IMSI = "1234*";
@Mock Context mContext;
@Mock WifiInjector mWifiInjector;
@Mock PasspointEventHandler.Callbacks mCallbacks;
+ @Mock SIMAccessor mSimAccessor;
PasspointManager mManager;
/** Sets up test. */
@Before
public void setUp() throws Exception {
initMocks(this);
- mManager = new PasspointManager(mContext, mWifiInjector);
+ mManager = new PasspointManager(mContext, mWifiInjector, mSimAccessor);
ArgumentCaptor<PasspointEventHandler.Callbacks> callbacks =
ArgumentCaptor.forClass(PasspointEventHandler.Callbacks.class);
verify(mWifiInjector).makePasspointEventHandler(callbacks.capture());
@@ -85,10 +103,24 @@ public class PasspointManagerTest {
}
/**
+ * Verify that the given Passpoint configuration matches the one that's added to
+ * the PasspointManager.
+ *
+ * @param expectedConfig The expected installed Passpoint configuration
+ */
+ private void verifyInstalledConfig(PasspointConfiguration expectedConfig) {
+ List<PasspointConfiguration> installedConfigs = mManager.getProviderConfigs();
+ assertEquals(1, installedConfigs.size());
+ assertEquals(expectedConfig, installedConfigs.get(0));
+ }
+
+ /**
* Validate the broadcast intent when icon file retrieval succeeded.
+ *
+ * @throws Exception
*/
@Test
- public void iconResponseSuccess() {
+ public void iconResponseSuccess() throws Exception {
byte[] iconData = new byte[] {0x00, 0x11};
mCallbacks.onIconResponse(BSSID, ICON_FILENAME, iconData);
verifyIconIntent(BSSID, ICON_FILENAME, iconData);
@@ -96,10 +128,172 @@ public class PasspointManagerTest {
/**
* Validate the broadcast intent when icon file retrieval failed.
+ *
+ * @throws Exception
*/
@Test
- public void iconResponseFailure() {
+ public void iconResponseFailure() throws Exception {
mCallbacks.onIconResponse(BSSID, ICON_FILENAME, null);
verifyIconIntent(BSSID, ICON_FILENAME, null);
}
+
+ /**
+ * Verify that adding a provider with a null configuration will fail.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void addProviderWithNullConfig() throws Exception {
+ assertFalse(mManager.addProvider(null));
+ }
+
+ /**
+ * Verify that adding a provider with a empty configuration will fail.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void addProviderWithEmptyConfig() throws Exception {
+ assertFalse(mManager.addProvider(new PasspointConfiguration()));
+ }
+
+ /**
+ * Verify taht adding a provider with an invalid credential will fail (using EAP-TLS
+ * for user credential).
+ *
+ * @throws Exception
+ */
+ @Test
+ public void addProviderWithInvalidCredential() throws Exception {
+ PasspointConfiguration config = new PasspointConfiguration();
+ config.homeSp = new HomeSP();
+ config.homeSp.fqdn = TEST_FQDN;
+ config.homeSp.friendlyName = TEST_FRIENDLY_NAME;
+ config.credential = new Credential();
+ config.credential.realm = TEST_REALM;
+ config.credential.caCertificate = FakeKeys.CA_CERT0;
+ config.credential.userCredential = new Credential.UserCredential();
+ config.credential.userCredential.username = "username";
+ config.credential.userCredential.password = "password";
+ // EAP-TLS not allowed for user credential.
+ config.credential.userCredential.eapType = EAPConstants.EAP_TLS;
+ config.credential.userCredential.nonEapInnerMethod = "MS-CHAP";
+ assertFalse(mManager.addProvider(config));
+ }
+
+ /**
+ * Verify that adding a provider with a valid configuration and user credential will succeed.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void addRemoveProviderWithValidUserCredential() throws Exception {
+ PasspointConfiguration config = new PasspointConfiguration();
+ config.homeSp = new HomeSP();
+ config.homeSp.fqdn = TEST_FQDN;
+ config.homeSp.friendlyName = TEST_FRIENDLY_NAME;
+ config.credential = new Credential();
+ config.credential.realm = TEST_REALM;
+ config.credential.caCertificate = FakeKeys.CA_CERT0;
+ config.credential.userCredential = new Credential.UserCredential();
+ config.credential.userCredential.username = "username";
+ config.credential.userCredential.password = "password";
+ config.credential.userCredential.eapType = EAPConstants.EAP_TTLS;
+ config.credential.userCredential.nonEapInnerMethod = "MS-CHAP";
+ assertTrue(mManager.addProvider(config));
+ verifyInstalledConfig(config);
+
+ // Remove the provider.
+ assertTrue(mManager.removeProvider(TEST_FQDN));
+ assertEquals(null, mManager.getProviderConfigs());
+ }
+
+ /**
+ * Verify that adding a provider with a valid configuration and SIM credential will succeed.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void addRemoveProviderWithValidSimCredential() throws Exception {
+ PasspointConfiguration config = new PasspointConfiguration();
+ config.homeSp = new HomeSP();
+ config.homeSp.fqdn = TEST_FQDN;
+ config.homeSp.friendlyName = TEST_FRIENDLY_NAME;
+ config.credential = new Credential();
+ config.credential.realm = TEST_REALM;
+ config.credential.simCredential = new Credential.SimCredential();
+ config.credential.simCredential.imsi = TEST_IMSI;
+ config.credential.simCredential.eapType = EAPConstants.EAP_SIM;
+ when(mSimAccessor.getMatchingImsis(new IMSIParameter(TEST_IMSI)))
+ .thenReturn(new ArrayList<String>());
+ assertTrue(mManager.addProvider(config));
+ verifyInstalledConfig(config);
+
+ // Remove the provider.
+ assertTrue(mManager.removeProvider(TEST_FQDN));
+ assertEquals(null, mManager.getProviderConfigs());
+ }
+
+ /**
+ * Verify that adding a provider with an invalid SIM credential (configured IMSI doesn't
+ * match the IMSI of the installed SIM cards) will fail.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void addProviderWithValidSimCredentialWithInvalidIMSI() throws Exception {
+ PasspointConfiguration config = new PasspointConfiguration();
+ config.homeSp = new HomeSP();
+ config.homeSp.fqdn = TEST_FQDN;
+ config.homeSp.friendlyName = TEST_FRIENDLY_NAME;
+ config.credential = new Credential();
+ config.credential.realm = TEST_REALM;
+ config.credential.simCredential = new Credential.SimCredential();
+ config.credential.simCredential.imsi = TEST_IMSI;
+ config.credential.simCredential.eapType = EAPConstants.EAP_SIM;
+ when(mSimAccessor.getMatchingImsis(new IMSIParameter(TEST_IMSI))).thenReturn(null);
+ assertFalse(mManager.addProvider(config));
+ }
+
+ /**
+ * Verify that adding a provider with the same base domain as the existing provider will
+ * succeed, and verify that the existing provider is replaced by the new provider with
+ * the new configuration.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void addProviderWithExistingConfig() throws Exception {
+ // Add a provider with the original configuration.
+ PasspointConfiguration origConfig = new PasspointConfiguration();
+ origConfig.homeSp = new HomeSP();
+ origConfig.homeSp.fqdn = TEST_FQDN;
+ origConfig.homeSp.friendlyName = TEST_FRIENDLY_NAME;
+ origConfig.credential = new Credential();
+ origConfig.credential.realm = TEST_REALM;
+ origConfig.credential.simCredential = new Credential.SimCredential();
+ origConfig.credential.simCredential.imsi = TEST_IMSI;
+ origConfig.credential.simCredential.eapType = EAPConstants.EAP_SIM;
+ when(mSimAccessor.getMatchingImsis(new IMSIParameter(TEST_IMSI)))
+ .thenReturn(new ArrayList<String>());
+ assertTrue(mManager.addProvider(origConfig));
+ verifyInstalledConfig(origConfig);
+
+ // Add another provider with the same base domain as the existing provider.
+ // This should replace the existing provider with the new configuration.
+ PasspointConfiguration newConfig = new PasspointConfiguration();
+ newConfig.homeSp = new HomeSP();
+ newConfig.homeSp.fqdn = TEST_FQDN1;
+ newConfig.homeSp.friendlyName = TEST_FRIENDLY_NAME;
+ newConfig.credential = new Credential();
+ newConfig.credential.realm = TEST_REALM;
+ newConfig.credential.caCertificate = FakeKeys.CA_CERT0;
+ newConfig.credential.userCredential = new Credential.UserCredential();
+ newConfig.credential.userCredential.username = "username";
+ newConfig.credential.userCredential.password = "password";
+ newConfig.credential.userCredential.eapType = EAPConstants.EAP_TTLS;
+ newConfig.credential.userCredential.nonEapInnerMethod = "MS-CHAP";
+ assertTrue(mManager.addProvider(newConfig));
+ verifyInstalledConfig(newConfig);
+ }
}