1 package net.pterodactylus.sone.main
3 import com.google.inject.Guice
4 import freenet.client.HighLevelSimpleClient
5 import freenet.clients.http.*
6 import freenet.node.Node
7 import freenet.pluginmanager.PluginRespirator
8 import net.pterodactylus.sone.test.deepMock
9 import net.pterodactylus.sone.test.getInstance
10 import net.pterodactylus.sone.test.mock
11 import net.pterodactylus.sone.test.whenever
12 import org.hamcrest.MatcherAssert.assertThat
13 import org.hamcrest.Matchers.sameInstance
15 import org.mockito.Mockito.verify
18 * Unit test for [FreenetModule].
20 class FreenetModuleTest {
22 private val sessionManager = mock<SessionManager>()
23 private val pluginRespirator = deepMock<PluginRespirator>().apply {
24 whenever(getSessionManager("Sone")).thenReturn(sessionManager)
26 private val node = pluginRespirator.node!!
27 private val highLevelSimpleClient = pluginRespirator.hlSimpleClient!!
28 private val toadletContainer: ToadletContainer = pluginRespirator.toadletContainer
29 private val module = FreenetModule(pluginRespirator)
30 private val injector = Guice.createInjector(module)
32 private inline fun <reified T: Any> verifySingletonInstance() {
33 val firstInstance = injector.getInstance<T>()
34 val secondInstance = injector.getInstance<T>()
35 assertThat(firstInstance, sameInstance(secondInstance))
39 fun `plugin respirator is returned correctly`() {
40 assertThat(injector.getInstance(), sameInstance(pluginRespirator))
44 fun `plugin respirator is returned as singleton`() {
45 verifySingletonInstance<PluginRespirator>()
49 fun `node is returned correctly`() {
50 assertThat(injector.getInstance(), sameInstance(node))
54 fun `node is returned as singleton`() {
55 verifySingletonInstance<Node>()
59 fun `high level simply client is returned correctly`() {
60 assertThat(injector.getInstance(), sameInstance(highLevelSimpleClient))
64 fun `high level simply client is returned as singleton`() {
65 verifySingletonInstance<HighLevelSimpleClient>()
69 fun `session manager is returned correctly`() {
70 assertThat(injector.getInstance(), sameInstance(sessionManager))
74 fun `session manager is returned as singleton`() {
75 verifySingletonInstance<SessionManager>()
76 verify(pluginRespirator).getSessionManager("Sone")
80 fun `toadlet container is returned correctly`() {
81 assertThat(injector.getInstance(), sameInstance(toadletContainer))
85 fun `toadlet container is returned as singleten`() {
86 verifySingletonInstance<ToadletContainer>()