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

Commit 312d1498 authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Use Mockito Kotlin for SpaPrivilegedLibTests

Which has better support for Kotlin unit test.

Also specific Context.RECEIVER_NOT_EXPORTED for registerReceiverAsUser,
which is an Android U requirement.

Bug: 289155281
Test: manual - on Settings All Apps page
Test: unit test
Change-Id: I9264e7d61e4883d3db8212dbc9089924eb8e577f
parent 394d0694
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -46,7 +46,12 @@ fun DisposableBroadcastReceiverAsUser(
    LifecycleEffect(
        onStart = {
            context.registerReceiverAsUser(
                broadcastReceiver, userHandle, intentFilter, null, null
                broadcastReceiver,
                userHandle,
                intentFilter,
                null,
                null,
                Context.RECEIVER_NOT_EXPORTED,
            )
        },
        onStop = {
+21 −9
Original line number Diff line number Diff line
@@ -31,10 +31,12 @@ import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.any
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.mockito.Mockito.`when` as whenever
import org.mockito.kotlin.any
import org.mockito.kotlin.eq
import org.mockito.kotlin.isNull
import org.mockito.kotlin.whenever

@RunWith(AndroidJUnit4::class)
class DisposableBroadcastReceiverAsUserTest {
@@ -51,8 +53,16 @@ class DisposableBroadcastReceiverAsUserTest {

    @Before
    fun setUp() {
        whenever(context.registerReceiverAsUser(any(), any(), any(), any(), any()))
            .thenAnswer {
        whenever(
            context.registerReceiverAsUser(
                any(),
                eq(USER_HANDLE),
                eq(INTENT_FILTER),
                isNull(),
                isNull(),
                eq(Context.RECEIVER_NOT_EXPORTED),
            )
        ).then {
            registeredBroadcastReceiver = it.arguments[0] as BroadcastReceiver
            null
        }
@@ -62,7 +72,7 @@ class DisposableBroadcastReceiverAsUserTest {
    fun broadcastReceiver_registered() {
        composeTestRule.setContent {
            CompositionLocalProvider(LocalContext provides context) {
                DisposableBroadcastReceiverAsUser(IntentFilter(), USER_HANDLE) {}
                DisposableBroadcastReceiverAsUser(INTENT_FILTER, USER_HANDLE) {}
            }
        }

@@ -74,7 +84,7 @@ class DisposableBroadcastReceiverAsUserTest {
        var onReceiveIsCalled = false
        composeTestRule.setContent {
            CompositionLocalProvider(LocalContext provides context) {
                DisposableBroadcastReceiverAsUser(IntentFilter(), USER_HANDLE) {
                DisposableBroadcastReceiverAsUser(INTENT_FILTER, USER_HANDLE) {
                    onReceiveIsCalled = true
                }
            }
@@ -87,5 +97,7 @@ class DisposableBroadcastReceiverAsUserTest {

    private companion object {
        val USER_HANDLE: UserHandle = UserHandle.of(0)

        val INTENT_FILTER = IntentFilter()
    }
}
+19 −17
Original line number Diff line number Diff line
@@ -38,16 +38,15 @@ import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor
import org.mockito.Mock
import org.mockito.Mockito.any
import org.mockito.Mockito.anyInt
import org.mockito.Mockito.eq
import org.mockito.Mockito.verify
import org.mockito.Spy
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.mockito.Mockito.`when` as whenever
import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.eq
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever

@RunWith(AndroidJUnit4::class)
class AppListRepositoryTest {
@@ -75,7 +74,7 @@ class AppListRepositoryTest {
            .thenReturn(emptyArray())
        whenever(context.packageManager).thenReturn(packageManager)
        whenever(context.userManager).thenReturn(userManager)
        whenever(packageManager.getInstalledModules(anyInt())).thenReturn(emptyList())
        whenever(packageManager.getInstalledModules(any())).thenReturn(emptyList())
        whenever(packageManager.getHomeActivities(any())).thenAnswer {
            @Suppress("UNCHECKED_CAST")
            val resolveInfos = it.arguments[0] as MutableList<ResolveInfo>
@@ -83,7 +82,7 @@ class AppListRepositoryTest {
            null
        }
        whenever(
            packageManager.queryIntentActivitiesAsUser(any(), any<ResolveInfoFlags>(), anyInt())
            packageManager.queryIntentActivitiesAsUser(any(), any<ResolveInfoFlags>(), any<Int>())
        ).thenReturn(listOf(resolveInfoOf(packageName = IN_LAUNCHER_APP.packageName)))
        whenever(userManager.getUserInfo(ADMIN_USER_ID)).thenReturn(UserInfo().apply {
            flags = UserInfo.FLAG_ADMIN
@@ -134,13 +133,14 @@ class AppListRepositoryTest {
        )

        assertThat(appList).containsExactly(NORMAL_APP)
        val flags = ArgumentCaptor.forClass(ApplicationInfoFlags::class.java)
        verify(packageManager).getInstalledApplicationsAsUser(flags.capture(), eq(ADMIN_USER_ID))
        assertThat(flags.value.value).isEqualTo(
        argumentCaptor<ApplicationInfoFlags> {
            verify(packageManager).getInstalledApplicationsAsUser(capture(), eq(ADMIN_USER_ID))
            assertThat(firstValue.value).isEqualTo(
                PackageManager.MATCH_DISABLED_COMPONENTS or
                    PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
            )
        }
    }

    @Test
    fun loadApps_matchAnyUserForAdmin_withMatchAnyUserFlag() = runTest {
@@ -152,9 +152,11 @@ class AppListRepositoryTest {
        )

        assertThat(appList).containsExactly(NORMAL_APP)
        val flags = ArgumentCaptor.forClass(ApplicationInfoFlags::class.java)
        verify(packageManager).getInstalledApplicationsAsUser(flags.capture(), eq(ADMIN_USER_ID))
        assertThat(flags.value.value and PackageManager.MATCH_ANY_USER.toLong()).isGreaterThan(0L)
        argumentCaptor<ApplicationInfoFlags> {
            verify(packageManager).getInstalledApplicationsAsUser(capture(), eq(ADMIN_USER_ID))
            assertThat(firstValue.value and PackageManager.MATCH_ANY_USER.toLong())
                .isGreaterThan(0L)
        }
    }

    @Test
+6 −8
Original line number Diff line number Diff line
@@ -32,15 +32,13 @@ import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.any
import org.mockito.Mockito.anyInt
import org.mockito.Mockito.anyString
import org.mockito.Mockito.doNothing
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
import org.mockito.Spy
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.mockito.kotlin.any
import org.mockito.kotlin.doNothing
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever

@RunWith(AndroidJUnit4::class)
class AppOpsControllerTest {
@@ -56,8 +54,8 @@ class AppOpsControllerTest {
    fun setUp() {
        whenever(context.appOpsManager).thenReturn(appOpsManager)
        whenever(context.packageManager).thenReturn(packageManager)
        doNothing().`when`(packageManager)
                .updatePermissionFlags(anyString(), anyString(), anyInt(), anyInt(), any())
        doNothing().whenever(packageManager)
                .updatePermissionFlags(any(), any(), any(), any(), any())
    }

    @Test
+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ import org.mockito.Mock
import org.mockito.Spy
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.mockito.Mockito.`when` as whenever
import org.mockito.kotlin.whenever

@RunWith(AndroidJUnit4::class)
class AppRepositoryTest {
Loading