X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpage%2FFreenetTemplatePageTest.kt;h=2474d08968d3aa381225dd19142973e241f81a29;hp=35d4afd78b683894ce3f5d950d4fe0bf35e5bd83;hb=5201720801a4053f8f324b71fb3e9c36f6cd911e;hpb=6a3f1fede0cda5cd6ed56204aa1dd37a19813cb9 diff --git a/src/test/kotlin/net/pterodactylus/sone/web/page/FreenetTemplatePageTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/page/FreenetTemplatePageTest.kt index 35d4afd..2474d08 100644 --- a/src/test/kotlin/net/pterodactylus/sone/web/page/FreenetTemplatePageTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/web/page/FreenetTemplatePageTest.kt @@ -1,16 +1,21 @@ package net.pterodactylus.sone.web.page +import net.pterodactylus.sone.main.* import net.pterodactylus.sone.test.* import net.pterodactylus.util.web.* 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.* +import java.io.* +import java.nio.charset.StandardCharsets.* class FreenetTemplatePageTest { - private val page = FreenetTemplatePage("/test/path", null, null, null, "invalid-form-password") + private val templateRenderer = deepMock() + private val loaders = mock() + private val page = TestPage(templateRenderer, loaders) @Test fun `path is exposed correctly`() { @@ -18,8 +23,8 @@ class FreenetTemplatePageTest { } @Test - fun `getPageTitle() default implementation returns null`() { - assertThat(page.getPageTitle(mock()), nullValue()) + fun `getPageTitle() default implementation returns empty string`() { + assertThat(page.getPageTitle(mock()), equalTo("")) } @Test @@ -64,16 +69,16 @@ class FreenetTemplatePageTest { @Test fun `isEnabled() returns false if full access only is true`() { - val page = object : FreenetTemplatePage("/test/path", null, null, null, null) { - override fun isFullAccessOnly() = true + val page = object : TestPage(templateRenderer, loaders) { + override val isFullAccessOnly = true } assertThat(page.isEnabled(mock()), equalTo(false)) } @Test fun `page with redirect target throws redirect exception on handleRequest`() { - val page = object : FreenetTemplatePage("/test/path", null, null, null, null) { - override fun getRedirectTarget(request: FreenetRequest?) = "foo" + val page = object : TestPage(templateRenderer, loaders) { + override fun getRedirectTarget(request: FreenetRequest) = "foo" } val request = mock() val response = mock() @@ -84,8 +89,8 @@ class FreenetTemplatePageTest { @Test fun `page with full access only returns unauthorized on handleRequest with non-full access request`() { - val page = object : FreenetTemplatePage("/test/path", null, null, null, null) { - override fun isFullAccessOnly() = true + val page = object : TestPage(templateRenderer, loaders) { + override val isFullAccessOnly = true } val request = deepMock() val response = Response(null) @@ -117,4 +122,28 @@ class FreenetTemplatePageTest { assertThat(pageResponse.headers, contains(hasHeader("location", "invalid-form-password"))) } + @Test + @Dirty + fun `freenet template page creates page with correct title`() { + val page = object : TestPage(templateRenderer, loaders) { + override fun getPageTitle(request: FreenetRequest) = "page title" + } + val request = deepMock() + val pageMakerInteractionFactory = deepMock() + whenever(pageMakerInteractionFactory.createPageMaker(request.toadletContext, "page title").renderPage()).thenReturn("") + setField(page, "pageMakerInteractionFactory", pageMakerInteractionFactory) + val response = page.handleRequest(request, Response(ByteArrayOutputStream())) + assertThat(response.statusCode, equalTo(200)) + assertThat((response.content as ByteArrayOutputStream).toString(UTF_8.name()), equalTo("")) + } + + @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") + }