🔀 Merge branch 'release/v82'
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / main / FreenetModuleTest.kt
1 package net.pterodactylus.sone.main
2
3 import com.google.inject.*
4 import freenet.client.*
5 import freenet.clients.http.*
6 import freenet.node.*
7 import freenet.pluginmanager.*
8 import net.pterodactylus.sone.freenet.plugin.*
9 import net.pterodactylus.sone.test.*
10 import org.hamcrest.MatcherAssert.*
11 import org.hamcrest.Matchers.*
12 import org.junit.*
13 import org.junit.rules.*
14 import org.mockito.*
15 import org.mockito.Mockito.*
16
17 /**
18  * Unit test for [FreenetModule].
19  */
20 class FreenetModuleTest {
21
22         @Rule
23         @JvmField
24         val expectedException = ExpectedException.none()!!
25
26         private val sessionManager = mock<SessionManager>()
27         private val pluginRespirator = deepMock<PluginRespirator>().apply {
28                 whenever(getSessionManager("Sone")).thenReturn(sessionManager)
29         }
30         private val node = pluginRespirator.node!!
31         private val highLevelSimpleClient = pluginRespirator.hlSimpleClient!!
32         private val toadletContainer: ToadletContainer = pluginRespirator.toadletContainer
33         private val pageMaker: PageMaker = pluginRespirator.pageMaker
34         private val module = FreenetModule(pluginRespirator)
35         private val injector = Guice.createInjector(module)
36
37         @Test
38         fun `plugin respirator is not bound`() {
39                 expectedException.expect(Exception::class.java)
40                 injector.getInstance<PluginRespirator>()
41         }
42
43         @Test
44         fun `node is returned correctly`() {
45                 assertThat(injector.getInstance(), sameInstance(node))
46         }
47
48         @Test
49         fun `node is returned as singleton`() {
50                 injector.verifySingletonInstance<Node>()
51         }
52
53         @Test
54         fun `high level simply client is returned correctly`() {
55                 assertThat(injector.getInstance(), sameInstance(highLevelSimpleClient))
56         }
57
58         @Test
59         fun `high level simply client is returned as singleton`() {
60                 injector.verifySingletonInstance<HighLevelSimpleClient>()
61         }
62
63         @Test
64         fun `session manager is returned correctly`() {
65                 assertThat(injector.getInstance(), sameInstance(sessionManager))
66         }
67
68         @Test
69         fun `session manager is returned as singleton`() {
70                 injector.verifySingletonInstance<SessionManager>()
71                 verify(pluginRespirator).getSessionManager("Sone")
72         }
73
74         @Test
75         fun `toadlet container is returned correctly`() {
76                 assertThat(injector.getInstance(), sameInstance(toadletContainer))
77         }
78
79         @Test
80         fun `toadlet container is returned as singleten`() {
81                 injector.verifySingletonInstance<ToadletContainer>()
82         }
83
84         @Test
85         fun `page maker is returned correctly`() {
86                 assertThat(injector.getInstance(), sameInstance(pageMaker))
87         }
88
89         @Test
90         fun `page maker is returned as singleton`() {
91                 injector.verifySingletonInstance<PageMaker>()
92         }
93
94         @Test
95         fun `plugin respirator facade is returned correctly`() {
96                 val pluginRespiratorFacade = injector.getInstance<PluginRespiratorFacade>()
97                 pluginRespiratorFacade.getPluginTalker(mock(), "test.plugin", "test-request-1")
98                 verify(pluginRespirator).getPluginTalker(any(), ArgumentMatchers.eq("test.plugin"), ArgumentMatchers.eq("test-request-1"))
99         }
100
101         @Test
102         fun `plugin respirator facade is returned as singleton`() {
103                 injector.verifySingletonInstance<PluginRespiratorFacade>()
104         }
105
106         @Test
107         fun `plugin connector is returned correctly`() {
108                 assertThat(injector.getInstance<PluginConnector>(), notNullValue())
109         }
110
111         @Test
112         fun `plugin connector facade is returned as singleton`() {
113                 injector.verifySingletonInstance<PluginConnector>()
114         }
115
116 }