mirror of
https://github.com/ProtonMail/protoncore_android.git
synced 2026-05-15 09:50:41 +00:00
fix(account-manager): Fixed disableCredentialLessAccounts (filter Ready accounts).
This commit is contained in:
+1
-1
@@ -227,7 +227,7 @@ class AccountManagerImpl @Inject constructor(
|
||||
|
||||
private suspend fun disableCredentialLessAccounts(readyUserId: UserId) {
|
||||
val isReadyUserCredentialLess = userManager.getUser(readyUserId).isCredentialLess()
|
||||
accountRepository.getAccounts().first().forEach { account ->
|
||||
accountRepository.getAccounts().first().filter { it.state == Ready }.forEach { account ->
|
||||
val user = userManager.getUser(account.userId)
|
||||
when {
|
||||
user.userId == readyUserId -> Unit // Ignore self.
|
||||
|
||||
+23
-5
@@ -50,6 +50,7 @@ class AccountManagerImplTest {
|
||||
private val userId1 = UserId("user1")
|
||||
private val userId2 = UserId("user2")
|
||||
private val userId3 = UserId("user3")
|
||||
private val userId4 = UserId("user4")
|
||||
|
||||
private val user1 = mockk<User> {
|
||||
every { this@mockk.userId } returns userId1
|
||||
@@ -63,6 +64,10 @@ class AccountManagerImplTest {
|
||||
every { this@mockk.userId } returns userId3
|
||||
every { this@mockk.type } returns Type.CredentialLess
|
||||
}
|
||||
private val user4 = mockk<User> {
|
||||
every { this@mockk.userId } returns userId4
|
||||
every { this@mockk.type } returns Type.CredentialLess
|
||||
}
|
||||
|
||||
private val session1 = Session.Authenticated(
|
||||
userId = userId1,
|
||||
@@ -112,6 +117,15 @@ class AccountManagerImplTest {
|
||||
sessionState = SessionState.Authenticated,
|
||||
details = AccountDetails(null, null)
|
||||
)
|
||||
private val account4 = Account(
|
||||
userId = userId4,
|
||||
username = null,
|
||||
email = null,
|
||||
state = AccountState.Disabled,
|
||||
sessionId = null,
|
||||
sessionState = null,
|
||||
details = AccountDetails(null, null)
|
||||
)
|
||||
|
||||
private val mocks = RepositoryMocks(account1, session1)
|
||||
|
||||
@@ -133,6 +147,7 @@ class AccountManagerImplTest {
|
||||
coEvery { mocks.userManager.getUser(userId1) } returns user1
|
||||
coEvery { mocks.userManager.getUser(userId2) } returns user2
|
||||
coEvery { mocks.userManager.getUser(userId3) } returns user3
|
||||
coEvery { mocks.userManager.getUser(userId4) } returns user4
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -278,23 +293,26 @@ class AccountManagerImplTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `on handleAccountReady with existing credentialLess`() = runTest {
|
||||
fun `on handleAccountReady with 1 existing credentialLess`() = runTest {
|
||||
mocks.setupAccountRepository(listOf(account2), listOf(session2))
|
||||
mocks.setupAuthRepository()
|
||||
|
||||
accountManager.handleAccountReady(account1.userId)
|
||||
|
||||
coVerify(exactly = 1) { accountManager.disableAccount(userId2, keepSession = true) }
|
||||
coVerify(exactly = 0) { accountManager.disableAccount(userId1, keepSession = any()) } // Self / Non-CredLess
|
||||
coVerify(exactly = 1) { accountManager.disableAccount(userId2, keepSession = true) } // Existing Ready
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `on handleAccountReady with credentialLess`() = runTest {
|
||||
mocks.setupAccountRepository(listOf(account2, account3), listOf(session2, session3))
|
||||
fun `on handleAccountReady with self + 2 existing credentialLess`() = runTest {
|
||||
mocks.setupAccountRepository(listOf(account2, account3, account4), listOf(session2, session3))
|
||||
mocks.setupAuthRepository()
|
||||
|
||||
accountManager.handleAccountReady(account3.userId)
|
||||
|
||||
coVerify(exactly = 1) { accountManager.disableAccount(userId2, keepSession = false) }
|
||||
coVerify(exactly = 1) { accountManager.disableAccount(userId2, keepSession = false) } // Ready
|
||||
coVerify(exactly = 0) { accountManager.disableAccount(userId3, keepSession = any()) } // Self / CredLess
|
||||
coVerify(exactly = 0) { accountManager.disableAccount(userId4, keepSession = any()) } // Disabled
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user