mirror of
https://github.com/bitwarden/android.git
synced 2026-05-28 07:28:29 -05:00
Add persistence for a user's "last active time" (#601)
This commit is contained in:
@@ -16,7 +16,9 @@ import kotlinx.coroutines.test.runTest
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.encodeToJsonElement
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertFalse
|
||||
import org.junit.jupiter.api.Assertions.assertNull
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
class AuthDiskSourceTest {
|
||||
@@ -116,6 +118,63 @@ class AuthDiskSourceTest {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `getLastActiveTimeMillis should pull from SharedPreferences`() {
|
||||
val lastActiveTimeBaseKey = "bwPreferencesStorage:lastActiveTime"
|
||||
val mockUserId = "mockUserId"
|
||||
val mockLastActiveTime = 123456789L
|
||||
fakeSharedPreferences
|
||||
.edit()
|
||||
.putLong(
|
||||
"${lastActiveTimeBaseKey}_$mockUserId",
|
||||
mockLastActiveTime,
|
||||
)
|
||||
.apply()
|
||||
val actual = authDiskSource.getLastActiveTimeMillis(userId = mockUserId)
|
||||
assertEquals(
|
||||
mockLastActiveTime,
|
||||
actual,
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `storeLastActiveTimeMillis for non-null values should update SharedPreferences`() {
|
||||
val lastActiveTimeBaseKey = "bwPreferencesStorage:lastActiveTime"
|
||||
val mockUserId = "mockUserId"
|
||||
val mockLastActiveTime = 123456789L
|
||||
authDiskSource.storeLastActiveTimeMillis(
|
||||
userId = mockUserId,
|
||||
lastActiveTimeMillis = mockLastActiveTime,
|
||||
)
|
||||
val actual = fakeSharedPreferences
|
||||
.getLong(
|
||||
"${lastActiveTimeBaseKey}_$mockUserId",
|
||||
0L,
|
||||
)
|
||||
assertEquals(
|
||||
mockLastActiveTime,
|
||||
actual,
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `storeLastActiveTimeMillis for null values should clear SharedPreferences`() {
|
||||
val lastActiveTimeBaseKey = "bwPreferencesStorage:lastActiveTime"
|
||||
val mockUserId = "mockUserId"
|
||||
val mockLastActiveTime = 123456789L
|
||||
val lastActiveTimeKey = "${lastActiveTimeBaseKey}_$mockUserId"
|
||||
fakeSharedPreferences
|
||||
.edit()
|
||||
.putLong(lastActiveTimeKey, mockLastActiveTime)
|
||||
.apply()
|
||||
assertTrue(fakeSharedPreferences.contains(lastActiveTimeKey))
|
||||
authDiskSource.storeLastActiveTimeMillis(
|
||||
userId = mockUserId,
|
||||
lastActiveTimeMillis = null,
|
||||
)
|
||||
assertFalse(fakeSharedPreferences.contains(lastActiveTimeKey))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `getUserKey should pull from SharedPreferences`() {
|
||||
val userKeyBaseKey = "bwPreferencesStorage:masterKeyEncryptedUserKey"
|
||||
|
||||
@@ -19,6 +19,7 @@ class FakeAuthDiskSource : AuthDiskSource {
|
||||
mutableMapOf<String, MutableSharedFlow<List<SyncResponseJson.Profile.Organization>?>>()
|
||||
private val mutableUserStateFlow = bufferedMutableSharedFlow<UserStateJson?>(replay = 1)
|
||||
|
||||
private val storedLastActiveTimeMillis = mutableMapOf<String, Long?>()
|
||||
private val storedUserKeys = mutableMapOf<String, String?>()
|
||||
private val storedPrivateKeys = mutableMapOf<String, String?>()
|
||||
private val storedUserAutoUnlockKeys = mutableMapOf<String, String?>()
|
||||
@@ -35,6 +36,16 @@ class FakeAuthDiskSource : AuthDiskSource {
|
||||
override val userStateFlow: Flow<UserStateJson?>
|
||||
get() = mutableUserStateFlow.onSubscription { emit(userState) }
|
||||
|
||||
override fun getLastActiveTimeMillis(userId: String): Long? =
|
||||
storedLastActiveTimeMillis[userId]
|
||||
|
||||
override fun storeLastActiveTimeMillis(
|
||||
userId: String,
|
||||
lastActiveTimeMillis: Long?,
|
||||
) {
|
||||
storedLastActiveTimeMillis[userId] = lastActiveTimeMillis
|
||||
}
|
||||
|
||||
override fun getUserKey(userId: String): String? = storedUserKeys[userId]
|
||||
|
||||
override fun storeUserKey(userId: String, userKey: String?) {
|
||||
|
||||
Reference in New Issue
Block a user