Test if VPN app can grant ACTIVATE_PLATFORM_VPN with CONTROL_VPN

Bug: 232051081
Test: atest FrameworksNetTests:VpnTest
Change-Id: I0580baca69df6a00d59f4a387ec9b357f6c988ab
This commit is contained in:
lucaslin
2022-07-01 10:44:02 +08:00
parent 57852487b8
commit 31dcf69b74

View File

@@ -928,6 +928,31 @@ public class VpnTest {
AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN, AppOpsManager.OPSTR_ACTIVATE_VPN);
}
private void setAppOpsPermission() {
doAnswer(invocation -> {
when(mAppOps.noteOpNoThrow(AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN,
Process.myUid(), TEST_VPN_PKG,
null /* attributionTag */, null /* message */))
.thenReturn(AppOpsManager.MODE_ALLOWED);
return null;
}).when(mAppOps).setMode(
eq(AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN),
eq(Process.myUid()),
eq(TEST_VPN_PKG),
eq(AppOpsManager.MODE_ALLOWED));
}
@Test
public void testProvisionVpnProfileNotPreconsented_withControlVpnPermission() throws Exception {
setAppOpsPermission();
doReturn(PERMISSION_GRANTED).when(mContext).checkCallingOrSelfPermission(CONTROL_VPN);
final Vpn vpn = createVpnAndSetupUidChecks();
// ACTIVATE_PLATFORM_VPN will be granted if VPN app has CONTROL_VPN permission.
checkProvisionVpnProfile(vpn, true /* expectedResult */,
AppOpsManager.OPSTR_ACTIVATE_PLATFORM_VPN);
}
@Test
public void testProvisionVpnProfileVpnServicePreconsented() throws Exception {
final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OPSTR_ACTIVATE_VPN);