diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2016-11-22 18:31:24 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2016-11-22 18:31:25 +0000 |
commit | 5cee8f82a0845ecf28a8543ed3e169f44646bd4b (patch) | |
tree | 498ef5a3edc4f449390a96e2cdfef00674ffa5ee /tests | |
parent | a3bc4bd66d786359d0336410fee7b6bee25850a9 (diff) | |
parent | c04479601696f56c9cc240d4c7fc49fa99f51825 (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.java | 200 |
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); + } } |