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

Commit 59c638ef authored by Sarup Dalwani's avatar Sarup Dalwani
Browse files

Mocking AdbManagerInternal for UsbHandlerTest

Mocking AdbManagerInternal for unit test cases of UsbHandlerTest.
Removing test case bootCompletedAdbEnabled as it was not performing the
expected test.

Bug: 268393886
Test: atest UsbTests
Change-Id: I684bf5feb06ee647fc838ee71e8530fe18642417
parent 54b9225b
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ android_test {
    static_libs: [
        "frameworks-base-testutils",
        "androidx.test.rules",
        "mockito-target-inline-minus-junit4",
        "mockito-target-extended-minus-junit4",
        "platform-test-annotations",
        "services.core",
        "services.net",
@@ -37,7 +37,12 @@ android_test {
        "truth-prebuilt",
        "UsbManagerTestLib",
    ],
    jni_libs: ["libdexmakerjvmtiagent"],
    jni_libs: [
        // Required for ExtendedMockito
        "libdexmakerjvmtiagent",
        "libmultiplejvmtiagentsinterferenceagent",
        "libstaticjvmtiagent",
    ],
    certificate: "platform",
    platform_apis: true,
    test_suites: ["device-tests"],
+26 −16
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@@ -27,23 +28,29 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.debug.AdbManagerInternal;
import android.debug.AdbTransportType;
import android.hardware.usb.UsbManager;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.provider.Settings;

import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;

import com.android.dx.mockito.inline.extended.ExtendedMockito;
import com.android.server.FgThread;
import com.android.server.LocalServices;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.MockitoSession;
import org.mockito.quality.Strictness;

import java.util.HashMap;
import java.util.Locale;
@@ -68,6 +75,8 @@ public class UsbHandlerTest {
    private SharedPreferences mSharedPreferences;
    @Mock
    private SharedPreferences.Editor mEditor;
    @Mock
    private AdbManagerInternal mAdbManagerInternal;

    private MockUsbHandler mUsbHandler;

@@ -83,6 +92,7 @@ public class UsbHandlerTest {

    private Map<String, String> mMockProperties;
    private Map<String, Integer> mMockGlobalSettings;
    private MockitoSession mStaticMockSession;

    private class MockUsbHandler extends UsbDeviceManager.UsbHandler {
        boolean mIsUsbTransferAllowed;
@@ -157,6 +167,10 @@ public class UsbHandlerTest {
    @Before
    public void before() {
        MockitoAnnotations.initMocks(this);
        mStaticMockSession = ExtendedMockito.mockitoSession()
                .mockStatic(LocalServices.class)
                .strictness(Strictness.WARN)
                .startMocking();
        mMockProperties = new HashMap<>();
        mMockGlobalSettings = new HashMap<>();
        when(mSharedPreferences.edit()).thenReturn(mEditor);
@@ -164,6 +178,16 @@ public class UsbHandlerTest {
        mUsbHandler = new MockUsbHandler(FgThread.get().getLooper(),
                InstrumentationRegistry.getContext(), mUsbDeviceManager, mUsbAlsaManager,
                mUsbSettingsManager, mUsbPermissionManager);

        when(LocalServices.getService(eq(AdbManagerInternal.class)))
                .thenReturn(mAdbManagerInternal);
    }

    @After
    public void tearDown() throws Exception {
        if (mStaticMockSession != null) {
            mStaticMockSession.finishMocking();
        }
    }

    @SmallTest
@@ -234,8 +258,8 @@ public class UsbHandlerTest {
        assertEquals(mUsbHandler.getEnabledFunctions(), UsbManager.FUNCTION_NONE);
        assertEquals(mMockProperties.get(UsbDeviceManager.UsbHandler
                .USB_PERSISTENT_CONFIG_PROPERTY), UsbManager.USB_FUNCTION_ADB);
        assertTrue(mUsbHandler.isAdbEnabled());

        when(mAdbManagerInternal.isAdbEnabled(eq(AdbTransportType.USB))).thenReturn(true);
        mUsbHandler.handleMessage(mUsbHandler.obtainMessage(MSG_UPDATE_STATE, 1, 1));

        assertTrue(mUsbHandler.mBroadcastedIntent.getBooleanExtra(UsbManager.USB_CONNECTED, false));
@@ -269,20 +293,6 @@ public class UsbHandlerTest {
        assertEquals(mUsbHandler.getEnabledFunctions(), UsbManager.FUNCTION_NONE);
    }

    @SmallTest
    @Test
    public void bootCompletedAdbEnabled() {
        mMockProperties.put(UsbDeviceManager.UsbHandler.USB_PERSISTENT_CONFIG_PROPERTY, "adb");
        mUsbHandler = new MockUsbHandler(FgThread.get().getLooper(),
                InstrumentationRegistry.getContext(), mUsbDeviceManager, mUsbAlsaManager,
                mUsbSettingsManager, mUsbPermissionManager);

        sendBootCompleteMessages(mUsbHandler);
        assertEquals(mUsbHandler.getEnabledFunctions(), UsbManager.FUNCTION_NONE);
        assertEquals(mMockGlobalSettings.get(Settings.Global.ADB_ENABLED).intValue(), 1);
        assertTrue(mUsbHandler.isAdbEnabled());
    }

    @SmallTest
    @Test
    public void userSwitchedDisablesMtp() {