Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a4844b0 authored by Rambo Wang's avatar Rambo Wang Committed by Android (Google) Code Review
Browse files

Merge "Add unit test cases to cover utility methods" into main

parents dbafc05b 30ca1e46
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -217,3 +217,14 @@ flag {
        purpose: PURPOSE_BUGFIX
    }
}

# OWNER=rambowang TARGET=24Q4
flag {
    name: "support_phone_uid_check_for_multiuser"
    namespace: "telephony"
    description: "Check phone/system processes from UID with multiuser-aware way"
    bug:"328511085"
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}
+40 −0
Original line number Diff line number Diff line
@@ -37,9 +37,11 @@ import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Process;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.permission.LegacyPermissionManager;
import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.DeviceConfig;
import android.provider.Settings;
import android.telephony.SubscriptionManager;
@@ -50,11 +52,13 @@ import android.test.mock.MockContentResolver;
import androidx.test.filters.SmallTest;

import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.flags.Flags;
import com.android.internal.util.test.FakeSettingsProvider;
import com.android.server.pm.permission.LegacyPermissionManagerService;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;

import java.lang.reflect.Field;
@@ -71,6 +75,9 @@ public class TelephonyPermissionsTest {
    private static final String FEATURE = "com.example.feature";
    private static final String MSG = "message";

    @Rule
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    // Mocked classes
    private Context mMockContext;
    private AppOpsManager mMockAppOps;
@@ -90,6 +97,7 @@ public class TelephonyPermissionsTest {

    @Before
    public void setUp() throws Exception {
        mSetFlagsRule.enableFlags(Flags.FLAG_SUPPORT_PHONE_UID_CHECK_FOR_MULTIUSER);
        mMockContext = mock(Context.class);
        mMockAppOps = mock(AppOpsManager.class);
        mMockSubscriptionManager = mock(SubscriptionManager.class);
@@ -558,6 +566,38 @@ public class TelephonyPermissionsTest {
                UserHandle.SYSTEM));
    }

    @Test
    public void testIsSystemOrPhone_systemUser() {
        assertTrue(TelephonyPermissions.isSystemOrPhone(Process.SYSTEM_UID));
        assertTrue(TelephonyPermissions.isSystemOrPhone(Process.PHONE_UID));

        assertFalse(TelephonyPermissions.isSystemOrPhone(1002));
    }

    @Test
    public void testIsSystemOrPhone_nonSystemUser() {
        assertTrue(TelephonyPermissions.isSystemOrPhone(1001000));
        assertTrue(TelephonyPermissions.isSystemOrPhone(1001001));

        assertFalse(TelephonyPermissions.isSystemOrPhone(1001002));
    }

    @Test
    public void testIsRootOrShell_systemUser() {
        assertTrue(TelephonyPermissions.isRootOrShell(Process.ROOT_UID));
        assertTrue(TelephonyPermissions.isRootOrShell(Process.SHELL_UID));

        assertFalse(TelephonyPermissions.isRootOrShell(1002));
    }

    @Test
    public void testIsRootOrShell_nonSystemUser() {
        assertTrue(TelephonyPermissions.isRootOrShell(1000000));
        assertTrue(TelephonyPermissions.isRootOrShell(1002000));

        assertFalse(TelephonyPermissions.isRootOrShell(1001002));
    }

    // Put mMockTelephony into service cache so that TELEPHONY_SUPPLIER will get it.
    private void setTelephonyMockAsService() throws Exception {
        when(mMockTelephonyBinder.queryLocalInterface(anyString())).thenReturn(mMockTelephony);