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

Commit d59a8912 authored by Franciszek Juras's avatar Franciszek Juras
Browse files

Add log out to system user in UserLogoutInteractor

Sign out button to keyguard's status bar should log out to
system user only - introduce isLogoutToSystemUserEnabled state flow
and logOutToSystemUser fun for that purpose.

Test: atest UserLogoutInteractorTest
Flag: EXEMPT interactor only change
Bug: 392052370
Change-Id: Ib5e6c6e168c1e4ffce7650941de63ff915815f52
parent 99c7ed08
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -116,6 +116,41 @@ class UserLogoutInteractorTest : SysuiTestCase() {
        }
    }

    @Test
    fun logOutToSystemUser_doesNothing_whenPolicyManagerLogoutIsEnabled() {
        testScope.runTest {
            val isLogoutToSystemUserEnabled by
                collectLastValue(underTest.isLogoutToSystemUserEnabled)
            val secondaryUserLogoutCount = userRepository.logOutWithPolicyManagerCallCount
            val logoutToSystemUserCount = userRepository.logOutWithUserManagerCallCount
            userRepository.setPolicyManagerLogoutEnabled(true)
            assertThat(isLogoutToSystemUserEnabled).isFalse()
            underTest.logOutToSystemUser()
            assertThat(userRepository.logOutWithPolicyManagerCallCount)
                .isEqualTo(secondaryUserLogoutCount)
            assertThat(userRepository.logOutWithUserManagerCallCount)
                .isEqualTo(logoutToSystemUserCount)
        }
    }

    @Test
    fun logOutToSystemUser_whenBothLogoutOptionsAreEnabled() {
        testScope.runTest {
            val isLogoutToSystemUserEnabled by
                collectLastValue(underTest.isLogoutToSystemUserEnabled)
            val secondaryUserLogoutCount = userRepository.logOutWithPolicyManagerCallCount
            val logoutToSystemUserCount = userRepository.logOutWithUserManagerCallCount
            userRepository.setUserManagerLogoutEnabled(true)
            userRepository.setPolicyManagerLogoutEnabled(true)
            assertThat(isLogoutToSystemUserEnabled).isTrue()
            underTest.logOutToSystemUser()
            assertThat(userRepository.logOutWithPolicyManagerCallCount)
                .isEqualTo(secondaryUserLogoutCount)
            assertThat(userRepository.logOutWithUserManagerCallCount)
                .isEqualTo(logoutToSystemUserCount + 1)
        }
    }

    companion object {
        private val USER_INFOS =
            listOf(
+10 −0
Original line number Diff line number Diff line
@@ -45,6 +45,16 @@ constructor(
            )
            .stateIn(applicationScope, SharingStarted.Eagerly, false)

    val isLogoutToSystemUserEnabled: StateFlow<Boolean> = userRepository.isUserManagerLogoutEnabled

    fun logOutToSystemUser() {
        applicationScope.launch {
            if (isLogoutToSystemUserEnabled.value) {
                userRepository.logOutWithUserManager()
            }
        }
    }

    fun logOut() {
        applicationScope.launch {
            if (userRepository.isPolicyManagerLogoutEnabled.value) {