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.*
class FreenetTemplatePageTest {
- private val page = FreenetTemplatePage("/test/path", null, null, "invalid-form-password")
+ private val templateRenderer = deepMock<TemplateRenderer>()
+ private val loaders = mock<Loaders>()
+ private val page = TestPage(templateRenderer, loaders)
@Test
fun `path is exposed correctly`() {
}
@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
@Test
fun `isEnabled() returns false if full access only is true`() {
- val page = object : FreenetTemplatePage("/test/path", 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) {
- override fun getRedirectTarget(request: FreenetRequest?) = "foo"
+ val page = object : TestPage(templateRenderer, loaders) {
+ override fun getRedirectTarget(request: FreenetRequest) = "foo"
}
val request = mock<FreenetRequest>()
val response = mock<Response>()
@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) {
- override fun isFullAccessOnly() = true
+ val page = object : TestPage(templateRenderer, loaders) {
+ override val isFullAccessOnly = true
}
val request = deepMock<FreenetRequest>()
val response = Response(null)
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")
+
}