diff options
| -rw-r--r-- | PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/KotlinUtilsTest.kt | 104 |
1 files changed, 103 insertions, 1 deletions
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/KotlinUtilsTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/KotlinUtilsTest.kt index 435f89903..8f54da579 100644 --- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/KotlinUtilsTest.kt +++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/util/KotlinUtilsTest.kt @@ -16,6 +16,15 @@ package com.android.permissioncontroller.permission.util +import android.Manifest.permission.READ_MEDIA_IMAGES +import android.Manifest.permission.READ_MEDIA_VIDEO +import android.content.Context +import android.content.Intent +import android.content.Intent.ACTION_SHOW_APP_INFO +import android.content.Intent.EXTRA_PACKAGE_NAME +import android.content.pm.ActivityInfo +import android.content.pm.PackageManager +import android.content.pm.ResolveInfo import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.ColorFilter @@ -27,7 +36,12 @@ import com.android.permissioncontroller.permission.utils.KotlinUtils import com.google.common.truth.Truth.assertThat import org.junit.Test import org.junit.runner.RunWith +import org.mockito.ArgumentMatchers.any +import org.mockito.ArgumentMatchers.anyInt +import org.mockito.Mockito.argThat +import org.mockito.Mockito.mock import kotlin.test.assertFailsWith +import org.mockito.Mockito.`when` as whenever /** * Unit tests for [KotlinUtils]. @@ -60,4 +74,92 @@ class KotlinUtilsTest { override fun setColorFilter(colorFilter: ColorFilter?) = throw UnsupportedOperationException() } -}
\ No newline at end of file + + @Test + fun getAppStoreIntent_returnsResolvedIntent() { + val installerPackage = "installer" + val installerActivity = "activity" + val appPackage = "app" + val mockContext = mock(Context::class.java) + val mockPackageManager = mock(PackageManager::class.java) + whenever(mockContext.packageManager).thenReturn(mockPackageManager) + val installerIntent = Intent(ACTION_SHOW_APP_INFO).setPackage(installerPackage) + whenever( + mockPackageManager.resolveActivity( + argThat { intent -> intent.filterEquals(installerIntent) }, /* flags= */ anyInt())) + .thenReturn(ResolveInfo().apply { + activityInfo = ActivityInfo().apply { + packageName = installerPackage + name = installerActivity + } + }) + + val intent = KotlinUtils.getAppStoreIntent(mockContext, installerPackage, appPackage) + + assertThat(intent).isNotNull() + with (intent!!) { + assertThat(action).isEqualTo(ACTION_SHOW_APP_INFO) + assertThat(component?.packageName).isEqualTo(installerPackage) + assertThat(component?.className).isEqualTo(installerActivity) + } + } + + @Test + fun getAppStoreIntent_returnsAppPackageInExtras() { + val appPackage = "app" + val mockContext = mock(Context::class.java) + val mockPackageManager = mock(PackageManager::class.java) + whenever(mockContext.packageManager).thenReturn(mockPackageManager) + whenever( + mockPackageManager.resolveActivity(any(), /* flags= */ anyInt())) + .thenReturn(ResolveInfo().apply { + activityInfo = ActivityInfo().apply { + packageName = "" + name = "" + } + }) + + val intent = KotlinUtils.getAppStoreIntent(mockContext, "com.installer", appPackage) + + assertThat(intent).isNotNull() + assertThat(intent?.extras?.getString(EXTRA_PACKAGE_NAME)).isEqualTo(appPackage) + } + + @Test + fun getAppStoreIntent_returnsNullWhenInstallerNotResolved() { + val mockContext = mock(Context::class.java) + whenever(mockContext.packageManager).thenReturn(mock(PackageManager::class.java)) + // Un-stubbed activity resolution will return null. + + assertThat(KotlinUtils.getAppStoreIntent(mockContext, "com.installer", "com.app")).isNull() + } + + @Test + fun getMimeTypeForPermissions_onlyReadMediaImages_returnsImage() { + assertThat(KotlinUtils.getMimeTypeForPermissions(listOf(READ_MEDIA_IMAGES, "read memes"))) + .isEqualTo("image/*") + } + + @Test + fun getMimeTypeForPermissions_onlyReadMediaVideo_returnsVideo() { + assertThat(KotlinUtils.getMimeTypeForPermissions(listOf("write memes", READ_MEDIA_VIDEO))) + .isEqualTo("video/*") + } + + @Test + fun getMimeTypeForPermissions_bothReadMediaPermissions_returnsNull() { + assertThat( + KotlinUtils.getMimeTypeForPermissions(listOf(READ_MEDIA_IMAGES, READ_MEDIA_VIDEO))) + .isNull() + } + + @Test + fun getMimeTypeForPermissions_noReadMediaPermissions_returnsNull() { + assertThat(KotlinUtils.getMimeTypeForPermissions(listOf("amazing permission"))).isNull() + } + + @Test + fun getMimeTypeForPermissions_emptyList_returnsNull() { + assertThat(KotlinUtils.getMimeTypeForPermissions(emptyList())).isNull() + } +} |