1 package net.pterodactylus.sone.main
3 import com.google.inject.*
4 import freenet.client.*
5 import freenet.clients.http.*
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.*
13 import org.junit.rules.*
15 import org.mockito.Mockito.*
18 * Unit test for [FreenetModule].
20 class FreenetModuleTest {
24 val expectedException = ExpectedException.none()!!
26 private val sessionManager = mock<SessionManager>()
27 private val pluginRespirator = deepMock<PluginRespirator>().apply {
28 whenever(getSessionManager("Sone")).thenReturn(sessionManager)
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)
38 fun `plugin respirator is not bound`() {
39 expectedException.expect(Exception::class.java)
40 injector.getInstance<PluginRespirator>()
44 fun `node is returned correctly`() {
45 assertThat(injector.getInstance(), sameInstance(node))
49 fun `node is returned as singleton`() {
50 injector.verifySingletonInstance<Node>()
54 fun `high level simply client is returned correctly`() {
55 assertThat(injector.getInstance(), sameInstance(highLevelSimpleClient))
59 fun `high level simply client is returned as singleton`() {
60 injector.verifySingletonInstance<HighLevelSimpleClient>()
64 fun `session manager is returned correctly`() {
65 assertThat(injector.getInstance(), sameInstance(sessionManager))
69 fun `session manager is returned as singleton`() {
70 injector.verifySingletonInstance<SessionManager>()
71 verify(pluginRespirator).getSessionManager("Sone")
75 fun `toadlet container is returned correctly`() {
76 assertThat(injector.getInstance(), sameInstance(toadletContainer))
80 fun `toadlet container is returned as singleten`() {
81 injector.verifySingletonInstance<ToadletContainer>()
85 fun `page maker is returned correctly`() {
86 assertThat(injector.getInstance(), sameInstance(pageMaker))
90 fun `page maker is returned as singleton`() {
91 injector.verifySingletonInstance<PageMaker>()
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"))
102 fun `plugin respirator facade is returned as singleton`() {
103 injector.verifySingletonInstance<PluginRespiratorFacade>()
107 fun `plugin connector is returned correctly`() {
108 assertThat(injector.getInstance<PluginConnector>(), notNullValue())
112 fun `plugin connector facade is returned as singleton`() {
113 injector.verifySingletonInstance<PluginConnector>()