From 4860561dcad0fcb87b2ef08fea35a15201a949d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= <sebastian@mobanisto.de> Date: Thu, 30 Sep 2021 14:27:43 +0200 Subject: [PATCH] Add BriarDesktopTestApp and DesktopTestModule --- build.gradle.kts | 1 + .../briar/desktop/BriarDesktopTestApp.kt | 33 +++++++ .../briar/desktop/DesktopTestModule.kt | 96 +++++++++++++++++++ 3 files changed, 130 insertions(+) create mode 100644 src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt create mode 100644 src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt diff --git a/build.gradle.kts b/build.gradle.kts index 8b8b4a2171..c9e6d9c3a2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -35,6 +35,7 @@ dependencies { kapt("com.google.dagger:dagger-compiler:$daggerVersion") testImplementation(kotlin("test-testng")) + kaptTest("com.google.dagger:dagger-compiler:$daggerVersion") } tasks.test { diff --git a/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt b/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt new file mode 100644 index 0000000000..a4bbc9cd14 --- /dev/null +++ b/src/test/kotlin/org/briarproject/briar/desktop/BriarDesktopTestApp.kt @@ -0,0 +1,33 @@ +package org.briarproject.briar.desktop + +import dagger.Component +import org.briarproject.bramble.BrambleCoreEagerSingletons +import org.briarproject.bramble.BrambleCoreModule +import org.briarproject.bramble.api.account.AccountManager +import org.briarproject.bramble.api.lifecycle.LifecycleManager +import org.briarproject.briar.BriarCoreEagerSingletons +import org.briarproject.briar.BriarCoreModule +import org.briarproject.briar.api.test.TestDataCreator +import java.security.SecureRandom +import javax.inject.Singleton + +@Component( + modules = [ + BrambleCoreModule::class, + BriarCoreModule::class, + DesktopTestModule::class + ] +) +@Singleton +internal interface BriarDesktopTestApp : BrambleCoreEagerSingletons, BriarCoreEagerSingletons { + + fun getUI(): UI + + fun getSecureRandom(): SecureRandom + + fun getLifecycleManager(): LifecycleManager + + fun getAccountManager(): AccountManager + + fun getTestDataCreator(): TestDataCreator +} diff --git a/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt b/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt new file mode 100644 index 0000000000..b0e9afdb24 --- /dev/null +++ b/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt @@ -0,0 +1,96 @@ +package org.briarproject.briar.desktop + +import com.fasterxml.jackson.databind.ObjectMapper +import dagger.Module +import dagger.Provides +import org.briarproject.bramble.account.AccountModule +import org.briarproject.bramble.api.FeatureFlags +import org.briarproject.bramble.api.db.DatabaseConfig +import org.briarproject.bramble.api.plugin.PluginConfig +import org.briarproject.bramble.api.plugin.TorDirectory +import org.briarproject.bramble.api.plugin.TransportId +import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory +import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory +import org.briarproject.bramble.battery.DefaultBatteryManagerModule +import org.briarproject.bramble.event.DefaultEventExecutorModule +import org.briarproject.bramble.network.JavaNetworkModule +import org.briarproject.bramble.plugin.tor.CircumventionModule +import org.briarproject.bramble.plugin.tor.UnixTorPluginFactory +import org.briarproject.bramble.socks.SocksModule +import org.briarproject.bramble.system.ClockModule +import org.briarproject.bramble.system.DefaultTaskSchedulerModule +import org.briarproject.bramble.system.DefaultWakefulIoExecutorModule +import org.briarproject.bramble.system.DesktopSecureRandomModule +import org.briarproject.bramble.system.JavaSystemModule +import org.briarproject.bramble.util.OsUtils.isLinux +import org.briarproject.bramble.util.OsUtils.isMac +import org.briarproject.briar.api.test.TestAvatarCreator +import org.briarproject.briar.test.TestModule +import java.io.File +import java.util.Collections.emptyList +import javax.inject.Singleton + +@Module( + includes = [ + AccountModule::class, + CircumventionModule::class, + ClockModule::class, + DefaultBatteryManagerModule::class, + DefaultEventExecutorModule::class, + DefaultTaskSchedulerModule::class, + DefaultWakefulIoExecutorModule::class, + DesktopSecureRandomModule::class, + JavaNetworkModule::class, + JavaSystemModule::class, + SocksModule::class, + TestModule::class, + ] +) +internal class DesktopTestModule(private val appDir: File) { + + @Provides + @Singleton + internal fun provideBriarService(briarService: BriarServiceImpl): BriarService = briarService + + @Provides + @Singleton + internal fun provideDatabaseConfig(): DatabaseConfig { + val dbDir = File(appDir, "db") + val keyDir = File(appDir, "key") + return DesktopDatabaseConfig(dbDir, keyDir) + } + + @Provides + @TorDirectory + internal fun provideTorDirectory(): File { + return File(appDir, "tor") + } + + @Provides + internal fun providePluginConfig(tor: UnixTorPluginFactory): PluginConfig { + val duplex: List<DuplexPluginFactory> = + if (isLinux() || isMac()) listOf(tor) else emptyList() + return object : PluginConfig { + override fun getDuplexFactories(): Collection<DuplexPluginFactory> = duplex + override fun getSimplexFactories(): Collection<SimplexPluginFactory> = emptyList() + override fun shouldPoll(): Boolean = true + override fun getTransportPreferences(): Map<TransportId, List<TransportId>> = emptyMap() + } + } + + @Provides + @Singleton + internal fun provideObjectMapper() = ObjectMapper() + + @Provides + internal fun provideFeatureFlags() = object : FeatureFlags { + override fun shouldEnableImageAttachments() = false + override fun shouldEnableProfilePictures() = false + override fun shouldEnableDisappearingMessages() = false + override fun shouldEnableConnectViaBluetooth() = false + override fun shouldEnableTransferData() = false + } + + @Provides + internal fun provideTestAvatarCreator() = TestAvatarCreator { null } +} -- GitLab