🔀 Merge branch 'release/v82'
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / PageToadletRegistryTest.kt
index d242b32..2134661 100644 (file)
@@ -5,10 +5,10 @@ import freenet.clients.http.*
 import net.pterodactylus.sone.main.*
 import net.pterodactylus.sone.test.*
 import net.pterodactylus.sone.web.page.*
-import net.pterodactylus.util.web.*
 import org.junit.*
 import org.junit.rules.*
 import org.mockito.Mockito.*
+import kotlin.test.Test
 
 class PageToadletRegistryTest {
 
@@ -35,7 +35,7 @@ class PageToadletRegistryTest {
                verify(pageMaker).addNavigationCategory("/Sone/index.html", "Navigation.Menu.Sone.Name", "Navigation.Menu.Sone.Tooltip", sonePlugin)
        }
 
-       private val page = TestPage()
+       private val page = TestPage<FreenetRequest>()
 
        @Test
        fun `adding a page without menuname will add it correctly`() {
@@ -80,16 +80,70 @@ class PageToadletRegistryTest {
                verify(toadletContainer).unregister(toadletWithMenuname)
        }
 
+       @Test
+       fun `adding a debug page will not add it to the container`() {
+               val toadlet = createPageToadlet()
+               whenever(pageToadletFactory.createPageToadlet(page)).thenReturn(toadlet)
+               pageToadletRegistry.addDebugPage(page)
+               pageToadletRegistry.registerToadlets()
+               verify(toadletContainer, never()).register(toadlet, null, "/Sone/", true, false)
+       }
+
+       @Test
+       fun `adding a debug page and activating debug mode will add it to the container`() {
+               val toadlet = createPageToadlet()
+               whenever(pageToadletFactory.createPageToadlet(page)).thenReturn(toadlet)
+               pageToadletRegistry.addDebugPage(page)
+               pageToadletRegistry.registerToadlets()
+               pageToadletRegistry.activateDebugMode()
+               verify(toadletContainer).register(toadlet, null, "/Sone/", true, false)
+       }
+
+       @Test
+       fun `adding a debug page and activating debug mode twice will add it to the container once`() {
+               val toadlet = createPageToadlet()
+               whenever(pageToadletFactory.createPageToadlet(page)).thenReturn(toadlet)
+               pageToadletRegistry.addDebugPage(page)
+               pageToadletRegistry.registerToadlets()
+               pageToadletRegistry.activateDebugMode()
+               pageToadletRegistry.activateDebugMode()
+               verify(toadletContainer, times(1)).register(toadlet, null, "/Sone/", true, false)
+       }
+
+       @Test
+       fun `debug pages are ungegistered from the container`() {
+               val toadlet = createPageToadlet()
+               whenever(pageToadletFactory.createPageToadlet(page)).thenReturn(toadlet)
+               pageToadletRegistry.addDebugPage(page)
+               pageToadletRegistry.registerToadlets()
+               pageToadletRegistry.activateDebugMode()
+               pageToadletRegistry.unregisterToadlets()
+               verify(toadletContainer).unregister(toadlet)
+       }
+
+       @Test
+       fun `inactive debug pages are not ungegistered from the container`() {
+               val toadlet = createPageToadlet()
+               whenever(pageToadletFactory.createPageToadlet(page)).thenReturn(toadlet)
+               pageToadletRegistry.addDebugPage(page)
+               pageToadletRegistry.registerToadlets()
+               pageToadletRegistry.unregisterToadlets()
+               verify(toadletContainer, never()).unregister(toadlet)
+       }
+
+       @Test
+       fun `debug page can not be added after registering`() {
+               val toadlet = createPageToadlet()
+               whenever(pageToadletFactory.createPageToadlet(page)).thenReturn(toadlet)
+               pageToadletRegistry.registerToadlets()
+               expectedException.expect(IllegalStateException::class.java)
+               pageToadletRegistry.addDebugPage(page)
+       }
+
        private fun createPageToadlet(menuName: String? = null) =
                        mock<PageToadlet>().apply {
                                whenever(this.path()).thenReturn("/Sone/")
                                whenever(this.menuName).thenReturn(menuName)
                        }
 
-       private class TestPage : Page<FreenetRequest> {
-               override fun getPath() = ""
-               override fun isPrefixPage() = false
-               override fun handleRequest(freenetRequest: FreenetRequest, response: Response) = response
-       }
-
 }