🔥 Remove path from FreenetTemplatePage
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / page / FreenetTemplatePageTest.kt
index d992b30..d8c7562 100644 (file)
@@ -8,14 +8,15 @@ import net.pterodactylus.util.web.Method.*
 import org.hamcrest.MatcherAssert.*
 import org.hamcrest.Matchers.*
 import org.junit.*
-import org.mockito.ArgumentMatchers.*
+import org.mockito.Mockito.*
 
 class FreenetTemplatePageTest {
 
-       private val templateContextFactory = mock<TemplateContextFactory>()
+       private val templateContextFactory = deepMock<TemplateContextFactory>()
+       private val templateRenderer = deepMock<TemplateRenderer>()
        private val loaders = mock<Loaders>()
        private val template = mock<Template>()
-       private val page = FreenetTemplatePage("/test/path", templateContextFactory, loaders, template, "invalid-form-password")
+       private val page = TestPage(templateRenderer, loaders)
 
        @Test
        fun `path is exposed correctly`() {
@@ -69,7 +70,7 @@ class FreenetTemplatePageTest {
 
        @Test
        fun `isEnabled() returns false if full access only is true`() {
-               val page = object : FreenetTemplatePage("/test/path", templateContextFactory, loaders, template, "invalid-form-password") {
+               val page = object : TestPage(templateRenderer, loaders) {
                        override val isFullAccessOnly = true
                }
                assertThat(page.isEnabled(mock()), equalTo(false))
@@ -77,7 +78,7 @@ class FreenetTemplatePageTest {
 
        @Test
        fun `page with redirect target throws redirect exception on handleRequest`() {
-               val page = object : FreenetTemplatePage("/test/path", templateContextFactory, loaders, template, "invalid-form-password") {
+               val page = object : TestPage(templateRenderer, loaders) {
                        override fun getRedirectTarget(request: FreenetRequest) = "foo"
                }
                val request = mock<FreenetRequest>()
@@ -89,7 +90,7 @@ class FreenetTemplatePageTest {
 
        @Test
        fun `page with full access only returns unauthorized on handleRequest with non-full access request`() {
-               val page = object : FreenetTemplatePage("/test/path", templateContextFactory, loaders, template, "invalid-form-password") {
+               val page = object : TestPage(templateRenderer, loaders) {
                        override val isFullAccessOnly = true
                }
                val request = deepMock<FreenetRequest>()
@@ -122,4 +123,13 @@ class FreenetTemplatePageTest {
                assertThat(pageResponse.headers, contains(hasHeader("location", "invalid-form-password")))
        }
 
+       @Test
+       fun `template from annotation is loaded`() {
+               verify(loaders).loadTemplate("template-path")
+       }
+
+       @TemplatePath("template-path")
+       @ToadletPath("/test/path")
+       private open class TestPage(templateRenderer: TemplateRenderer, loaders: Loaders) : FreenetTemplatePage(templateRenderer, loaders, "invalid-form-password")
+
 }