mirror of
https://github.com/bitwarden/android.git
synced 2026-03-21 22:00:42 -05:00
[PM-19831] Migrate ConfigService to network module (#4971)
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package com.x8bit.bitwarden.data.platform.datasource.network.di
|
package com.x8bit.bitwarden.data.platform.datasource.network.di
|
||||||
|
|
||||||
|
import com.bitwarden.network.service.ConfigService
|
||||||
|
import com.bitwarden.network.service.ConfigServiceImpl
|
||||||
import com.x8bit.bitwarden.data.auth.datasource.disk.AuthDiskSource
|
import com.x8bit.bitwarden.data.auth.datasource.disk.AuthDiskSource
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.network.authenticator.RefreshAuthenticator
|
import com.x8bit.bitwarden.data.platform.datasource.network.authenticator.RefreshAuthenticator
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.network.interceptor.AuthTokenInterceptor
|
import com.x8bit.bitwarden.data.platform.datasource.network.interceptor.AuthTokenInterceptor
|
||||||
@@ -7,8 +9,6 @@ import com.x8bit.bitwarden.data.platform.datasource.network.interceptor.BaseUrlI
|
|||||||
import com.x8bit.bitwarden.data.platform.datasource.network.interceptor.HeadersInterceptor
|
import com.x8bit.bitwarden.data.platform.datasource.network.interceptor.HeadersInterceptor
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.network.retrofit.Retrofits
|
import com.x8bit.bitwarden.data.platform.datasource.network.retrofit.Retrofits
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.network.retrofit.RetrofitsImpl
|
import com.x8bit.bitwarden.data.platform.datasource.network.retrofit.RetrofitsImpl
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.network.service.ConfigService
|
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.network.service.ConfigServiceImpl
|
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.network.service.EventService
|
import com.x8bit.bitwarden.data.platform.datasource.network.service.EventService
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.network.service.EventServiceImpl
|
import com.x8bit.bitwarden.data.platform.datasource.network.service.EventServiceImpl
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.network.service.PushService
|
import com.x8bit.bitwarden.data.platform.datasource.network.service.PushService
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
package com.x8bit.bitwarden.data.platform.datasource.network.service
|
|
||||||
|
|
||||||
import com.bitwarden.network.api.ConfigApi
|
|
||||||
import com.bitwarden.network.model.ConfigResponseJson
|
|
||||||
import com.bitwarden.network.util.toResult
|
|
||||||
|
|
||||||
class ConfigServiceImpl(private val configApi: ConfigApi) : ConfigService {
|
|
||||||
override suspend fun getConfig(): Result<ConfigResponseJson> = configApi.getConfig().toResult()
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.x8bit.bitwarden.data.platform.repository
|
package com.x8bit.bitwarden.data.platform.repository
|
||||||
|
|
||||||
|
import com.bitwarden.network.service.ConfigService
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.disk.ConfigDiskSource
|
import com.x8bit.bitwarden.data.platform.datasource.disk.ConfigDiskSource
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.disk.model.ServerConfig
|
import com.x8bit.bitwarden.data.platform.datasource.disk.model.ServerConfig
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.network.service.ConfigService
|
|
||||||
import com.x8bit.bitwarden.data.platform.manager.dispatcher.DispatcherManager
|
import com.x8bit.bitwarden.data.platform.manager.dispatcher.DispatcherManager
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.flow.SharingStarted
|
import kotlinx.coroutines.flow.SharingStarted
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.x8bit.bitwarden.data.platform.repository.di
|
package com.x8bit.bitwarden.data.platform.repository.di
|
||||||
|
|
||||||
import android.view.autofill.AutofillManager
|
import android.view.autofill.AutofillManager
|
||||||
|
import com.bitwarden.network.service.ConfigService
|
||||||
import com.x8bit.bitwarden.data.auth.datasource.disk.AuthDiskSource
|
import com.x8bit.bitwarden.data.auth.datasource.disk.AuthDiskSource
|
||||||
import com.x8bit.bitwarden.data.auth.repository.AuthRepository
|
import com.x8bit.bitwarden.data.auth.repository.AuthRepository
|
||||||
import com.x8bit.bitwarden.data.autofill.accessibility.manager.AccessibilityEnabledManager
|
import com.x8bit.bitwarden.data.autofill.accessibility.manager.AccessibilityEnabledManager
|
||||||
@@ -9,7 +10,6 @@ import com.x8bit.bitwarden.data.platform.datasource.disk.ConfigDiskSource
|
|||||||
import com.x8bit.bitwarden.data.platform.datasource.disk.EnvironmentDiskSource
|
import com.x8bit.bitwarden.data.platform.datasource.disk.EnvironmentDiskSource
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.disk.FeatureFlagOverrideDiskSource
|
import com.x8bit.bitwarden.data.platform.datasource.disk.FeatureFlagOverrideDiskSource
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.disk.SettingsDiskSource
|
import com.x8bit.bitwarden.data.platform.datasource.disk.SettingsDiskSource
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.network.service.ConfigService
|
|
||||||
import com.x8bit.bitwarden.data.platform.manager.PolicyManager
|
import com.x8bit.bitwarden.data.platform.manager.PolicyManager
|
||||||
import com.x8bit.bitwarden.data.platform.manager.dispatcher.DispatcherManager
|
import com.x8bit.bitwarden.data.platform.manager.dispatcher.DispatcherManager
|
||||||
import com.x8bit.bitwarden.data.platform.repository.AuthenticatorBridgeRepository
|
import com.x8bit.bitwarden.data.platform.repository.AuthenticatorBridgeRepository
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ import com.bitwarden.core.data.util.asSuccess
|
|||||||
import com.bitwarden.network.model.ConfigResponseJson
|
import com.bitwarden.network.model.ConfigResponseJson
|
||||||
import com.bitwarden.network.model.ConfigResponseJson.EnvironmentJson
|
import com.bitwarden.network.model.ConfigResponseJson.EnvironmentJson
|
||||||
import com.bitwarden.network.model.ConfigResponseJson.ServerJson
|
import com.bitwarden.network.model.ConfigResponseJson.ServerJson
|
||||||
|
import com.bitwarden.network.service.ConfigService
|
||||||
import com.x8bit.bitwarden.data.platform.base.FakeDispatcherManager
|
import com.x8bit.bitwarden.data.platform.base.FakeDispatcherManager
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.disk.model.ServerConfig
|
import com.x8bit.bitwarden.data.platform.datasource.disk.model.ServerConfig
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.disk.util.FakeConfigDiskSource
|
import com.x8bit.bitwarden.data.platform.datasource.disk.util.FakeConfigDiskSource
|
||||||
import com.x8bit.bitwarden.data.platform.datasource.network.service.ConfigService
|
|
||||||
import com.x8bit.bitwarden.data.platform.manager.dispatcher.DispatcherManager
|
import com.x8bit.bitwarden.data.platform.manager.dispatcher.DispatcherManager
|
||||||
import io.mockk.coEvery
|
import io.mockk.coEvery
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import com.bitwarden.authenticator.data.platform.datasource.network.interceptor.
|
|||||||
import com.bitwarden.authenticator.data.platform.datasource.network.interceptor.HeadersInterceptor
|
import com.bitwarden.authenticator.data.platform.datasource.network.interceptor.HeadersInterceptor
|
||||||
import com.bitwarden.authenticator.data.platform.datasource.network.retrofit.Retrofits
|
import com.bitwarden.authenticator.data.platform.datasource.network.retrofit.Retrofits
|
||||||
import com.bitwarden.authenticator.data.platform.datasource.network.retrofit.RetrofitsImpl
|
import com.bitwarden.authenticator.data.platform.datasource.network.retrofit.RetrofitsImpl
|
||||||
import com.bitwarden.authenticator.data.platform.datasource.network.service.ConfigService
|
import com.bitwarden.network.service.ConfigService
|
||||||
import com.bitwarden.authenticator.data.platform.datasource.network.service.ConfigServiceImpl
|
import com.bitwarden.network.service.ConfigServiceImpl
|
||||||
import dagger.Module
|
import dagger.Module
|
||||||
import dagger.Provides
|
import dagger.Provides
|
||||||
import dagger.hilt.InstallIn
|
import dagger.hilt.InstallIn
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
package com.bitwarden.authenticator.data.platform.datasource.network.service
|
|
||||||
|
|
||||||
import com.bitwarden.network.model.ConfigResponseJson
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides an API for querying for app configurations.
|
|
||||||
*/
|
|
||||||
interface ConfigService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetch app configuration.
|
|
||||||
*/
|
|
||||||
suspend fun getConfig(): Result<ConfigResponseJson>
|
|
||||||
}
|
|
||||||
@@ -2,8 +2,8 @@ package com.bitwarden.authenticator.data.platform.repository
|
|||||||
|
|
||||||
import com.bitwarden.authenticator.data.platform.datasource.disk.ConfigDiskSource
|
import com.bitwarden.authenticator.data.platform.datasource.disk.ConfigDiskSource
|
||||||
import com.bitwarden.authenticator.data.platform.datasource.disk.model.ServerConfig
|
import com.bitwarden.authenticator.data.platform.datasource.disk.model.ServerConfig
|
||||||
import com.bitwarden.authenticator.data.platform.datasource.network.service.ConfigService
|
|
||||||
import com.bitwarden.authenticator.data.platform.manager.DispatcherManager
|
import com.bitwarden.authenticator.data.platform.manager.DispatcherManager
|
||||||
|
import com.bitwarden.network.service.ConfigService
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.flow.SharingStarted
|
import kotlinx.coroutines.flow.SharingStarted
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import com.bitwarden.authenticator.data.platform.datasource.disk.ConfigDiskSourc
|
|||||||
import com.bitwarden.authenticator.data.platform.datasource.disk.FeatureFlagDiskSource
|
import com.bitwarden.authenticator.data.platform.datasource.disk.FeatureFlagDiskSource
|
||||||
import com.bitwarden.authenticator.data.platform.datasource.disk.FeatureFlagOverrideDiskSource
|
import com.bitwarden.authenticator.data.platform.datasource.disk.FeatureFlagOverrideDiskSource
|
||||||
import com.bitwarden.authenticator.data.platform.datasource.disk.SettingsDiskSource
|
import com.bitwarden.authenticator.data.platform.datasource.disk.SettingsDiskSource
|
||||||
import com.bitwarden.authenticator.data.platform.datasource.network.service.ConfigService
|
|
||||||
import com.bitwarden.authenticator.data.platform.manager.BiometricsEncryptionManager
|
import com.bitwarden.authenticator.data.platform.manager.BiometricsEncryptionManager
|
||||||
import com.bitwarden.authenticator.data.platform.manager.DispatcherManager
|
import com.bitwarden.authenticator.data.platform.manager.DispatcherManager
|
||||||
import com.bitwarden.authenticator.data.platform.repository.DebugMenuRepository
|
import com.bitwarden.authenticator.data.platform.repository.DebugMenuRepository
|
||||||
@@ -17,6 +16,7 @@ import com.bitwarden.authenticator.data.platform.repository.ServerConfigReposito
|
|||||||
import com.bitwarden.authenticator.data.platform.repository.ServerConfigRepositoryImpl
|
import com.bitwarden.authenticator.data.platform.repository.ServerConfigRepositoryImpl
|
||||||
import com.bitwarden.authenticator.data.platform.repository.SettingsRepository
|
import com.bitwarden.authenticator.data.platform.repository.SettingsRepository
|
||||||
import com.bitwarden.authenticator.data.platform.repository.SettingsRepositoryImpl
|
import com.bitwarden.authenticator.data.platform.repository.SettingsRepositoryImpl
|
||||||
|
import com.bitwarden.network.service.ConfigService
|
||||||
import dagger.Module
|
import dagger.Module
|
||||||
import dagger.Provides
|
import dagger.Provides
|
||||||
import dagger.hilt.InstallIn
|
import dagger.hilt.InstallIn
|
||||||
|
|||||||
@@ -1,67 +0,0 @@
|
|||||||
package com.bitwarden.authenticator.data.platform.datasource.network.service
|
|
||||||
|
|
||||||
import com.bitwarden.core.data.util.asSuccess
|
|
||||||
import com.bitwarden.network.api.ConfigApi
|
|
||||||
import com.bitwarden.network.base.BaseServiceTest
|
|
||||||
import com.bitwarden.network.model.ConfigResponseJson
|
|
||||||
import kotlinx.coroutines.test.runTest
|
|
||||||
import kotlinx.serialization.json.JsonPrimitive
|
|
||||||
import okhttp3.mockwebserver.MockResponse
|
|
||||||
import org.junit.jupiter.api.Assertions.assertEquals
|
|
||||||
import org.junit.jupiter.api.Test
|
|
||||||
import retrofit2.create
|
|
||||||
|
|
||||||
class ConfigServiceTest : BaseServiceTest() {
|
|
||||||
|
|
||||||
private val api: ConfigApi = retrofit.create()
|
|
||||||
private val service = ConfigServiceImpl(api)
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `getConfig should call ConfigApi`() = runTest {
|
|
||||||
server.enqueue(MockResponse().setBody(CONFIG_RESPONSE_JSON))
|
|
||||||
assertEquals(CONFIG_RESPONSE.asSuccess(), service.getConfig())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private const val CONFIG_RESPONSE_JSON = """
|
|
||||||
{
|
|
||||||
"object": "config",
|
|
||||||
"version": "1",
|
|
||||||
"gitHash": "gitHash",
|
|
||||||
"server": {
|
|
||||||
"name": "default",
|
|
||||||
"url": "url"
|
|
||||||
},
|
|
||||||
"environment": {
|
|
||||||
"cloudRegion": "US",
|
|
||||||
"vault": "vaultUrl",
|
|
||||||
"api": "apiUrl",
|
|
||||||
"identity": "identityUrl",
|
|
||||||
"notifications": "notificationsUrl",
|
|
||||||
"sso": "ssoUrl"
|
|
||||||
},
|
|
||||||
"featureStates": {
|
|
||||||
"feature one": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
private val CONFIG_RESPONSE = ConfigResponseJson(
|
|
||||||
type = "config",
|
|
||||||
version = "1",
|
|
||||||
gitHash = "gitHash",
|
|
||||||
server = ConfigResponseJson.ServerJson(
|
|
||||||
name = "default",
|
|
||||||
url = "url",
|
|
||||||
),
|
|
||||||
environment = ConfigResponseJson.EnvironmentJson(
|
|
||||||
cloudRegion = "US",
|
|
||||||
vaultUrl = "vaultUrl",
|
|
||||||
apiUrl = "apiUrl",
|
|
||||||
notificationsUrl = "notificationsUrl",
|
|
||||||
identityUrl = "identityUrl",
|
|
||||||
ssoUrl = "ssoUrl",
|
|
||||||
),
|
|
||||||
featureStates = mapOf(
|
|
||||||
"feature one" to JsonPrimitive(false),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
@@ -4,12 +4,12 @@ import app.cash.turbine.test
|
|||||||
import com.bitwarden.authenticator.data.platform.base.FakeDispatcherManager
|
import com.bitwarden.authenticator.data.platform.base.FakeDispatcherManager
|
||||||
import com.bitwarden.authenticator.data.platform.datasource.disk.model.ServerConfig
|
import com.bitwarden.authenticator.data.platform.datasource.disk.model.ServerConfig
|
||||||
import com.bitwarden.authenticator.data.platform.datasource.disk.util.FakeConfigDiskSource
|
import com.bitwarden.authenticator.data.platform.datasource.disk.util.FakeConfigDiskSource
|
||||||
import com.bitwarden.authenticator.data.platform.datasource.network.service.ConfigService
|
|
||||||
import com.bitwarden.authenticator.data.platform.manager.DispatcherManager
|
import com.bitwarden.authenticator.data.platform.manager.DispatcherManager
|
||||||
import com.bitwarden.core.data.util.asSuccess
|
import com.bitwarden.core.data.util.asSuccess
|
||||||
import com.bitwarden.network.model.ConfigResponseJson
|
import com.bitwarden.network.model.ConfigResponseJson
|
||||||
import com.bitwarden.network.model.ConfigResponseJson.EnvironmentJson
|
import com.bitwarden.network.model.ConfigResponseJson.EnvironmentJson
|
||||||
import com.bitwarden.network.model.ConfigResponseJson.ServerJson
|
import com.bitwarden.network.model.ConfigResponseJson.ServerJson
|
||||||
|
import com.bitwarden.network.service.ConfigService
|
||||||
import io.mockk.coEvery
|
import io.mockk.coEvery
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ dependencies {
|
|||||||
testRuntimeOnly(libs.junit.platform.launcher)
|
testRuntimeOnly(libs.junit.platform.launcher)
|
||||||
testImplementation(libs.junit.junit5)
|
testImplementation(libs.junit.junit5)
|
||||||
testImplementation(libs.junit.vintage)
|
testImplementation(libs.junit.vintage)
|
||||||
|
testImplementation(libs.kotlinx.coroutines.test)
|
||||||
testImplementation(libs.mockk.mockk)
|
testImplementation(libs.mockk.mockk)
|
||||||
testImplementation(libs.square.okhttp.mockwebserver)
|
testImplementation(libs.square.okhttp.mockwebserver)
|
||||||
testImplementation(libs.square.turbine)
|
testImplementation(libs.square.turbine)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.x8bit.bitwarden.data.platform.datasource.network.service
|
package com.bitwarden.network.service
|
||||||
|
|
||||||
import com.bitwarden.network.model.ConfigResponseJson
|
import com.bitwarden.network.model.ConfigResponseJson
|
||||||
|
|
||||||
@@ -1,12 +1,13 @@
|
|||||||
package com.bitwarden.authenticator.data.platform.datasource.network.service
|
package com.bitwarden.network.service
|
||||||
|
|
||||||
import com.bitwarden.network.api.ConfigApi
|
import com.bitwarden.network.api.ConfigApi
|
||||||
import com.bitwarden.network.model.ConfigResponseJson
|
import com.bitwarden.network.model.ConfigResponseJson
|
||||||
import com.bitwarden.network.util.toResult
|
import com.bitwarden.network.util.toResult
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default implementation of [ConfigService] for querying for app configurations.
|
* Default implementation of [ConfigService] for querying app configurations.
|
||||||
*/
|
*/
|
||||||
|
// TODO [PM-19846] Make internal when dependents are migrated.
|
||||||
class ConfigServiceImpl(private val configApi: ConfigApi) : ConfigService {
|
class ConfigServiceImpl(private val configApi: ConfigApi) : ConfigService {
|
||||||
override suspend fun getConfig(): Result<ConfigResponseJson> = configApi.getConfig().toResult()
|
override suspend fun getConfig(): Result<ConfigResponseJson> = configApi.getConfig().toResult()
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.x8bit.bitwarden.data.platform.datasource.network.service
|
package com.bitwarden.network.service
|
||||||
|
|
||||||
import com.bitwarden.core.data.util.asSuccess
|
import com.bitwarden.core.data.util.asSuccess
|
||||||
import com.bitwarden.network.base.BaseServiceTest
|
|
||||||
import com.bitwarden.network.api.ConfigApi
|
import com.bitwarden.network.api.ConfigApi
|
||||||
|
import com.bitwarden.network.base.BaseServiceTest
|
||||||
import com.bitwarden.network.model.ConfigResponseJson
|
import com.bitwarden.network.model.ConfigResponseJson
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
import kotlinx.serialization.json.JsonPrimitive
|
import kotlinx.serialization.json.JsonPrimitive
|
||||||
Reference in New Issue
Block a user