Skip to content
Snippets Groups Projects
Commit 4860561d authored by Sebastian's avatar Sebastian Committed by Mikolai Gütschow
Browse files

Add BriarDesktopTestApp and DesktopTestModule

parent 31f363b3
No related branches found
No related tags found
1 merge request!22Make it possible to start briar with temporary account with a bunch of testing contacts
......@@ -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 {
......
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
}
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 }
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment