diff options
Diffstat (limited to 'tests/telephonytests/src/com/android/internal/telephony/TelephonyPermissionsTest.java')
-rw-r--r-- | tests/telephonytests/src/com/android/internal/telephony/TelephonyPermissionsTest.java | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/tests/telephonytests/src/com/android/internal/telephony/TelephonyPermissionsTest.java b/tests/telephonytests/src/com/android/internal/telephony/TelephonyPermissionsTest.java index a053c56131..ad66b550c4 100644 --- a/tests/telephonytests/src/com/android/internal/telephony/TelephonyPermissionsTest.java +++ b/tests/telephonytests/src/com/android/internal/telephony/TelephonyPermissionsTest.java @@ -48,6 +48,7 @@ import android.test.mock.MockContentProvider; import android.test.mock.MockContentResolver; import android.test.suitebuilder.annotation.SmallTest; +import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.util.test.FakeSettingsProvider; import com.android.server.pm.permission.LegacyPermissionManagerService; @@ -57,7 +58,6 @@ import org.junit.Test; import java.lang.reflect.Field; import java.util.Map; - @SmallTest public class TelephonyPermissionsTest { @@ -71,6 +71,7 @@ public class TelephonyPermissionsTest { // Mocked classes private Context mMockContext; + private FeatureFlags mMockFeatureFlag; private AppOpsManager mMockAppOps; private SubscriptionManager mMockSubscriptionManager; private ITelephony mMockTelephony; @@ -84,10 +85,12 @@ public class TelephonyPermissionsTest { private MockContentResolver mMockContentResolver; private FakeSettingsConfigProvider mFakeSettingsConfigProvider; + private FeatureFlags mRealFeatureFlagToBeRestored; @Before public void setUp() throws Exception { mMockContext = mock(Context.class); + mMockFeatureFlag = mock(FeatureFlags.class); mMockAppOps = mock(AppOpsManager.class); mMockSubscriptionManager = mock(SubscriptionManager.class); mMockTelephony = mock(ITelephony.class); @@ -129,13 +132,17 @@ public class TelephonyPermissionsTest { .thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS); when(mMockContext.checkPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, PID, UID)).thenReturn(PackageManager.PERMISSION_DENIED); + + replaceFeatureFlag(mMockFeatureFlag); setTelephonyMockAsService(); } @After - public void tearDown() { + public void tearDown() throws Exception { + replaceFeatureFlag(mRealFeatureFlagToBeRestored); mMockContentResolver = null; mFakeSettingsConfigProvider = null; + mRealFeatureFlagToBeRestored = null; } @Test @@ -540,6 +547,30 @@ public class TelephonyPermissionsTest { UserHandle.SYSTEM, "911")); } + @Test + public void testCheckSubscriptionAssociatedWithUser_badSub_flag_enabled() { + doReturn(true).when(mMockFeatureFlag).rejectBadSubIdInteraction(); + + doThrow(new IllegalArgumentException("has no records on device")) + .when(mMockSubscriptionManager).isSubscriptionAssociatedWithUser(SUB_ID, + UserHandle.SYSTEM); + assertFalse(TelephonyPermissions.checkSubscriptionAssociatedWithUser(mMockContext, SUB_ID, + UserHandle.SYSTEM)); + } + + @Test + public void testCheckSubscriptionAssociatedWithUser_badSub_flag_disabled() { + doReturn(false).when(mMockFeatureFlag).rejectBadSubIdInteraction(); + + doThrow(new IllegalArgumentException("No records found for sub")) + .when(mMockSubscriptionManager).isSubscriptionAssociatedWithUser(SUB_ID, + UserHandle.SYSTEM); + assertTrue(TelephonyPermissions.checkSubscriptionAssociatedWithUser(mMockContext, SUB_ID, + UserHandle.SYSTEM)); + assertTrue(TelephonyPermissions.checkSubscriptionAssociatedWithUser(mMockContext, + SubscriptionManager.INVALID_SUBSCRIPTION_ID, UserHandle.SYSTEM)); + } + // Put mMockTelephony into service cache so that TELEPHONY_SUPPLIER will get it. private void setTelephonyMockAsService() throws Exception { when(mMockTelephonyBinder.queryLocalInterface(anyString())).thenReturn(mMockTelephony); @@ -630,4 +661,12 @@ public class TelephonyPermissionsTest { field.set(providerHolder, iContentProvider); } + private synchronized void replaceFeatureFlag(final FeatureFlags newValue) + throws Exception { + Field field = TelephonyPermissions.class.getDeclaredField("sFeatureFlag"); + field.setAccessible(true); + + mRealFeatureFlagToBeRestored = (FeatureFlags) field.get(null); + field.set(null, newValue); + } } |