Remove ConnectivityServiceTest signature perms use
To allow unit tests to run without platform certificates, remove signature permission usage in ConnectivityServiceTest. This mocks permission checks done in ConnectivityService for which the test assumed that the permission was held, and mocks calls to BatteryStatsManager. Calls to ActivityManagerService (through PendingIntent) are done with shell permissions as the test uses real PendingIntent mechanics. Bug: 187935317 Test: atest FrameworksNetTests:ConnectivityServiceTest Change-Id: I80c5cae5fcd3d40be55d1a79a93d614e665fbbf4
This commit is contained in:
@@ -54,7 +54,6 @@ android_test {
|
|||||||
],
|
],
|
||||||
platform_apis: true,
|
platform_apis: true,
|
||||||
test_suites: ["device-tests"],
|
test_suites: ["device-tests"],
|
||||||
certificate: "platform",
|
|
||||||
jarjar_rules: "jarjar-rules.txt",
|
jarjar_rules: "jarjar-rules.txt",
|
||||||
static_libs: [
|
static_libs: [
|
||||||
"androidx.test.rules",
|
"androidx.test.rules",
|
||||||
|
|||||||
@@ -18,10 +18,14 @@ package com.android.server;
|
|||||||
|
|
||||||
import static android.Manifest.permission.CHANGE_NETWORK_STATE;
|
import static android.Manifest.permission.CHANGE_NETWORK_STATE;
|
||||||
import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
|
import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
|
||||||
|
import static android.Manifest.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE;
|
||||||
import static android.Manifest.permission.DUMP;
|
import static android.Manifest.permission.DUMP;
|
||||||
|
import static android.Manifest.permission.GET_INTENT_SENDER_INTENT;
|
||||||
import static android.Manifest.permission.LOCAL_MAC_ADDRESS;
|
import static android.Manifest.permission.LOCAL_MAC_ADDRESS;
|
||||||
import static android.Manifest.permission.NETWORK_FACTORY;
|
import static android.Manifest.permission.NETWORK_FACTORY;
|
||||||
import static android.Manifest.permission.NETWORK_SETTINGS;
|
import static android.Manifest.permission.NETWORK_SETTINGS;
|
||||||
|
import static android.Manifest.permission.NETWORK_STACK;
|
||||||
|
import static android.Manifest.permission.PACKET_KEEPALIVE_OFFLOAD;
|
||||||
import static android.app.PendingIntent.FLAG_IMMUTABLE;
|
import static android.app.PendingIntent.FLAG_IMMUTABLE;
|
||||||
import static android.content.Intent.ACTION_PACKAGE_ADDED;
|
import static android.content.Intent.ACTION_PACKAGE_ADDED;
|
||||||
import static android.content.Intent.ACTION_PACKAGE_REMOVED;
|
import static android.content.Intent.ACTION_PACKAGE_REMOVED;
|
||||||
@@ -130,6 +134,7 @@ import static com.android.testutils.MiscAsserts.assertLength;
|
|||||||
import static com.android.testutils.MiscAsserts.assertRunsInAtMost;
|
import static com.android.testutils.MiscAsserts.assertRunsInAtMost;
|
||||||
import static com.android.testutils.MiscAsserts.assertSameElements;
|
import static com.android.testutils.MiscAsserts.assertSameElements;
|
||||||
import static com.android.testutils.MiscAsserts.assertThrows;
|
import static com.android.testutils.MiscAsserts.assertThrows;
|
||||||
|
import static com.android.testutils.TestPermissionUtil.runAsShell;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
@@ -255,6 +260,7 @@ import android.net.shared.NetworkMonitorUtils;
|
|||||||
import android.net.shared.PrivateDnsConfig;
|
import android.net.shared.PrivateDnsConfig;
|
||||||
import android.net.util.MultinetworkPolicyTracker;
|
import android.net.util.MultinetworkPolicyTracker;
|
||||||
import android.os.BadParcelableException;
|
import android.os.BadParcelableException;
|
||||||
|
import android.os.BatteryStatsManager;
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -462,6 +468,7 @@ public class ConnectivityServiceTest {
|
|||||||
@Mock DeviceIdleInternal mDeviceIdleInternal;
|
@Mock DeviceIdleInternal mDeviceIdleInternal;
|
||||||
@Mock INetworkManagementService mNetworkManagementService;
|
@Mock INetworkManagementService mNetworkManagementService;
|
||||||
@Mock NetworkStatsManager mStatsManager;
|
@Mock NetworkStatsManager mStatsManager;
|
||||||
|
@Mock BatteryStatsManager mBatteryStatsManager;
|
||||||
@Mock IDnsResolver mMockDnsResolver;
|
@Mock IDnsResolver mMockDnsResolver;
|
||||||
@Mock INetd mMockNetd;
|
@Mock INetd mMockNetd;
|
||||||
@Mock NetworkStackClientBase mNetworkStack;
|
@Mock NetworkStackClientBase mNetworkStack;
|
||||||
@@ -572,6 +579,7 @@ public class ConnectivityServiceTest {
|
|||||||
if (Context.NETWORK_POLICY_SERVICE.equals(name)) return mNetworkPolicyManager;
|
if (Context.NETWORK_POLICY_SERVICE.equals(name)) return mNetworkPolicyManager;
|
||||||
if (Context.SYSTEM_CONFIG_SERVICE.equals(name)) return mSystemConfigManager;
|
if (Context.SYSTEM_CONFIG_SERVICE.equals(name)) return mSystemConfigManager;
|
||||||
if (Context.NETWORK_STATS_SERVICE.equals(name)) return mStatsManager;
|
if (Context.NETWORK_STATS_SERVICE.equals(name)) return mStatsManager;
|
||||||
|
if (Context.BATTERY_STATS_SERVICE.equals(name)) return mBatteryStatsManager;
|
||||||
return super.getSystemService(name);
|
return super.getSystemService(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -652,6 +660,13 @@ public class ConnectivityServiceTest {
|
|||||||
public void setPermission(String permission, Integer granted) {
|
public void setPermission(String permission, Integer granted) {
|
||||||
mMockedPermissions.put(permission, granted);
|
mMockedPermissions.put(permission, granted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Intent registerReceiverForAllUsers(@Nullable BroadcastReceiver receiver,
|
||||||
|
@NonNull IntentFilter filter, @Nullable String broadcastPermission,
|
||||||
|
@Nullable Handler scheduler) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void waitForIdle() {
|
private void waitForIdle() {
|
||||||
@@ -1201,7 +1216,22 @@ public class ConnectivityServiceTest {
|
|||||||
return mDeviceIdleInternal;
|
return mDeviceIdleInternal;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mNetworkManagementService, mMockNetd, userId, mVpnProfileStore);
|
mNetworkManagementService, mMockNetd, userId, mVpnProfileStore,
|
||||||
|
new SystemServices(mServiceContext) {
|
||||||
|
@Override
|
||||||
|
public String settingsSecureGetStringForUser(String key, int userId) {
|
||||||
|
switch (key) {
|
||||||
|
// Settings keys not marked as @Readable are not readable from
|
||||||
|
// non-privileged apps, unless marked as testOnly=true
|
||||||
|
// (atest refuses to install testOnly=true apps), even if mocked
|
||||||
|
// in the content provider.
|
||||||
|
case Settings.Secure.ALWAYS_ON_VPN_APP:
|
||||||
|
return null;
|
||||||
|
default:
|
||||||
|
return super.settingsSecureGetStringForUser(key, userId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, new Ikev2SessionCreator());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUids(Set<UidRange> uids) {
|
public void setUids(Set<UidRange> uids) {
|
||||||
@@ -1579,6 +1609,11 @@ public class ConnectivityServiceTest {
|
|||||||
mServiceContext = new MockContext(InstrumentationRegistry.getContext(),
|
mServiceContext = new MockContext(InstrumentationRegistry.getContext(),
|
||||||
new FakeSettingsProvider());
|
new FakeSettingsProvider());
|
||||||
mServiceContext.setUseRegisteredHandlers(true);
|
mServiceContext.setUseRegisteredHandlers(true);
|
||||||
|
mServiceContext.setPermission(NETWORK_FACTORY, PERMISSION_GRANTED);
|
||||||
|
mServiceContext.setPermission(NETWORK_STACK, PERMISSION_GRANTED);
|
||||||
|
mServiceContext.setPermission(CONTROL_OEM_PAID_NETWORK_PREFERENCE, PERMISSION_GRANTED);
|
||||||
|
mServiceContext.setPermission(PACKET_KEEPALIVE_OFFLOAD, PERMISSION_GRANTED);
|
||||||
|
mServiceContext.setPermission(CONNECTIVITY_USE_RESTRICTED_NETWORKS, PERMISSION_GRANTED);
|
||||||
|
|
||||||
mAlarmManagerThread = new HandlerThread("TestAlarmManager");
|
mAlarmManagerThread = new HandlerThread("TestAlarmManager");
|
||||||
mAlarmManagerThread.start();
|
mAlarmManagerThread.start();
|
||||||
@@ -1809,6 +1844,16 @@ public class ConnectivityServiceTest {
|
|||||||
assertEmpty(mCm.getAllNetworkStateSnapshots());
|
assertEmpty(mCm.getAllNetworkStateSnapshots());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static PendingIntent wrapPendingIntent(final PendingIntent intent) {
|
||||||
|
final PendingIntent ret = spy(intent);
|
||||||
|
// intentFilterEquals requires GET_INTENT_SENDER_INTENT permission
|
||||||
|
doAnswer(inv -> {
|
||||||
|
final PendingIntent other = inv.getArgument(0);
|
||||||
|
return runAsShell(GET_INTENT_SENDER_INTENT, () -> intent.intentFilterEquals(other));
|
||||||
|
}).when(ret).intentFilterEquals(any());
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to simplify expecting broadcasts using BroadcastInterceptingContext.
|
* Class to simplify expecting broadcasts using BroadcastInterceptingContext.
|
||||||
* Ensures that the receiver is unregistered after the expected broadcast is received. This
|
* Ensures that the receiver is unregistered after the expected broadcast is received. This
|
||||||
@@ -3276,8 +3321,8 @@ public class ConnectivityServiceTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNoMutableNetworkRequests() throws Exception {
|
public void testNoMutableNetworkRequests() throws Exception {
|
||||||
final PendingIntent pendingIntent = PendingIntent.getBroadcast(
|
final PendingIntent pendingIntent = wrapPendingIntent(PendingIntent.getBroadcast(
|
||||||
mContext, 0 /* requestCode */, new Intent("a"), FLAG_IMMUTABLE);
|
mContext, 0 /* requestCode */, new Intent("a"), FLAG_IMMUTABLE));
|
||||||
NetworkRequest request1 = new NetworkRequest.Builder()
|
NetworkRequest request1 = new NetworkRequest.Builder()
|
||||||
.addCapability(NET_CAPABILITY_VALIDATED)
|
.addCapability(NET_CAPABILITY_VALIDATED)
|
||||||
.build();
|
.build();
|
||||||
@@ -4121,16 +4166,16 @@ public class ConnectivityServiceTest {
|
|||||||
mCm.registerNetworkCallback(r, new NetworkCallback()));
|
mCm.registerNetworkCallback(r, new NetworkCallback()));
|
||||||
|
|
||||||
assertThrows(SecurityException.class, () ->
|
assertThrows(SecurityException.class, () ->
|
||||||
mCm.registerNetworkCallback(r, PendingIntent.getService(
|
mCm.registerNetworkCallback(r, wrapPendingIntent(PendingIntent.getService(
|
||||||
mServiceContext, 0 /* requestCode */, new Intent(), FLAG_IMMUTABLE)));
|
mServiceContext, 0 /* requestCode */, new Intent(), FLAG_IMMUTABLE))));
|
||||||
|
|
||||||
// Requesting a Network with signal strength should get IllegalArgumentException.
|
// Requesting a Network with signal strength should get IllegalArgumentException.
|
||||||
assertThrows(IllegalArgumentException.class, () ->
|
assertThrows(IllegalArgumentException.class, () ->
|
||||||
mCm.requestNetwork(r, new NetworkCallback()));
|
mCm.requestNetwork(r, new NetworkCallback()));
|
||||||
|
|
||||||
assertThrows(IllegalArgumentException.class, () ->
|
assertThrows(IllegalArgumentException.class, () ->
|
||||||
mCm.requestNetwork(r, PendingIntent.getService(
|
mCm.requestNetwork(r, wrapPendingIntent(PendingIntent.getService(
|
||||||
mServiceContext, 0 /* requestCode */, new Intent(), FLAG_IMMUTABLE)));
|
mServiceContext, 0 /* requestCode */, new Intent(), FLAG_IMMUTABLE))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -5687,14 +5732,14 @@ public class ConnectivityServiceTest {
|
|||||||
}
|
}
|
||||||
j = 0;
|
j = 0;
|
||||||
while (j++ < INTENTS / 2) {
|
while (j++ < INTENTS / 2) {
|
||||||
final PendingIntent pi = PendingIntent.getBroadcast(mContext, 0 /* requestCode */,
|
final PendingIntent pi = wrapPendingIntent(PendingIntent.getBroadcast(mContext,
|
||||||
new Intent("a" + j), FLAG_IMMUTABLE);
|
0 /* requestCode */, new Intent("a" + j), FLAG_IMMUTABLE));
|
||||||
mCm.requestNetwork(networkRequest, pi);
|
mCm.requestNetwork(networkRequest, pi);
|
||||||
registered.add(pi);
|
registered.add(pi);
|
||||||
}
|
}
|
||||||
while (j++ < INTENTS) {
|
while (j++ < INTENTS) {
|
||||||
final PendingIntent pi = PendingIntent.getBroadcast(mContext, 0 /* requestCode */,
|
final PendingIntent pi = wrapPendingIntent(PendingIntent.getBroadcast(mContext,
|
||||||
new Intent("b" + j), FLAG_IMMUTABLE);
|
0 /* requestCode */, new Intent("b" + j), FLAG_IMMUTABLE));
|
||||||
mCm.registerNetworkCallback(networkRequest, pi);
|
mCm.registerNetworkCallback(networkRequest, pi);
|
||||||
registered.add(pi);
|
registered.add(pi);
|
||||||
}
|
}
|
||||||
@@ -5708,13 +5753,13 @@ public class ConnectivityServiceTest {
|
|||||||
);
|
);
|
||||||
assertThrows(TooManyRequestsException.class, () ->
|
assertThrows(TooManyRequestsException.class, () ->
|
||||||
mCm.requestNetwork(networkRequest,
|
mCm.requestNetwork(networkRequest,
|
||||||
PendingIntent.getBroadcast(mContext, 0 /* requestCode */,
|
wrapPendingIntent(PendingIntent.getBroadcast(mContext, 0 /* requestCode */,
|
||||||
new Intent("c"), FLAG_IMMUTABLE))
|
new Intent("c"), FLAG_IMMUTABLE)))
|
||||||
);
|
);
|
||||||
assertThrows(TooManyRequestsException.class, () ->
|
assertThrows(TooManyRequestsException.class, () ->
|
||||||
mCm.registerNetworkCallback(networkRequest,
|
mCm.registerNetworkCallback(networkRequest,
|
||||||
PendingIntent.getBroadcast(mContext, 0 /* requestCode */,
|
wrapPendingIntent(PendingIntent.getBroadcast(mContext, 0 /* requestCode */,
|
||||||
new Intent("d"), FLAG_IMMUTABLE))
|
new Intent("d"), FLAG_IMMUTABLE)))
|
||||||
);
|
);
|
||||||
|
|
||||||
// The system gets another SYSTEM_ONLY_MAX_REQUESTS slots.
|
// The system gets another SYSTEM_ONLY_MAX_REQUESTS slots.
|
||||||
@@ -5794,16 +5839,16 @@ public class ConnectivityServiceTest {
|
|||||||
waitForIdle();
|
waitForIdle();
|
||||||
|
|
||||||
for (int i = 0; i < MAX_REQUESTS; i++) {
|
for (int i = 0; i < MAX_REQUESTS; i++) {
|
||||||
final PendingIntent pendingIntent = PendingIntent.getBroadcast(
|
final PendingIntent pendingIntent = wrapPendingIntent(PendingIntent.getBroadcast(
|
||||||
mContext, 0 /* requestCode */, new Intent("e" + i), FLAG_IMMUTABLE);
|
mContext, 0 /* requestCode */, new Intent("e" + i), FLAG_IMMUTABLE));
|
||||||
mCm.requestNetwork(networkRequest, pendingIntent);
|
mCm.requestNetwork(networkRequest, pendingIntent);
|
||||||
mCm.unregisterNetworkCallback(pendingIntent);
|
mCm.unregisterNetworkCallback(pendingIntent);
|
||||||
}
|
}
|
||||||
waitForIdle();
|
waitForIdle();
|
||||||
|
|
||||||
for (int i = 0; i < MAX_REQUESTS; i++) {
|
for (int i = 0; i < MAX_REQUESTS; i++) {
|
||||||
final PendingIntent pendingIntent = PendingIntent.getBroadcast(
|
final PendingIntent pendingIntent = wrapPendingIntent(PendingIntent.getBroadcast(
|
||||||
mContext, 0 /* requestCode */, new Intent("f" + i), FLAG_IMMUTABLE);
|
mContext, 0 /* requestCode */, new Intent("f" + i), FLAG_IMMUTABLE));
|
||||||
mCm.registerNetworkCallback(networkRequest, pendingIntent);
|
mCm.registerNetworkCallback(networkRequest, pendingIntent);
|
||||||
mCm.unregisterNetworkCallback(pendingIntent);
|
mCm.unregisterNetworkCallback(pendingIntent);
|
||||||
}
|
}
|
||||||
@@ -9205,8 +9250,7 @@ public class ConnectivityServiceTest {
|
|||||||
mServiceContext.setPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
|
mServiceContext.setPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
|
||||||
PERMISSION_DENIED);
|
PERMISSION_DENIED);
|
||||||
mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_DENIED);
|
mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_DENIED);
|
||||||
mServiceContext.setPermission(Manifest.permission.NETWORK_STACK,
|
mServiceContext.setPermission(NETWORK_STACK, PERMISSION_DENIED);
|
||||||
PERMISSION_DENIED);
|
|
||||||
mServiceContext.setPermission(Manifest.permission.NETWORK_SETUP_WIZARD,
|
mServiceContext.setPermission(Manifest.permission.NETWORK_SETUP_WIZARD,
|
||||||
PERMISSION_DENIED);
|
PERMISSION_DENIED);
|
||||||
}
|
}
|
||||||
@@ -9647,7 +9691,7 @@ public class ConnectivityServiceTest {
|
|||||||
setupConnectionOwnerUid(vpnOwnerUid, vpnType);
|
setupConnectionOwnerUid(vpnOwnerUid, vpnType);
|
||||||
|
|
||||||
// Test as VPN app
|
// Test as VPN app
|
||||||
mServiceContext.setPermission(android.Manifest.permission.NETWORK_STACK, PERMISSION_DENIED);
|
mServiceContext.setPermission(NETWORK_STACK, PERMISSION_DENIED);
|
||||||
mServiceContext.setPermission(
|
mServiceContext.setPermission(
|
||||||
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, PERMISSION_DENIED);
|
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, PERMISSION_DENIED);
|
||||||
}
|
}
|
||||||
@@ -9687,8 +9731,7 @@ public class ConnectivityServiceTest {
|
|||||||
public void testGetConnectionOwnerUidVpnServiceNetworkStackDoesNotThrow() throws Exception {
|
public void testGetConnectionOwnerUidVpnServiceNetworkStackDoesNotThrow() throws Exception {
|
||||||
final int myUid = Process.myUid();
|
final int myUid = Process.myUid();
|
||||||
setupConnectionOwnerUid(myUid, VpnManager.TYPE_VPN_SERVICE);
|
setupConnectionOwnerUid(myUid, VpnManager.TYPE_VPN_SERVICE);
|
||||||
mServiceContext.setPermission(
|
mServiceContext.setPermission(NETWORK_STACK, PERMISSION_GRANTED);
|
||||||
android.Manifest.permission.NETWORK_STACK, PERMISSION_GRANTED);
|
|
||||||
|
|
||||||
assertEquals(42, mService.getConnectionOwnerUid(getTestConnectionInfo()));
|
assertEquals(42, mService.getConnectionOwnerUid(getTestConnectionInfo()));
|
||||||
}
|
}
|
||||||
@@ -9853,8 +9896,7 @@ public class ConnectivityServiceTest {
|
|||||||
public void testCheckConnectivityDiagnosticsPermissionsNetworkStack() throws Exception {
|
public void testCheckConnectivityDiagnosticsPermissionsNetworkStack() throws Exception {
|
||||||
final NetworkAgentInfo naiWithoutUid = fakeMobileNai(new NetworkCapabilities());
|
final NetworkAgentInfo naiWithoutUid = fakeMobileNai(new NetworkCapabilities());
|
||||||
|
|
||||||
mServiceContext.setPermission(
|
mServiceContext.setPermission(NETWORK_STACK, PERMISSION_GRANTED);
|
||||||
android.Manifest.permission.NETWORK_STACK, PERMISSION_GRANTED);
|
|
||||||
assertTrue(
|
assertTrue(
|
||||||
"NetworkStack permission not applied",
|
"NetworkStack permission not applied",
|
||||||
mService.checkConnectivityDiagnosticsPermissions(
|
mService.checkConnectivityDiagnosticsPermissions(
|
||||||
@@ -9870,7 +9912,7 @@ public class ConnectivityServiceTest {
|
|||||||
nc.setAdministratorUids(new int[] {wrongUid});
|
nc.setAdministratorUids(new int[] {wrongUid});
|
||||||
final NetworkAgentInfo naiWithUid = fakeWifiNai(nc);
|
final NetworkAgentInfo naiWithUid = fakeWifiNai(nc);
|
||||||
|
|
||||||
mServiceContext.setPermission(android.Manifest.permission.NETWORK_STACK, PERMISSION_DENIED);
|
mServiceContext.setPermission(NETWORK_STACK, PERMISSION_DENIED);
|
||||||
|
|
||||||
assertFalse(
|
assertFalse(
|
||||||
"Mismatched uid/package name should not pass the location permission check",
|
"Mismatched uid/package name should not pass the location permission check",
|
||||||
@@ -9880,7 +9922,7 @@ public class ConnectivityServiceTest {
|
|||||||
|
|
||||||
private void verifyConnectivityDiagnosticsPermissionsWithNetworkAgentInfo(
|
private void verifyConnectivityDiagnosticsPermissionsWithNetworkAgentInfo(
|
||||||
NetworkAgentInfo info, boolean expectPermission) {
|
NetworkAgentInfo info, boolean expectPermission) {
|
||||||
mServiceContext.setPermission(android.Manifest.permission.NETWORK_STACK, PERMISSION_DENIED);
|
mServiceContext.setPermission(NETWORK_STACK, PERMISSION_DENIED);
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
"Unexpected ConnDiags permission",
|
"Unexpected ConnDiags permission",
|
||||||
@@ -9948,7 +9990,7 @@ public class ConnectivityServiceTest {
|
|||||||
|
|
||||||
setupLocationPermissions(Build.VERSION_CODES.Q, true, AppOpsManager.OPSTR_FINE_LOCATION,
|
setupLocationPermissions(Build.VERSION_CODES.Q, true, AppOpsManager.OPSTR_FINE_LOCATION,
|
||||||
Manifest.permission.ACCESS_FINE_LOCATION);
|
Manifest.permission.ACCESS_FINE_LOCATION);
|
||||||
mServiceContext.setPermission(android.Manifest.permission.NETWORK_STACK, PERMISSION_DENIED);
|
mServiceContext.setPermission(NETWORK_STACK, PERMISSION_DENIED);
|
||||||
|
|
||||||
assertTrue(
|
assertTrue(
|
||||||
"NetworkCapabilities administrator uid permission not applied",
|
"NetworkCapabilities administrator uid permission not applied",
|
||||||
@@ -9965,7 +10007,7 @@ public class ConnectivityServiceTest {
|
|||||||
|
|
||||||
setupLocationPermissions(Build.VERSION_CODES.Q, true, AppOpsManager.OPSTR_FINE_LOCATION,
|
setupLocationPermissions(Build.VERSION_CODES.Q, true, AppOpsManager.OPSTR_FINE_LOCATION,
|
||||||
Manifest.permission.ACCESS_FINE_LOCATION);
|
Manifest.permission.ACCESS_FINE_LOCATION);
|
||||||
mServiceContext.setPermission(android.Manifest.permission.NETWORK_STACK, PERMISSION_DENIED);
|
mServiceContext.setPermission(NETWORK_STACK, PERMISSION_DENIED);
|
||||||
|
|
||||||
// Use wrong pid and uid
|
// Use wrong pid and uid
|
||||||
assertFalse(
|
assertFalse(
|
||||||
@@ -9991,8 +10033,7 @@ public class ConnectivityServiceTest {
|
|||||||
final NetworkRequest request = new NetworkRequest.Builder().build();
|
final NetworkRequest request = new NetworkRequest.Builder().build();
|
||||||
when(mConnectivityDiagnosticsCallback.asBinder()).thenReturn(mIBinder);
|
when(mConnectivityDiagnosticsCallback.asBinder()).thenReturn(mIBinder);
|
||||||
|
|
||||||
mServiceContext.setPermission(
|
mServiceContext.setPermission(NETWORK_STACK, PERMISSION_GRANTED);
|
||||||
android.Manifest.permission.NETWORK_STACK, PERMISSION_GRANTED);
|
|
||||||
|
|
||||||
mService.registerConnectivityDiagnosticsCallback(
|
mService.registerConnectivityDiagnosticsCallback(
|
||||||
mConnectivityDiagnosticsCallback, request, mContext.getPackageName());
|
mConnectivityDiagnosticsCallback, request, mContext.getPackageName());
|
||||||
@@ -10011,8 +10052,7 @@ public class ConnectivityServiceTest {
|
|||||||
final NetworkRequest request = new NetworkRequest.Builder().build();
|
final NetworkRequest request = new NetworkRequest.Builder().build();
|
||||||
when(mConnectivityDiagnosticsCallback.asBinder()).thenReturn(mIBinder);
|
when(mConnectivityDiagnosticsCallback.asBinder()).thenReturn(mIBinder);
|
||||||
|
|
||||||
mServiceContext.setPermission(
|
mServiceContext.setPermission(NETWORK_STACK, PERMISSION_GRANTED);
|
||||||
android.Manifest.permission.NETWORK_STACK, PERMISSION_GRANTED);
|
|
||||||
|
|
||||||
mService.registerConnectivityDiagnosticsCallback(
|
mService.registerConnectivityDiagnosticsCallback(
|
||||||
mConnectivityDiagnosticsCallback, request, mContext.getPackageName());
|
mConnectivityDiagnosticsCallback, request, mContext.getPackageName());
|
||||||
@@ -12737,8 +12777,8 @@ public class ConnectivityServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testNetworkRequestWithSubIdsWithNetworkFactoryPermission() throws Exception {
|
public void testNetworkRequestWithSubIdsWithNetworkFactoryPermission() throws Exception {
|
||||||
mServiceContext.setPermission(NETWORK_FACTORY, PERMISSION_GRANTED);
|
mServiceContext.setPermission(NETWORK_FACTORY, PERMISSION_GRANTED);
|
||||||
final PendingIntent pendingIntent = PendingIntent.getBroadcast(
|
final PendingIntent pendingIntent = wrapPendingIntent(PendingIntent.getBroadcast(
|
||||||
mContext, 0 /* requestCode */, new Intent("a"), FLAG_IMMUTABLE);
|
mContext, 0 /* requestCode */, new Intent("a"), FLAG_IMMUTABLE));
|
||||||
final NetworkCallback networkCallback1 = new NetworkCallback();
|
final NetworkCallback networkCallback1 = new NetworkCallback();
|
||||||
final NetworkCallback networkCallback2 = new NetworkCallback();
|
final NetworkCallback networkCallback2 = new NetworkCallback();
|
||||||
|
|
||||||
@@ -12754,8 +12794,8 @@ public class ConnectivityServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testNetworkRequestWithSubIdsWithoutNetworkFactoryPermission() throws Exception {
|
public void testNetworkRequestWithSubIdsWithoutNetworkFactoryPermission() throws Exception {
|
||||||
mServiceContext.setPermission(NETWORK_FACTORY, PERMISSION_DENIED);
|
mServiceContext.setPermission(NETWORK_FACTORY, PERMISSION_DENIED);
|
||||||
final PendingIntent pendingIntent = PendingIntent.getBroadcast(
|
final PendingIntent pendingIntent = wrapPendingIntent(PendingIntent.getBroadcast(
|
||||||
mContext, 0 /* requestCode */, new Intent("a"), FLAG_IMMUTABLE);
|
mContext, 0 /* requestCode */, new Intent("a"), FLAG_IMMUTABLE));
|
||||||
|
|
||||||
final Class<SecurityException> expected = SecurityException.class;
|
final Class<SecurityException> expected = SecurityException.class;
|
||||||
assertThrows(
|
assertThrows(
|
||||||
|
|||||||
Reference in New Issue
Block a user