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

Commit 0cb9a299 authored by Xiang Wang's avatar Xiang Wang
Browse files

Fix broken unit tests due to permission check and typo

The permission check was migrated to AIDL annotations in ag/17544928.
The permission denied case will be verified in CTS test in ag/19759771.

Bug: b/243854920
Test: atest GameServiceControllerTest GameServiceProviderInstanceImplTest
Change-Id: Ia603d4db14f97d2c982fea2ecdec2744214bbb48
parent 21e83a20
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -258,7 +258,7 @@ public final class GameServiceControllerTest {
                                PROVIDER_A_SERVICE_A,
                                PROVIDER_A_SERVICE_C));
        FakeGameServiceProviderInstance instanceB =
                seedConfigurationForUser(USER_10, configurationA);
                seedConfigurationForUser(USER_10, configurationB);
        Intent intent = new Intent();
        intent.setData(Uri.parse("package:" + PROVIDER_A_PACKAGE_NAME));
        broadcastReceiverArgumentCaptor.getValue().onReceive(mMockContext, intent);
+0 −99
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import static com.google.common.truth.Truth.assertThat;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -36,7 +35,6 @@ import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.never;

import android.Manifest;
import android.annotation.Nullable;
import android.app.ActivityManager.RunningTaskInfo;
import android.app.ActivityManagerInternal;
@@ -98,7 +96,6 @@ import org.mockito.quality.Strictness;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Objects;
import java.util.function.Consumer;


@@ -361,7 +358,6 @@ public final class GameServiceProviderInstanceImplTest {
            throws Exception {
        mGameServiceProviderInstance.start();

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        assertThat(mFakeGameSessionService.getCapturedCreateInvocations()).isEmpty();
@@ -383,7 +379,6 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSessionService.CapturedCreateInvocation capturedCreateInvocation =
@@ -398,7 +393,6 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();
        dispatchTaskCreated(10, GAME_A_MAIN_ACTIVITY);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        assertThat(mFakeGameSessionService.getCapturedCreateInvocations()).isEmpty();
@@ -408,7 +402,6 @@ public final class GameServiceProviderInstanceImplTest {
    public void gameTaskStartedAndSessionRequested_createsGameSession() throws Exception {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -426,9 +419,7 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        CreateGameSessionRequest expectedCreateGameSessionRequest = new CreateGameSessionRequest(10,
@@ -442,7 +433,6 @@ public final class GameServiceProviderInstanceImplTest {
    public void gameSessionSuccessfullyCreated_createsTaskOverlay() throws Exception {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -462,7 +452,6 @@ public final class GameServiceProviderInstanceImplTest {
        startTask(10, GAME_A_MAIN_ACTIVITY);
        startProcessForPackage(gameProcessId, GAME_A_PACKAGE);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -488,7 +477,6 @@ public final class GameServiceProviderInstanceImplTest {
        startTask(11, GAME_A_MAIN_ACTIVITY);
        startProcessForPackage(gameProcessId, GAME_A_PACKAGE);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);
        mFakeGameService.requestCreateGameSession(11);

@@ -522,7 +510,6 @@ public final class GameServiceProviderInstanceImplTest {
        startProcessForPackage(firstGameProcessId, GAME_A_PACKAGE);
        startProcessForPackage(secondGameProcessId, GAME_A_PACKAGE);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -551,7 +538,6 @@ public final class GameServiceProviderInstanceImplTest {
        startTask(10, GAME_A_MAIN_ACTIVITY);
        startProcessForPackage(firstGameProcessId, GAME_A_PACKAGE);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -583,7 +569,6 @@ public final class GameServiceProviderInstanceImplTest {
        startTask(11, GAME_A_MAIN_ACTIVITY);
        startProcessForPackage(firstGameProcessId, GAME_A_PACKAGE);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);

        mFakeGameService.requestCreateGameSession(10);
        mFakeGameService.requestCreateGameSession(11);
@@ -624,7 +609,6 @@ public final class GameServiceProviderInstanceImplTest {
        startTask(10, GAME_A_MAIN_ACTIVITY);
        startProcessForPackage(gameProcessId, GAME_A_PACKAGE);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);

        // No game session should be created.
        assertThat(mFakeGameSessionService.getCapturedCreateInvocations()).isEmpty();
@@ -636,7 +620,6 @@ public final class GameServiceProviderInstanceImplTest {

        startTask(10, GAME_A_MAIN_ACTIVITY);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -677,7 +660,6 @@ public final class GameServiceProviderInstanceImplTest {
    public void systemBarsTransientShownDueToGesture_hasGameSession_propagatesToGameSession() {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -699,7 +681,6 @@ public final class GameServiceProviderInstanceImplTest {
    public void systemBarsTransientShownButNotGesture_hasGameSession_notPropagatedToGameSession() {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -721,7 +702,6 @@ public final class GameServiceProviderInstanceImplTest {
    public void gameTaskFocused_propagatedToGameSession() throws Exception {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -747,7 +727,6 @@ public final class GameServiceProviderInstanceImplTest {

        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -764,7 +743,6 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        dispatchTaskRemoved(10);
@@ -782,7 +760,6 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -800,7 +777,6 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -830,7 +806,6 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -851,7 +826,6 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -879,7 +853,6 @@ public final class GameServiceProviderInstanceImplTest {
        startTask(10, GAME_A_MAIN_ACTIVITY);
        startTask(11, GAME_A_MAIN_ACTIVITY);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -897,7 +870,6 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -925,7 +897,6 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -955,7 +926,6 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -988,20 +958,11 @@ public final class GameServiceProviderInstanceImplTest {
        assertThat(mFakeGameSessionServiceConnector.getIsConnected()).isTrue();
    }

    @Test
    public void createGameSession_failurePermissionDenied() throws Exception {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionDenied(Manifest.permission.MANAGE_GAME_ACTIVITY);
        assertThrows(SecurityException.class, () -> mFakeGameService.requestCreateGameSession(10));
    }

    @Test
    public void gameSessionServiceDies_severalActiveGameSessions_destroysGameSessions() {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -1030,7 +991,6 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -1058,7 +1018,6 @@ public final class GameServiceProviderInstanceImplTest {
    public void takeScreenshot_failureNoBitmapCaptured() throws Exception {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -1093,7 +1052,6 @@ public final class GameServiceProviderInstanceImplTest {
                any(), any(), any(), anyInt(), anyInt(), any(), anyInt(), any(), any());
        mGameServiceProviderInstance.start();
        startTask(taskId, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(taskId);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -1113,7 +1071,6 @@ public final class GameServiceProviderInstanceImplTest {

    @Test
    public void restartGame_taskIdAssociatedWithGame_restartsTargetGame() throws Exception {
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        Intent launchIntent = new Intent("com.test.ACTION_LAUNCH_GAME_PACKAGE")
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        when(mMockPackageManager.getLaunchIntentForPackage(GAME_A_PACKAGE))
@@ -1122,7 +1079,6 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -1148,11 +1104,9 @@ public final class GameServiceProviderInstanceImplTest {

    @Test
    public void restartGame_taskIdNotAssociatedWithGame_noOp() throws Exception {
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -1170,21 +1124,6 @@ public final class GameServiceProviderInstanceImplTest {
                .restartTaskActivityProcessIfVisible(anyInt(), anyString());
    }

    @Test
    public void restartGame_failurePermissionDenied() throws Exception {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);
        IGameSessionController gameSessionController = Objects.requireNonNull(getOnlyElement(
                mFakeGameSessionService.getCapturedCreateInvocations())).mGameSessionController;
        mockPermissionDenied(Manifest.permission.MANAGE_GAME_ACTIVITY);
        assertThrows(SecurityException.class,
                () -> gameSessionController.restartGame(10));
        verify(mActivityTaskManagerInternal, never())
                .restartTaskActivityProcessIfVisible(anyInt(), anyString());
    }

    private void startTask(int taskId, ComponentName componentName) {
        addRunningTaskInfo(taskId, componentName);

@@ -1261,14 +1200,6 @@ public final class GameServiceProviderInstanceImplTest {
        }
    }

    private void mockPermissionGranted(String permission) {
        mMockContext.setPermission(permission, PackageManager.PERMISSION_GRANTED);
    }

    private void mockPermissionDenied(String permission) {
        mMockContext.setPermission(permission, PackageManager.PERMISSION_DENIED);
    }

    private void dispatchTaskSystemBarsEvent(
            ThrowingConsumer<TaskSystemBarsListener> taskSystemBarsListenerConsumer) {
        for (TaskSystemBarsListener listener : mTaskSystemBarsListeners) {
@@ -1409,42 +1340,12 @@ public final class GameServiceProviderInstanceImplTest {
    }

    private final class MockContext extends ContextWrapper {
        // Map of permission name -> PermissionManager.Permission_{GRANTED|DENIED} constant
        private final HashMap<String, Integer> mMockedPermissions = new HashMap<>();

        MockContext(Context base) {
            super(base);
        }

        /**
         * Mock checks for the specified permission, and have them behave as per {@code granted}.
         *
         * <p>Passing null reverts to default behavior, which does a real permission check on the
         * test package.
         *
         * @param granted One of {@link PackageManager#PERMISSION_GRANTED} or
         *                {@link PackageManager#PERMISSION_DENIED}.
         */
        public void setPermission(String permission, Integer granted) {
            mMockedPermissions.put(permission, granted);
        }

        @Override
        public PackageManager getPackageManager() {
            return mMockPackageManager;
        }

        @Override
        public void enforceCallingPermission(String permission, @Nullable String message) {
            final Integer granted = mMockedPermissions.get(permission);
            if (granted == null) {
                super.enforceCallingOrSelfPermission(permission, message);
                return;
            }

            if (!granted.equals(PackageManager.PERMISSION_GRANTED)) {
                throw new SecurityException("[Test] permission denied: " + permission);
            }
        }
    }
}