mirror of
https://github.com/bitwarden/android.git
synced 2026-06-02 11:12:00 -05:00
BIT-325: Create and persist device identifier (#298)
Co-authored-by: Oleg Semenenko <oleg@livefront.com>
This commit is contained in:
@@ -31,6 +31,34 @@ class AuthDiskSourceTest {
|
||||
json = json,
|
||||
)
|
||||
|
||||
@Test
|
||||
fun `uniqueAppId should generate a new ID and update SharedPreferences if none exists`() {
|
||||
val rememberedUniqueAppIdKey = "bwPreferencesStorage:appId"
|
||||
|
||||
// Assert that the SharedPreferences are empty
|
||||
assertNull(fakeSharedPreferences.getString(rememberedUniqueAppIdKey, null))
|
||||
|
||||
// Generate a new uniqueAppId and retrieve it
|
||||
val newId = authDiskSource.uniqueAppId
|
||||
|
||||
// Ensure that the SharedPreferences were updated
|
||||
assertEquals(
|
||||
newId,
|
||||
fakeSharedPreferences.getString(rememberedUniqueAppIdKey, null),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `uniqueAppId should not generate a new ID if one exists`() {
|
||||
val rememberedUniqueAppIdKey = "bwPreferencesStorage:appId"
|
||||
val testId = "testId"
|
||||
|
||||
// Update preferences to hold test value
|
||||
fakeSharedPreferences.edit().putString(rememberedUniqueAppIdKey, testId).apply()
|
||||
|
||||
assertEquals(testId, authDiskSource.uniqueAppId)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `rememberedEmailAddress should pull from and update SharedPreferences`() {
|
||||
val rememberedEmailKey = "bwPreferencesStorage:rememberedEmail"
|
||||
|
||||
@@ -8,6 +8,8 @@ import kotlinx.coroutines.flow.onSubscription
|
||||
import org.junit.Assert.assertEquals
|
||||
|
||||
class FakeAuthDiskSource : AuthDiskSource {
|
||||
override val uniqueAppId: String = "testUniqueAppId"
|
||||
|
||||
override var rememberedEmailAddress: String? = null
|
||||
|
||||
override var userState: UserStateJson? = null
|
||||
|
||||
@@ -41,6 +41,7 @@ class IdentityServiceTest : BaseServiceTest() {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
assertEquals(Result.success(LOGIN_SUCCESS), result)
|
||||
}
|
||||
@@ -52,6 +53,7 @@ class IdentityServiceTest : BaseServiceTest() {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
assertTrue(result.isFailure)
|
||||
}
|
||||
@@ -63,6 +65,7 @@ class IdentityServiceTest : BaseServiceTest() {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
assertEquals(Result.success(CAPTCHA_BODY), result)
|
||||
}
|
||||
@@ -74,6 +77,7 @@ class IdentityServiceTest : BaseServiceTest() {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
assertEquals(Result.success(INVALID_LOGIN), result)
|
||||
}
|
||||
@@ -94,6 +98,7 @@ class IdentityServiceTest : BaseServiceTest() {
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val UNIQUE_APP_ID = "testUniqueAppId"
|
||||
private const val REFRESH_TOKEN = "refreshToken"
|
||||
private const val EMAIL = "email"
|
||||
private const val PASSWORD_HASH = "passwordHash"
|
||||
|
||||
@@ -320,6 +320,7 @@ class AuthRepositoryTest {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
}
|
||||
.returns(Result.failure(RuntimeException()))
|
||||
@@ -332,6 +333,7 @@ class AuthRepositoryTest {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -346,6 +348,7 @@ class AuthRepositoryTest {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
} returns Result.success(
|
||||
GetTokenResponseJson.Invalid(
|
||||
@@ -364,6 +367,7 @@ class AuthRepositoryTest {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -381,6 +385,7 @@ class AuthRepositoryTest {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
}
|
||||
.returns(Result.success(successResponse))
|
||||
@@ -419,6 +424,7 @@ class AuthRepositoryTest {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
vaultRepository.unlockVault(
|
||||
userId = USER_ID_1,
|
||||
@@ -441,6 +447,7 @@ class AuthRepositoryTest {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
}
|
||||
.returns(Result.success(GetTokenResponseJson.CaptchaRequired(CAPTCHA_KEY)))
|
||||
@@ -453,6 +460,7 @@ class AuthRepositoryTest {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -807,6 +815,7 @@ class AuthRepositoryTest {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
} returns Result.success(successResponse)
|
||||
coEvery {
|
||||
@@ -870,6 +879,7 @@ class AuthRepositoryTest {
|
||||
email = EMAIL,
|
||||
passwordHash = PASSWORD_HASH,
|
||||
captchaToken = null,
|
||||
uniqueAppId = UNIQUE_APP_ID,
|
||||
)
|
||||
} returns Result.success(successResponse)
|
||||
coEvery {
|
||||
@@ -975,6 +985,7 @@ class AuthRepositoryTest {
|
||||
"com.x8bit.bitwarden.data.auth.repository.util.GetTokenResponseExtensionsKt"
|
||||
private const val REFRESH_TOKEN_RESPONSE_EXTENSIONS_PATH =
|
||||
"com.x8bit.bitwarden.data.auth.repository.util.RefreshTokenResponseExtensionsKt"
|
||||
private const val UNIQUE_APP_ID = "testUniqueAppId"
|
||||
private const val EMAIL = "test@bitwarden.com"
|
||||
private const val EMAIL_2 = "test2@bitwarden.com"
|
||||
private const val PASSWORD = "password"
|
||||
|
||||
Reference in New Issue
Block a user