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.test.*
9 import org.hamcrest.MatcherAssert.*
10 import org.hamcrest.Matchers.*
12 import org.mockito.Mockito.*
15 * Unit test for [FreenetModule].
17 class FreenetModuleTest {
19 private val sessionManager = mock<SessionManager>()
20 private val pluginRespirator = deepMock<PluginRespirator>().apply {
21 whenever(getSessionManager("Sone")).thenReturn(sessionManager)
23 private val node = pluginRespirator.node!!
24 private val highLevelSimpleClient = pluginRespirator.hlSimpleClient!!
25 private val toadletContainer: ToadletContainer = pluginRespirator.toadletContainer
26 private val pageMaker: PageMaker = pluginRespirator.pageMaker
27 private val module = FreenetModule(pluginRespirator)
28 private val injector = Guice.createInjector(module)
30 private inline fun <reified T : Any> verifySingletonInstance() {
31 val firstInstance = injector.getInstance<T>()
32 val secondInstance = injector.getInstance<T>()
33 assertThat(firstInstance, sameInstance(secondInstance))
37 fun `plugin respirator is returned correctly`() {
38 assertThat(injector.getInstance(), sameInstance(pluginRespirator))
42 fun `plugin respirator is returned as singleton`() {
43 verifySingletonInstance<PluginRespirator>()
47 fun `node is returned correctly`() {
48 assertThat(injector.getInstance(), sameInstance(node))
52 fun `node is returned as singleton`() {
53 verifySingletonInstance<Node>()
57 fun `high level simply client is returned correctly`() {
58 assertThat(injector.getInstance(), sameInstance(highLevelSimpleClient))
62 fun `high level simply client is returned as singleton`() {
63 verifySingletonInstance<HighLevelSimpleClient>()
67 fun `session manager is returned correctly`() {
68 assertThat(injector.getInstance(), sameInstance(sessionManager))
72 fun `session manager is returned as singleton`() {
73 verifySingletonInstance<SessionManager>()
74 verify(pluginRespirator).getSessionManager("Sone")
78 fun `toadlet container is returned correctly`() {
79 assertThat(injector.getInstance(), sameInstance(toadletContainer))
83 fun `toadlet container is returned as singleten`() {
84 verifySingletonInstance<ToadletContainer>()
88 fun `page maker is returned correctly`() {
89 assertThat(injector.getInstance(), sameInstance(pageMaker))
93 fun `page maker is returned as singleten`() {
94 verifySingletonInstance<PageMaker>()