summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yi-an Chen <theianchen@google.com> 2024-09-17 01:51:43 +0000
committer Yi-an Chen <theianchen@google.com> 2024-09-18 22:03:54 +0000
commit694265214d92ea6c829011c74829fd9a6b62b21b (patch)
tree1182c2217a107580fcf98ee8d424f180163f8bb5
parent6761674e29643ed3bf2e1a2a6db546ddbc0b8c82 (diff)
Add RoleUserStateTest
Add unit tests for role fallback enabled state migration. LOW_COVERAGE_REASON=TEST_ONLY Fixes: 361709013 Flag: TEST_ONLY Relnote: Add unit tests for role fallback enabled state migration Test: RoleUserStateTest Change-Id: I6a46016c30432cc5a8379ec1d986483c9df62a45
-rw-r--r--tests/apex/Android.bp1
-rw-r--r--tests/apex/java/com/android/role/RoleUserStateTest.kt94
2 files changed, 95 insertions, 0 deletions
diff --git a/tests/apex/Android.bp b/tests/apex/Android.bp
index 83bf4e252..18f1bea75 100644
--- a/tests/apex/Android.bp
+++ b/tests/apex/Android.bp
@@ -27,6 +27,7 @@ android_test {
],
static_libs: [
"service-permission.impl",
+ "services.core",
"androidx.test.rules",
"androidx.test.ext.junit",
"androidx.test.ext.truth",
diff --git a/tests/apex/java/com/android/role/RoleUserStateTest.kt b/tests/apex/java/com/android/role/RoleUserStateTest.kt
new file mode 100644
index 000000000..8b0c51174
--- /dev/null
+++ b/tests/apex/java/com/android/role/RoleUserStateTest.kt
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.role
+
+import android.os.UserHandle
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.server.role.RoleServicePlatformHelper
+import com.google.common.truth.Truth.assertWithMessage
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mockito.mock
+
+@RunWith(AndroidJUnit4::class)
+class RoleUserStateTest {
+ private var roleServicePlatformHelper = mock(RoleServicePlatformHelper::class.java)
+ private var roleUserStateCallback = mock(RoleUserState.Callback::class.java)
+
+ private val userId = UserHandle.myUserId()
+ private val roleUserState =
+ RoleUserState(userId, roleServicePlatformHelper, roleUserStateCallback, false)
+
+ @Before
+ fun setUp() {
+ setUpRole(ROLE_NAME_1, true)
+ setUpRole(ROLE_NAME_2, false)
+ }
+
+ private fun setUpRole(roleName: String, fallbackEnabled: Boolean) {
+ roleUserState.addRoleName(roleName)
+ roleUserState.setFallbackEnabled(roleName, fallbackEnabled)
+ }
+
+ @Test
+ fun testUpgradeVersion_upgradeNotNeeded_remainsUnchanged() {
+ roleUserState.version = RoleUserState.VERSION_FALLBACK_STATE_MIGRATED
+ val legacyFallbackDisabledRoles = listOf(ROLE_NAME_1, ROLE_NAME_2)
+
+ roleUserState.upgradeVersion(legacyFallbackDisabledRoles)
+
+ assertRoleFallbackState(ROLE_NAME_1, roleUserState.isFallbackEnabled(ROLE_NAME_1), true)
+ assertRoleFallbackState(ROLE_NAME_2, roleUserState.isFallbackEnabled(ROLE_NAME_2), false)
+ }
+
+ @Test
+ fun testUpgradeVersion_upgradeNeeded_disabledFallbackStateMigrated() {
+ roleUserState.version = RoleUserState.VERSION_UNDEFINED
+ val legacyFallbackDisabledRoles = listOf(ROLE_NAME_1, ROLE_NAME_2)
+
+ roleUserState.upgradeVersion(legacyFallbackDisabledRoles)
+
+ assertRoleFallbackState(ROLE_NAME_1, roleUserState.isFallbackEnabled(ROLE_NAME_1), false)
+ assertRoleFallbackState(ROLE_NAME_2, roleUserState.isFallbackEnabled(ROLE_NAME_2), false)
+ }
+
+ @Test
+ fun testUpgradeVersion_upgradeNeeded_enabledFallbackStateMigrated() {
+ roleUserState.version = RoleUserState.VERSION_UNDEFINED
+ val legacyFallbackDisabledRoles = emptyList<String>()
+
+ roleUserState.upgradeVersion(legacyFallbackDisabledRoles)
+
+ assertRoleFallbackState(ROLE_NAME_1, roleUserState.isFallbackEnabled(ROLE_NAME_1), true)
+ assertRoleFallbackState(ROLE_NAME_2, roleUserState.isFallbackEnabled(ROLE_NAME_2), true)
+ }
+
+ private fun assertRoleFallbackState(roleName: String, actual: Boolean, expected: Boolean) {
+ assertWithMessage(
+ "Fallback enabled state for role: $roleName is $actual while" +
+ " is expected to be $expected"
+ )
+ .that(actual)
+ .isEqualTo(expected)
+ }
+
+ companion object {
+ private const val ROLE_NAME_1 = "ROLE_NAME_1"
+ private const val ROLE_NAME_2 = "ROLE_NAME_2"
+ }
+}