diff options
author | 2024-09-17 01:51:43 +0000 | |
---|---|---|
committer | 2024-09-18 22:03:54 +0000 | |
commit | 694265214d92ea6c829011c74829fd9a6b62b21b (patch) | |
tree | 1182c2217a107580fcf98ee8d424f180163f8bb5 | |
parent | 6761674e29643ed3bf2e1a2a6db546ddbc0b8c82 (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.bp | 1 | ||||
-rw-r--r-- | tests/apex/java/com/android/role/RoleUserStateTest.kt | 94 |
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" + } +} |