From 23890c29c5f9615670f45a3b95ccbb338033db8e Mon Sep 17 00:00:00 2001 From: Chalard Jean Date: Mon, 14 Nov 2022 19:18:04 +0900 Subject: [PATCH] Refactor CarrierPrivilegeAuthenticatorTest Refactor this test to make it easier to test the no-op refactoring coming as a follow-up Test: this Change-Id: I47c81bdec2b8f9575835ba664b61721d5f2c69ff --- .../CarrierPrivilegeAuthenticatorTest.java | 146 +++++++++--------- 1 file changed, 72 insertions(+), 74 deletions(-) diff --git a/tests/unit/java/com/android/server/connectivity/CarrierPrivilegeAuthenticatorTest.java b/tests/unit/java/com/android/server/connectivity/CarrierPrivilegeAuthenticatorTest.java index 157507bf28..3849e49dfe 100644 --- a/tests/unit/java/com/android/server/connectivity/CarrierPrivilegeAuthenticatorTest.java +++ b/tests/unit/java/com/android/server/connectivity/CarrierPrivilegeAuthenticatorTest.java @@ -20,18 +20,17 @@ import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; import static android.telephony.TelephonyManager.ACTION_MULTI_SIM_CONFIG_CHANGED; -import static com.android.testutils.DevSdkIgnoreRuleKt.SC_V2; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; +import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import android.annotation.NonNull; @@ -40,14 +39,15 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; -import android.net.NetworkRequest; -import android.net.NetworkSpecifier; +import android.net.NetworkCapabilities; import android.net.TelephonyNetworkSpecifier; +import android.os.Build; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; +import com.android.net.module.util.CollectionUtils; import com.android.networkstack.apishim.TelephonyManagerShimImpl; -import com.android.networkstack.apishim.common.TelephonyManagerShim; +import com.android.networkstack.apishim.common.TelephonyManagerShim.CarrierPrivilegesListenerShim; import com.android.networkstack.apishim.common.UnsupportedApiLevelException; import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo; import com.android.testutils.DevSdkIgnoreRunner; @@ -58,16 +58,16 @@ import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import java.util.Collections; -import java.util.List; +import java.util.Map; /** * Tests for CarrierPrivilegeAuthenticatorTest. * * Build, install and run with: - * runtest frameworks-net -c com.android.server.connectivity.CarrierPrivilegeAuthenticatorTest + * atest FrameworksNetTests:CarrierPrivilegeAuthenticatorTest */ @RunWith(DevSdkIgnoreRunner.class) -@IgnoreUpTo(SC_V2) // TODO: Use to Build.VERSION_CODES.SC_V2 when available +@IgnoreUpTo(Build.VERSION_CODES.S_V2) public class CarrierPrivilegeAuthenticatorTest { private static final int SUBSCRIPTION_COUNT = 2; private static final int TEST_SUBSCRIPTION_ID = 1; @@ -107,8 +107,7 @@ public class CarrierPrivilegeAuthenticatorTest { doReturn(mPackageManager).when(mContext).getPackageManager(); final ApplicationInfo applicationInfo = new ApplicationInfo(); applicationInfo.uid = mCarrierConfigPkgUid; - doReturn(applicationInfo).when(mPackageManager) - .getApplicationInfo(eq(mTestPkg), anyInt()); + doReturn(applicationInfo).when(mPackageManager).getApplicationInfo(eq(mTestPkg), anyInt()); mCarrierPrivilegeAuthenticator = new TestCarrierPrivilegeAuthenticator(mContext, mTelephonyManager); } @@ -119,21 +118,23 @@ public class CarrierPrivilegeAuthenticatorTest { return captor.getValue(); } - private List - getCarrierPrivilegesListeners() { - final ArgumentCaptor captor = - ArgumentCaptor.forClass(TelephonyManagerShim.CarrierPrivilegesListenerShim.class); + private Map getCarrierPrivilegesListeners() { + final ArgumentCaptor slotCaptor = ArgumentCaptor.forClass(Integer.class); + final ArgumentCaptor listenerCaptor = + ArgumentCaptor.forClass(CarrierPrivilegesListenerShim.class); try { - verify(mTelephonyManagerShim, atLeastOnce()) - .addCarrierPrivilegesListener(anyInt(), any(), captor.capture()); + verify(mTelephonyManagerShim, atLeastOnce()).addCarrierPrivilegesListener( + slotCaptor.capture(), any(), listenerCaptor.capture()); } catch (UnsupportedApiLevelException e) { } - return captor.getAllValues(); + final Map result = + CollectionUtils.assoc(slotCaptor.getAllValues(), listenerCaptor.getAllValues()); + clearInvocations(mTelephonyManagerShim); + return result; } private Intent buildTestMultiSimConfigBroadcastIntent() { - final Intent intent = new Intent(ACTION_MULTI_SIM_CONFIG_CHANGED); - return intent; + return new Intent(ACTION_MULTI_SIM_CONFIG_CHANGED); } @Test public void testConstructor() throws Exception { @@ -146,99 +147,96 @@ public class CarrierPrivilegeAuthenticatorTest { assertEquals(1, filter.countActions()); assertTrue(filter.hasAction(ACTION_MULTI_SIM_CONFIG_CHANGED)); - verify(mTelephonyManagerShim, times(2)) - .addCarrierPrivilegesListener(anyInt(), any(), any()); - verify(mTelephonyManagerShim) - .addCarrierPrivilegesListener(eq(0), any(), any()); - verify(mTelephonyManagerShim) - .addCarrierPrivilegesListener(eq(1), any(), any()); - assertEquals(2, getCarrierPrivilegesListeners().size()); + // Two listeners originally registered, one for slot 0 and one for slot 1 + final Map initialListeners = + getCarrierPrivilegesListeners(); + assertNotNull(initialListeners.get(0)); + assertNotNull(initialListeners.get(1)); + assertEquals(2, initialListeners.size()); - final TelephonyNetworkSpecifier telephonyNetworkSpecifier = - new TelephonyNetworkSpecifier(0); - final NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder(); - networkRequestBuilder.addTransportType(TRANSPORT_CELLULAR); - networkRequestBuilder.setNetworkSpecifier(telephonyNetworkSpecifier); + final NetworkCapabilities.Builder ncBuilder = new NetworkCapabilities.Builder() + .addTransportType(TRANSPORT_CELLULAR) + .setNetworkSpecifier(new TelephonyNetworkSpecifier(0)); assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities( - mCarrierConfigPkgUid, networkRequestBuilder.build().networkCapabilities)); + mCarrierConfigPkgUid, ncBuilder.build())); assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities( - mCarrierConfigPkgUid + 1, networkRequestBuilder.build().networkCapabilities)); + mCarrierConfigPkgUid + 1, ncBuilder.build())); } @Test public void testMultiSimConfigChanged() throws Exception { - doReturn(1).when(mTelephonyManager).getActiveModemCount(); - final List carrierPrivilegesListeners = + // Two listeners originally registered, one for slot 0 and one for slot 1 + final Map initialListeners = getCarrierPrivilegesListeners(); + assertNotNull(initialListeners.get(0)); + assertNotNull(initialListeners.get(1)); + assertEquals(2, initialListeners.size()); + doReturn(1).when(mTelephonyManager).getActiveModemCount(); mCarrierPrivilegeAuthenticator.onReceive( mContext, buildTestMultiSimConfigBroadcastIntent()); - for (TelephonyManagerShim.CarrierPrivilegesListenerShim carrierPrivilegesListener - : carrierPrivilegesListeners) { - verify(mTelephonyManagerShim) - .removeCarrierPrivilegesListener(eq(carrierPrivilegesListener)); + // Check all listeners have been removed + for (CarrierPrivilegesListenerShim listener : initialListeners.values()) { + verify(mTelephonyManagerShim).removeCarrierPrivilegesListener(eq(listener)); } // Expect a new CarrierPrivilegesListener to have been registered for slot 0, and none other - // (2 previously registered during startup, for slots 0 & 1) - verify(mTelephonyManagerShim, times(3)) - .addCarrierPrivilegesListener(anyInt(), any(), any()); - verify(mTelephonyManagerShim, times(2)) - .addCarrierPrivilegesListener(eq(0), any(), any()); + final Map newListeners = + getCarrierPrivilegesListeners(); + assertNotNull(newListeners.get(0)); + assertEquals(1, newListeners.size()); - final TelephonyNetworkSpecifier telephonyNetworkSpecifier = - new TelephonyNetworkSpecifier(0); - final NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder(); - networkRequestBuilder.addTransportType(TRANSPORT_CELLULAR); - networkRequestBuilder.setNetworkSpecifier(telephonyNetworkSpecifier); + final TelephonyNetworkSpecifier specifier = new TelephonyNetworkSpecifier(0); + final NetworkCapabilities nc = new NetworkCapabilities.Builder() + .addTransportType(TRANSPORT_CELLULAR) + .setNetworkSpecifier(specifier) + .build(); assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities( - mCarrierConfigPkgUid, networkRequestBuilder.build().networkCapabilities)); + mCarrierConfigPkgUid, nc)); assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities( - mCarrierConfigPkgUid + 1, networkRequestBuilder.build().networkCapabilities)); + mCarrierConfigPkgUid + 1, nc)); } @Test public void testOnCarrierPrivilegesChanged() throws Exception { - final TelephonyManagerShim.CarrierPrivilegesListenerShim listener = - getCarrierPrivilegesListeners().get(0); + final CarrierPrivilegesListenerShim listener = getCarrierPrivilegesListeners().get(0); - final TelephonyNetworkSpecifier telephonyNetworkSpecifier = - new TelephonyNetworkSpecifier(0); - final NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder(); - networkRequestBuilder.addTransportType(TRANSPORT_CELLULAR); - networkRequestBuilder.setNetworkSpecifier(telephonyNetworkSpecifier); + final TelephonyNetworkSpecifier specifier = new TelephonyNetworkSpecifier(0); + final NetworkCapabilities nc = new NetworkCapabilities.Builder() + .addTransportType(TRANSPORT_CELLULAR) + .setNetworkSpecifier(specifier) + .build(); final ApplicationInfo applicationInfo = new ApplicationInfo(); applicationInfo.uid = mCarrierConfigPkgUid + 1; - doReturn(applicationInfo).when(mPackageManager) - .getApplicationInfo(eq(mTestPkg), anyInt()); + doReturn(applicationInfo).when(mPackageManager).getApplicationInfo(eq(mTestPkg), anyInt()); listener.onCarrierPrivilegesChanged(Collections.emptyList(), new int[] {}); assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities( - mCarrierConfigPkgUid, networkRequestBuilder.build().networkCapabilities)); + mCarrierConfigPkgUid, nc)); assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities( - mCarrierConfigPkgUid + 1, networkRequestBuilder.build().networkCapabilities)); + mCarrierConfigPkgUid + 1, nc)); } @Test public void testDefaultSubscription() throws Exception { - final NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder(); - networkRequestBuilder.addTransportType(TRANSPORT_CELLULAR); + final NetworkCapabilities.Builder ncBuilder = new NetworkCapabilities.Builder(); + ncBuilder.addTransportType(TRANSPORT_CELLULAR); assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities( - mCarrierConfigPkgUid, networkRequestBuilder.build().networkCapabilities)); + mCarrierConfigPkgUid, ncBuilder.build())); - networkRequestBuilder.setNetworkSpecifier(new TelephonyNetworkSpecifier(0)); + ncBuilder.setNetworkSpecifier(new TelephonyNetworkSpecifier(0)); assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities( - mCarrierConfigPkgUid, networkRequestBuilder.build().networkCapabilities)); + mCarrierConfigPkgUid, ncBuilder.build())); - // The builder for NetworkRequest doesn't allow removing the transport as long as a + // The builder for NetworkCapabilities doesn't allow removing the transport as long as a // specifier is set, so unset it first. TODO : fix the builder - networkRequestBuilder.setNetworkSpecifier((NetworkSpecifier) null); - networkRequestBuilder.removeTransportType(TRANSPORT_CELLULAR); - networkRequestBuilder.addTransportType(TRANSPORT_WIFI); - networkRequestBuilder.setNetworkSpecifier(new TelephonyNetworkSpecifier(0)); + ncBuilder.setNetworkSpecifier(null); + ncBuilder.removeTransportType(TRANSPORT_CELLULAR); + ncBuilder.addTransportType(TRANSPORT_WIFI); + ncBuilder.setNetworkSpecifier(new TelephonyNetworkSpecifier(0)); assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities( - mCarrierConfigPkgUid, networkRequestBuilder.build().networkCapabilities)); + mCarrierConfigPkgUid, ncBuilder.build())); } }