From: David ‘Bombe’ Roden Date: Sun, 6 Apr 2025 08:48:47 +0000 (+0200) Subject: 🚧 Make the node’s userDir available to injection X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=78fae70d0405a41fd3d3b2fd4d61b6618c5832fc;p=Sone.git 🚧 Make the node’s userDir available to injection --- diff --git a/src/main/kotlin/net/pterodactylus/sone/main/FreenetModule.kt b/src/main/kotlin/net/pterodactylus/sone/main/FreenetModule.kt index 363f895..b21eb73 100644 --- a/src/main/kotlin/net/pterodactylus/sone/main/FreenetModule.kt +++ b/src/main/kotlin/net/pterodactylus/sone/main/FreenetModule.kt @@ -7,10 +7,10 @@ import freenet.client.async.USKManager import freenet.clients.http.* import freenet.node.* import freenet.pluginmanager.* +import jakarta.inject.Named import net.pterodactylus.sone.freenet.DefaultHighLevelSimpleClientCreator import net.pterodactylus.sone.freenet.HighLevelSimpleClientCreator import net.pterodactylus.sone.freenet.plugin.* -import jakarta.inject.Provider import jakarta.inject.Singleton /** @@ -48,4 +48,9 @@ class FreenetModule(private val pluginRespirator: PluginRespirator) : Module { fun getUskManager(nodeClientCore: NodeClientCore): USKManager = nodeClientCore.getUskManager() + @Provides + @Named("NodeUserDir") + fun getNodeUserDir(pluginRespirator: PluginRespirator): String = + pluginRespirator.node.userDir.path + } diff --git a/src/test/kotlin/net/pterodactylus/sone/main/FreenetModuleTest.kt b/src/test/kotlin/net/pterodactylus/sone/main/FreenetModuleTest.kt index 1a15b00..5d81ed6 100644 --- a/src/test/kotlin/net/pterodactylus/sone/main/FreenetModuleTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/main/FreenetModuleTest.kt @@ -1,18 +1,22 @@ package net.pterodactylus.sone.main -import com.google.inject.* +import com.google.inject.Guice.createInjector +import com.google.inject.Injector +import com.google.inject.name.Names import freenet.client.* import freenet.client.async.ClientContext import freenet.client.async.USKManager import freenet.clients.http.* import freenet.node.* import freenet.pluginmanager.* +import java.io.File import net.pterodactylus.sone.freenet.HighLevelSimpleClientCreator import net.pterodactylus.sone.freenet.plugin.* import net.pterodactylus.sone.test.* import org.hamcrest.MatcherAssert.* import org.hamcrest.Matchers.* import org.junit.* +import org.junit.rules.TemporaryFolder import org.mockito.* import org.mockito.Mockito.* @@ -37,8 +41,6 @@ class FreenetModuleTest { private val highLevelSimpleClient = pluginRespirator.hlSimpleClient!! private val toadletContainer: ToadletContainer = pluginRespirator.toadletContainer private val pageMaker: PageMaker = pluginRespirator.pageMaker - private val module = FreenetModule(pluginRespirator) - private val injector = Guice.createInjector(module) @Test fun `plugin respirator is returned correctly`() { @@ -134,4 +136,20 @@ class FreenetModuleTest { assertThat(injector.getInstance(), sameInstance(uskManager)) } + @Test + fun `node user dir is returned correctly`() { + assertThat(createInjector("/node/user-dir").getInstance(Names.named("NodeUserDir")), equalTo("/node/user-dir")) + } + + private fun createInjector(databasePath: String = tempFolder.newFolder().path): Injector { + whenever(node.userDir).thenReturn(File(databasePath)) + return createInjector(FreenetModule(pluginRespirator)) + } + + @Rule + @JvmField + val tempFolder = TemporaryFolder() + + private val injector by lazy { createInjector() } + }