🎨 Reduce dependency on Node’s fields
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / main / FreenetModuleTest.kt
index e94e34e..84cb567 100644 (file)
@@ -2,9 +2,12 @@ package net.pterodactylus.sone.main
 
 import com.google.inject.*
 import freenet.client.*
+import freenet.client.async.ClientContext
+import freenet.client.async.USKManager
 import freenet.clients.http.*
 import freenet.node.*
 import freenet.pluginmanager.*
+import net.pterodactylus.sone.freenet.HighLevelSimpleClientCreator
 import net.pterodactylus.sone.freenet.plugin.*
 import net.pterodactylus.sone.test.*
 import org.hamcrest.MatcherAssert.*
@@ -24,22 +27,24 @@ class FreenetModuleTest {
        val expectedException = ExpectedException.none()!!
 
        private val sessionManager = mock<SessionManager>()
+       private val uskManager = mock<USKManager>()
+       private val clientContext = mock<ClientContext>()
        private val pluginRespirator = deepMock<PluginRespirator>().apply {
                whenever(getSessionManager("Sone")).thenReturn(sessionManager)
        }
-       private val node = pluginRespirator.node!!
+       private val nodeClientCore = mock<NodeClientCore>().also {
+               setField(it, "uskManager", uskManager)
+               setField(it, "clientContext", clientContext)
+       }
+       private val node = pluginRespirator.node!!.also {
+               setField(it, "clientCore", nodeClientCore)
+       }
        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)
 
-       private inline fun <reified T : Any> verifySingletonInstance() {
-               val firstInstance = injector.getInstance<T>()
-               val secondInstance = injector.getInstance<T>()
-               assertThat(firstInstance, sameInstance(secondInstance))
-       }
-
        @Test
        fun `plugin respirator is not bound`() {
                expectedException.expect(Exception::class.java)
@@ -53,7 +58,7 @@ class FreenetModuleTest {
 
        @Test
        fun `node is returned as singleton`() {
-               verifySingletonInstance<Node>()
+               injector.verifySingletonInstance<Node>()
        }
 
        @Test
@@ -63,7 +68,7 @@ class FreenetModuleTest {
 
        @Test
        fun `high level simply client is returned as singleton`() {
-               verifySingletonInstance<HighLevelSimpleClient>()
+               injector.verifySingletonInstance<HighLevelSimpleClient>()
        }
 
        @Test
@@ -73,7 +78,7 @@ class FreenetModuleTest {
 
        @Test
        fun `session manager is returned as singleton`() {
-               verifySingletonInstance<SessionManager>()
+               injector.verifySingletonInstance<SessionManager>()
                verify(pluginRespirator).getSessionManager("Sone")
        }
 
@@ -84,7 +89,7 @@ class FreenetModuleTest {
 
        @Test
        fun `toadlet container is returned as singleten`() {
-               verifySingletonInstance<ToadletContainer>()
+               injector.verifySingletonInstance<ToadletContainer>()
        }
 
        @Test
@@ -94,7 +99,7 @@ class FreenetModuleTest {
 
        @Test
        fun `page maker is returned as singleton`() {
-               verifySingletonInstance<PageMaker>()
+               injector.verifySingletonInstance<PageMaker>()
        }
 
        @Test
@@ -106,7 +111,7 @@ class FreenetModuleTest {
 
        @Test
        fun `plugin respirator facade is returned as singleton`() {
-               verifySingletonInstance<PluginRespiratorFacade>()
+               injector.verifySingletonInstance<PluginRespiratorFacade>()
        }
 
        @Test
@@ -116,7 +121,22 @@ class FreenetModuleTest {
 
        @Test
        fun `plugin connector facade is returned as singleton`() {
-               verifySingletonInstance<PluginConnector>()
+               injector.verifySingletonInstance<PluginConnector>()
+       }
+
+       @Test
+       fun `high level simple client creator is returned correctly`() {
+               assertThat(injector.getInstance<HighLevelSimpleClientCreator>(), notNullValue());
+       }
+
+       @Test
+       fun `client context is returned correctly`() {
+               assertThat(injector.getInstance<ClientContext>(), sameInstance(clientContext))
+       }
+
+       @Test
+       fun `usk manager is returned correctly`() {
+               assertThat(injector.getInstance<USKManager>(), sameInstance(uskManager))
        }
 
 }