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
This commit is contained in:
@@ -20,18 +20,17 @@ import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
|
|||||||
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
|
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
|
||||||
import static android.telephony.TelephonyManager.ACTION_MULTI_SIM_CONFIG_CHANGED;
|
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.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.atLeastOnce;
|
import static org.mockito.Mockito.atLeastOnce;
|
||||||
|
import static org.mockito.Mockito.clearInvocations;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.times;
|
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
@@ -40,14 +39,15 @@ import android.content.Intent;
|
|||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.net.NetworkRequest;
|
import android.net.NetworkCapabilities;
|
||||||
import android.net.NetworkSpecifier;
|
|
||||||
import android.net.TelephonyNetworkSpecifier;
|
import android.net.TelephonyNetworkSpecifier;
|
||||||
|
import android.os.Build;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
|
import com.android.net.module.util.CollectionUtils;
|
||||||
import com.android.networkstack.apishim.TelephonyManagerShimImpl;
|
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.networkstack.apishim.common.UnsupportedApiLevelException;
|
||||||
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
|
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
|
||||||
import com.android.testutils.DevSdkIgnoreRunner;
|
import com.android.testutils.DevSdkIgnoreRunner;
|
||||||
@@ -58,16 +58,16 @@ import org.junit.runner.RunWith;
|
|||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for CarrierPrivilegeAuthenticatorTest.
|
* Tests for CarrierPrivilegeAuthenticatorTest.
|
||||||
*
|
*
|
||||||
* Build, install and run with:
|
* Build, install and run with:
|
||||||
* runtest frameworks-net -c com.android.server.connectivity.CarrierPrivilegeAuthenticatorTest
|
* atest FrameworksNetTests:CarrierPrivilegeAuthenticatorTest
|
||||||
*/
|
*/
|
||||||
@RunWith(DevSdkIgnoreRunner.class)
|
@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 {
|
public class CarrierPrivilegeAuthenticatorTest {
|
||||||
private static final int SUBSCRIPTION_COUNT = 2;
|
private static final int SUBSCRIPTION_COUNT = 2;
|
||||||
private static final int TEST_SUBSCRIPTION_ID = 1;
|
private static final int TEST_SUBSCRIPTION_ID = 1;
|
||||||
@@ -107,8 +107,7 @@ public class CarrierPrivilegeAuthenticatorTest {
|
|||||||
doReturn(mPackageManager).when(mContext).getPackageManager();
|
doReturn(mPackageManager).when(mContext).getPackageManager();
|
||||||
final ApplicationInfo applicationInfo = new ApplicationInfo();
|
final ApplicationInfo applicationInfo = new ApplicationInfo();
|
||||||
applicationInfo.uid = mCarrierConfigPkgUid;
|
applicationInfo.uid = mCarrierConfigPkgUid;
|
||||||
doReturn(applicationInfo).when(mPackageManager)
|
doReturn(applicationInfo).when(mPackageManager).getApplicationInfo(eq(mTestPkg), anyInt());
|
||||||
.getApplicationInfo(eq(mTestPkg), anyInt());
|
|
||||||
mCarrierPrivilegeAuthenticator =
|
mCarrierPrivilegeAuthenticator =
|
||||||
new TestCarrierPrivilegeAuthenticator(mContext, mTelephonyManager);
|
new TestCarrierPrivilegeAuthenticator(mContext, mTelephonyManager);
|
||||||
}
|
}
|
||||||
@@ -119,21 +118,23 @@ public class CarrierPrivilegeAuthenticatorTest {
|
|||||||
return captor.getValue();
|
return captor.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<TelephonyManagerShim.CarrierPrivilegesListenerShim>
|
private Map<Integer, CarrierPrivilegesListenerShim> getCarrierPrivilegesListeners() {
|
||||||
getCarrierPrivilegesListeners() {
|
final ArgumentCaptor<Integer> slotCaptor = ArgumentCaptor.forClass(Integer.class);
|
||||||
final ArgumentCaptor<TelephonyManagerShim.CarrierPrivilegesListenerShim> captor =
|
final ArgumentCaptor<CarrierPrivilegesListenerShim> listenerCaptor =
|
||||||
ArgumentCaptor.forClass(TelephonyManagerShim.CarrierPrivilegesListenerShim.class);
|
ArgumentCaptor.forClass(CarrierPrivilegesListenerShim.class);
|
||||||
try {
|
try {
|
||||||
verify(mTelephonyManagerShim, atLeastOnce())
|
verify(mTelephonyManagerShim, atLeastOnce()).addCarrierPrivilegesListener(
|
||||||
.addCarrierPrivilegesListener(anyInt(), any(), captor.capture());
|
slotCaptor.capture(), any(), listenerCaptor.capture());
|
||||||
} catch (UnsupportedApiLevelException e) {
|
} catch (UnsupportedApiLevelException e) {
|
||||||
}
|
}
|
||||||
return captor.getAllValues();
|
final Map<Integer, CarrierPrivilegesListenerShim> result =
|
||||||
|
CollectionUtils.assoc(slotCaptor.getAllValues(), listenerCaptor.getAllValues());
|
||||||
|
clearInvocations(mTelephonyManagerShim);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Intent buildTestMultiSimConfigBroadcastIntent() {
|
private Intent buildTestMultiSimConfigBroadcastIntent() {
|
||||||
final Intent intent = new Intent(ACTION_MULTI_SIM_CONFIG_CHANGED);
|
return new Intent(ACTION_MULTI_SIM_CONFIG_CHANGED);
|
||||||
return intent;
|
|
||||||
}
|
}
|
||||||
@Test
|
@Test
|
||||||
public void testConstructor() throws Exception {
|
public void testConstructor() throws Exception {
|
||||||
@@ -146,99 +147,96 @@ public class CarrierPrivilegeAuthenticatorTest {
|
|||||||
assertEquals(1, filter.countActions());
|
assertEquals(1, filter.countActions());
|
||||||
assertTrue(filter.hasAction(ACTION_MULTI_SIM_CONFIG_CHANGED));
|
assertTrue(filter.hasAction(ACTION_MULTI_SIM_CONFIG_CHANGED));
|
||||||
|
|
||||||
verify(mTelephonyManagerShim, times(2))
|
// Two listeners originally registered, one for slot 0 and one for slot 1
|
||||||
.addCarrierPrivilegesListener(anyInt(), any(), any());
|
final Map<Integer, CarrierPrivilegesListenerShim> initialListeners =
|
||||||
verify(mTelephonyManagerShim)
|
getCarrierPrivilegesListeners();
|
||||||
.addCarrierPrivilegesListener(eq(0), any(), any());
|
assertNotNull(initialListeners.get(0));
|
||||||
verify(mTelephonyManagerShim)
|
assertNotNull(initialListeners.get(1));
|
||||||
.addCarrierPrivilegesListener(eq(1), any(), any());
|
assertEquals(2, initialListeners.size());
|
||||||
assertEquals(2, getCarrierPrivilegesListeners().size());
|
|
||||||
|
|
||||||
final TelephonyNetworkSpecifier telephonyNetworkSpecifier =
|
final NetworkCapabilities.Builder ncBuilder = new NetworkCapabilities.Builder()
|
||||||
new TelephonyNetworkSpecifier(0);
|
.addTransportType(TRANSPORT_CELLULAR)
|
||||||
final NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder();
|
.setNetworkSpecifier(new TelephonyNetworkSpecifier(0));
|
||||||
networkRequestBuilder.addTransportType(TRANSPORT_CELLULAR);
|
|
||||||
networkRequestBuilder.setNetworkSpecifier(telephonyNetworkSpecifier);
|
|
||||||
|
|
||||||
assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid, networkRequestBuilder.build().networkCapabilities));
|
mCarrierConfigPkgUid, ncBuilder.build()));
|
||||||
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid + 1, networkRequestBuilder.build().networkCapabilities));
|
mCarrierConfigPkgUid + 1, ncBuilder.build()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMultiSimConfigChanged() throws Exception {
|
public void testMultiSimConfigChanged() throws Exception {
|
||||||
doReturn(1).when(mTelephonyManager).getActiveModemCount();
|
// Two listeners originally registered, one for slot 0 and one for slot 1
|
||||||
final List<TelephonyManagerShim.CarrierPrivilegesListenerShim> carrierPrivilegesListeners =
|
final Map<Integer, CarrierPrivilegesListenerShim> initialListeners =
|
||||||
getCarrierPrivilegesListeners();
|
getCarrierPrivilegesListeners();
|
||||||
|
assertNotNull(initialListeners.get(0));
|
||||||
|
assertNotNull(initialListeners.get(1));
|
||||||
|
assertEquals(2, initialListeners.size());
|
||||||
|
|
||||||
|
doReturn(1).when(mTelephonyManager).getActiveModemCount();
|
||||||
mCarrierPrivilegeAuthenticator.onReceive(
|
mCarrierPrivilegeAuthenticator.onReceive(
|
||||||
mContext, buildTestMultiSimConfigBroadcastIntent());
|
mContext, buildTestMultiSimConfigBroadcastIntent());
|
||||||
for (TelephonyManagerShim.CarrierPrivilegesListenerShim carrierPrivilegesListener
|
// Check all listeners have been removed
|
||||||
: carrierPrivilegesListeners) {
|
for (CarrierPrivilegesListenerShim listener : initialListeners.values()) {
|
||||||
verify(mTelephonyManagerShim)
|
verify(mTelephonyManagerShim).removeCarrierPrivilegesListener(eq(listener));
|
||||||
.removeCarrierPrivilegesListener(eq(carrierPrivilegesListener));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Expect a new CarrierPrivilegesListener to have been registered for slot 0, and none other
|
// Expect a new CarrierPrivilegesListener to have been registered for slot 0, and none other
|
||||||
// (2 previously registered during startup, for slots 0 & 1)
|
final Map<Integer, CarrierPrivilegesListenerShim> newListeners =
|
||||||
verify(mTelephonyManagerShim, times(3))
|
getCarrierPrivilegesListeners();
|
||||||
.addCarrierPrivilegesListener(anyInt(), any(), any());
|
assertNotNull(newListeners.get(0));
|
||||||
verify(mTelephonyManagerShim, times(2))
|
assertEquals(1, newListeners.size());
|
||||||
.addCarrierPrivilegesListener(eq(0), any(), any());
|
|
||||||
|
|
||||||
final TelephonyNetworkSpecifier telephonyNetworkSpecifier =
|
final TelephonyNetworkSpecifier specifier = new TelephonyNetworkSpecifier(0);
|
||||||
new TelephonyNetworkSpecifier(0);
|
final NetworkCapabilities nc = new NetworkCapabilities.Builder()
|
||||||
final NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder();
|
.addTransportType(TRANSPORT_CELLULAR)
|
||||||
networkRequestBuilder.addTransportType(TRANSPORT_CELLULAR);
|
.setNetworkSpecifier(specifier)
|
||||||
networkRequestBuilder.setNetworkSpecifier(telephonyNetworkSpecifier);
|
.build();
|
||||||
assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid, networkRequestBuilder.build().networkCapabilities));
|
mCarrierConfigPkgUid, nc));
|
||||||
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid + 1, networkRequestBuilder.build().networkCapabilities));
|
mCarrierConfigPkgUid + 1, nc));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnCarrierPrivilegesChanged() throws Exception {
|
public void testOnCarrierPrivilegesChanged() throws Exception {
|
||||||
final TelephonyManagerShim.CarrierPrivilegesListenerShim listener =
|
final CarrierPrivilegesListenerShim listener = getCarrierPrivilegesListeners().get(0);
|
||||||
getCarrierPrivilegesListeners().get(0);
|
|
||||||
|
|
||||||
final TelephonyNetworkSpecifier telephonyNetworkSpecifier =
|
final TelephonyNetworkSpecifier specifier = new TelephonyNetworkSpecifier(0);
|
||||||
new TelephonyNetworkSpecifier(0);
|
final NetworkCapabilities nc = new NetworkCapabilities.Builder()
|
||||||
final NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder();
|
.addTransportType(TRANSPORT_CELLULAR)
|
||||||
networkRequestBuilder.addTransportType(TRANSPORT_CELLULAR);
|
.setNetworkSpecifier(specifier)
|
||||||
networkRequestBuilder.setNetworkSpecifier(telephonyNetworkSpecifier);
|
.build();
|
||||||
|
|
||||||
final ApplicationInfo applicationInfo = new ApplicationInfo();
|
final ApplicationInfo applicationInfo = new ApplicationInfo();
|
||||||
applicationInfo.uid = mCarrierConfigPkgUid + 1;
|
applicationInfo.uid = mCarrierConfigPkgUid + 1;
|
||||||
doReturn(applicationInfo).when(mPackageManager)
|
doReturn(applicationInfo).when(mPackageManager).getApplicationInfo(eq(mTestPkg), anyInt());
|
||||||
.getApplicationInfo(eq(mTestPkg), anyInt());
|
|
||||||
listener.onCarrierPrivilegesChanged(Collections.emptyList(), new int[] {});
|
listener.onCarrierPrivilegesChanged(Collections.emptyList(), new int[] {});
|
||||||
|
|
||||||
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid, networkRequestBuilder.build().networkCapabilities));
|
mCarrierConfigPkgUid, nc));
|
||||||
assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid + 1, networkRequestBuilder.build().networkCapabilities));
|
mCarrierConfigPkgUid + 1, nc));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDefaultSubscription() throws Exception {
|
public void testDefaultSubscription() throws Exception {
|
||||||
final NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder();
|
final NetworkCapabilities.Builder ncBuilder = new NetworkCapabilities.Builder();
|
||||||
networkRequestBuilder.addTransportType(TRANSPORT_CELLULAR);
|
ncBuilder.addTransportType(TRANSPORT_CELLULAR);
|
||||||
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid, networkRequestBuilder.build().networkCapabilities));
|
mCarrierConfigPkgUid, ncBuilder.build()));
|
||||||
|
|
||||||
networkRequestBuilder.setNetworkSpecifier(new TelephonyNetworkSpecifier(0));
|
ncBuilder.setNetworkSpecifier(new TelephonyNetworkSpecifier(0));
|
||||||
assertTrue(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
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
|
// specifier is set, so unset it first. TODO : fix the builder
|
||||||
networkRequestBuilder.setNetworkSpecifier((NetworkSpecifier) null);
|
ncBuilder.setNetworkSpecifier(null);
|
||||||
networkRequestBuilder.removeTransportType(TRANSPORT_CELLULAR);
|
ncBuilder.removeTransportType(TRANSPORT_CELLULAR);
|
||||||
networkRequestBuilder.addTransportType(TRANSPORT_WIFI);
|
ncBuilder.addTransportType(TRANSPORT_WIFI);
|
||||||
networkRequestBuilder.setNetworkSpecifier(new TelephonyNetworkSpecifier(0));
|
ncBuilder.setNetworkSpecifier(new TelephonyNetworkSpecifier(0));
|
||||||
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
assertFalse(mCarrierPrivilegeAuthenticator.hasCarrierPrivilegeForNetworkCapabilities(
|
||||||
mCarrierConfigPkgUid, networkRequestBuilder.build().networkCapabilities));
|
mCarrierConfigPkgUid, ncBuilder.build()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user