mirror of
https://github.com/bitwarden/android.git
synced 2026-06-01 10:16:47 -05:00
BIT-411: Add NetworkConfigRepository (#150)
This commit is contained in:
@@ -22,7 +22,6 @@ import com.x8bit.bitwarden.data.auth.repository.model.RegisterResult
|
||||
import com.x8bit.bitwarden.data.auth.repository.util.CaptchaCallbackTokenResult
|
||||
import com.x8bit.bitwarden.data.auth.repository.util.toUserState
|
||||
import com.x8bit.bitwarden.data.auth.util.toSdkParams
|
||||
import com.x8bit.bitwarden.data.platform.datasource.network.interceptor.AuthTokenInterceptor
|
||||
import io.mockk.clearMocks
|
||||
import io.mockk.coEvery
|
||||
import io.mockk.coVerify
|
||||
@@ -46,7 +45,6 @@ class AuthRepositoryTest {
|
||||
|
||||
private val accountsService: AccountsService = mockk()
|
||||
private val identityService: IdentityService = mockk()
|
||||
private val authInterceptor = AuthTokenInterceptor()
|
||||
private val fakeAuthDiskSource = FakeAuthDiskSource()
|
||||
private val authSdkSource = mockk<AuthSdkSource> {
|
||||
coEvery {
|
||||
@@ -80,7 +78,6 @@ class AuthRepositoryTest {
|
||||
identityService = identityService,
|
||||
authSdkSource = authSdkSource,
|
||||
authDiskSource = fakeAuthDiskSource,
|
||||
authTokenInterceptor = authInterceptor,
|
||||
dispatcher = UnconfinedTestDispatcher(),
|
||||
)
|
||||
|
||||
@@ -199,7 +196,6 @@ class AuthRepositoryTest {
|
||||
val result = repository.login(email = EMAIL, password = PASSWORD, captchaToken = null)
|
||||
assertEquals(LoginResult.Success, result)
|
||||
assertEquals(AuthState.Authenticated(ACCESS_TOKEN), repository.authStateFlow.value)
|
||||
assertEquals(ACCESS_TOKEN, authInterceptor.authToken)
|
||||
coVerify { accountsService.preLogin(email = EMAIL) }
|
||||
coVerify {
|
||||
identityService.getToken(
|
||||
@@ -404,7 +400,6 @@ class AuthRepositoryTest {
|
||||
repository.login(email = EMAIL, password = PASSWORD, captchaToken = null)
|
||||
|
||||
assertEquals(AuthState.Authenticated(ACCESS_TOKEN), repository.authStateFlow.value)
|
||||
assertEquals(ACCESS_TOKEN, authInterceptor.authToken)
|
||||
assertEquals(SINGLE_USER_STATE_1, fakeAuthDiskSource.userState)
|
||||
|
||||
// Then call logout:
|
||||
@@ -414,7 +409,6 @@ class AuthRepositoryTest {
|
||||
repository.logout()
|
||||
|
||||
assertEquals(AuthState.Unauthenticated, awaitItem())
|
||||
assertNull(authInterceptor.authToken)
|
||||
assertNull(fakeAuthDiskSource.userState)
|
||||
}
|
||||
}
|
||||
@@ -443,7 +437,6 @@ class AuthRepositoryTest {
|
||||
repository.login(email = EMAIL, password = PASSWORD, captchaToken = null)
|
||||
|
||||
assertEquals(AuthState.Authenticated(ACCESS_TOKEN), repository.authStateFlow.value)
|
||||
assertEquals(ACCESS_TOKEN, authInterceptor.authToken)
|
||||
assertEquals(MULTI_USER_STATE, fakeAuthDiskSource.userState)
|
||||
|
||||
// Then call logout:
|
||||
@@ -453,7 +446,6 @@ class AuthRepositoryTest {
|
||||
repository.logout()
|
||||
|
||||
assertEquals(AuthState.Authenticated(ACCESS_TOKEN_2), awaitItem())
|
||||
assertEquals(ACCESS_TOKEN_2, authInterceptor.authToken)
|
||||
assertEquals(SINGLE_USER_STATE_2, fakeAuthDiskSource.userState)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.x8bit.bitwarden.data.platform.repository
|
||||
|
||||
import com.x8bit.bitwarden.data.auth.repository.AuthRepository
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.AuthState
|
||||
import com.x8bit.bitwarden.data.platform.datasource.network.interceptor.AuthTokenInterceptor
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.test.UnconfinedTestDispatcher
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertNull
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
class NetworkConfigRepositoryTest {
|
||||
private val mutableAuthStateFlow = MutableStateFlow<AuthState>(AuthState.Uninitialized)
|
||||
|
||||
private val authRepository: AuthRepository = mockk() {
|
||||
every { authStateFlow } returns mutableAuthStateFlow
|
||||
}
|
||||
|
||||
private val authTokenInterceptor = AuthTokenInterceptor()
|
||||
|
||||
private lateinit var networkConfigRepository: NetworkConfigRepository
|
||||
|
||||
@BeforeEach
|
||||
fun setUp() {
|
||||
networkConfigRepository = NetworkConfigRepositoryImpl(
|
||||
authRepository = authRepository,
|
||||
authTokenInterceptor = authTokenInterceptor,
|
||||
dispatcher = UnconfinedTestDispatcher(),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `changes in the AuthState should update the AuthTokenInterceptor`() {
|
||||
mutableAuthStateFlow.value = AuthState.Uninitialized
|
||||
assertNull(authTokenInterceptor.authToken)
|
||||
|
||||
mutableAuthStateFlow.value = AuthState.Authenticated(accessToken = "accessToken")
|
||||
assertEquals(
|
||||
"accessToken",
|
||||
authTokenInterceptor.authToken,
|
||||
)
|
||||
|
||||
mutableAuthStateFlow.value = AuthState.Unauthenticated
|
||||
assertNull(authTokenInterceptor.authToken)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user