1 package net.pterodactylus.sone.main
3 import com.google.inject.*
4 import freenet.client.*
5 import freenet.client.async.ClientContext
6 import freenet.client.async.USKManager
7 import freenet.clients.http.*
9 import freenet.pluginmanager.*
10 import net.pterodactylus.sone.freenet.HighLevelSimpleClientCreator
11 import net.pterodactylus.sone.freenet.plugin.*
12 import net.pterodactylus.sone.test.*
13 import org.hamcrest.MatcherAssert.*
14 import org.hamcrest.Matchers.*
16 import org.junit.rules.*
18 import org.mockito.Mockito.*
21 * Unit test for [FreenetModule].
23 class FreenetModuleTest {
27 val expectedException = ExpectedException.none()!!
29 private val sessionManager = mock<SessionManager>()
30 private val uskManager = mock<USKManager>()
31 private val clientContext = mock<ClientContext>()
32 private val pluginRespirator = deepMock<PluginRespirator>().apply {
33 whenever(getSessionManager("Sone")).thenReturn(sessionManager)
35 private val nodeClientCore = mock<NodeClientCore>().also {
36 setField(it, "uskManager", uskManager)
37 setField(it, "clientContext", clientContext)
39 private val node = pluginRespirator.node!!.also {
40 setField(it, "clientCore", nodeClientCore)
42 private val highLevelSimpleClient = pluginRespirator.hlSimpleClient!!
43 private val toadletContainer: ToadletContainer = pluginRespirator.toadletContainer
44 private val pageMaker: PageMaker = pluginRespirator.pageMaker
45 private val module = FreenetModule(pluginRespirator)
46 private val injector = Guice.createInjector(module)
49 fun `plugin respirator is not bound`() {
50 expectedException.expect(Exception::class.java)
51 injector.getInstance<PluginRespirator>()
55 fun `node is returned correctly`() {
56 assertThat(injector.getInstance(), sameInstance(node))
60 fun `node is returned as singleton`() {
61 injector.verifySingletonInstance<Node>()
65 fun `high level simply client is returned correctly`() {
66 assertThat(injector.getInstance(), sameInstance(highLevelSimpleClient))
70 fun `high level simply client is returned as singleton`() {
71 injector.verifySingletonInstance<HighLevelSimpleClient>()
75 fun `session manager is returned correctly`() {
76 assertThat(injector.getInstance(), sameInstance(sessionManager))
80 fun `session manager is returned as singleton`() {
81 injector.verifySingletonInstance<SessionManager>()
82 verify(pluginRespirator).getSessionManager("Sone")
86 fun `toadlet container is returned correctly`() {
87 assertThat(injector.getInstance(), sameInstance(toadletContainer))
91 fun `toadlet container is returned as singleten`() {
92 injector.verifySingletonInstance<ToadletContainer>()
96 fun `page maker is returned correctly`() {
97 assertThat(injector.getInstance(), sameInstance(pageMaker))
101 fun `page maker is returned as singleton`() {
102 injector.verifySingletonInstance<PageMaker>()
106 fun `plugin respirator facade is returned correctly`() {
107 val pluginRespiratorFacade = injector.getInstance<PluginRespiratorFacade>()
108 pluginRespiratorFacade.getPluginTalker(mock(), "test.plugin", "test-request-1")
109 verify(pluginRespirator).getPluginTalker(any(), ArgumentMatchers.eq("test.plugin"), ArgumentMatchers.eq("test-request-1"))
113 fun `plugin respirator facade is returned as singleton`() {
114 injector.verifySingletonInstance<PluginRespiratorFacade>()
118 fun `plugin connector is returned correctly`() {
119 assertThat(injector.getInstance<PluginConnector>(), notNullValue())
123 fun `plugin connector facade is returned as singleton`() {
124 injector.verifySingletonInstance<PluginConnector>()
128 fun `high level simple client creator is returned correctly`() {
129 assertThat(injector.getInstance<HighLevelSimpleClientCreator>(), notNullValue());
133 fun `client context is returned correctly`() {
134 assertThat(injector.getInstance<ClientContext>(), sameInstance(clientContext))
138 fun `usk manager is returned correctly`() {
139 assertThat(injector.getInstance<USKManager>(), sameInstance(uskManager))