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 {
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`() {
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
- }
-
}