import net.pterodactylus.sone.main.SonePlugin
import net.pterodactylus.sone.test.mock
import net.pterodactylus.sone.test.whenever
-import net.pterodactylus.sone.web.page.FreenetRequest
+import net.pterodactylus.sone.web.page.*
import net.pterodactylus.util.notify.Notification
import net.pterodactylus.util.template.TemplateContext
import net.pterodactylus.util.version.Version
*/
class SoneTemplatePageTest : WebPageTest({ template, webInterface -> object : SoneTemplatePage("path.html", webInterface, template, requiresLogin = true) {} }) {
+ init {
+ request("index.html")
+ }
+
@Test
fun `page title is empty string if no page title key was given`() {
SoneTemplatePage("path.html", webInterface, template, requiresLogin = false).let { page ->
- assertThat(page.getPageTitle(freenetRequest), equalTo(""))
+ assertThat(page.getPageTitle(soneRequest), equalTo(""))
}
}
fun `page title is retrieved from l10n if page title key is given`() {
SoneTemplatePage("path.html", webInterface, template, "page.title", false).let { page ->
whenever(l10n.getString("page.title")).thenReturn("Page Title")
- assertThat(page.getPageTitle(freenetRequest), equalTo("Page Title"))
+ assertThat(page.getPageTitle(soneRequest), equalTo("Page Title"))
}
}
@Test
fun `local sones are set in template context`() {
- val localSones = listOf(mock<Sone>(), mock<Sone>())
+ val localSones = listOf(mock<Sone>(), mock())
whenever(core.localSones).thenReturn(localSones)
verifyVariableMatches("localSones", containsInAnyOrder(*localSones.toTypedArray()))
}
@Test
fun `redirect does happen if sone is not logged in`() {
unsetCurrentSone()
- request("index.html")
assertThat(page.getRedirectTarget(freenetRequest), equalTo("login.html?target=index.html"))
}
@Test
fun `redirect does happen with parameters encoded correctly if sone is not logged in`() {
unsetCurrentSone()
- request("index.html")
addHttpRequestParameter("foo", "b=r")
addHttpRequestParameter("baz", "q&o")
assertThat(page.getRedirectTarget(freenetRequest), anyOf(
@Test
fun `page is disabled if full access is required but request does not have full access`() {
- core.preferences.isRequireFullAccess = true
+ core.preferences.newRequireFullAccess = true
assertThat(page.isEnabled(toadletContext), equalTo(false))
}
@Test
fun `page is enabled if full access is required and request has full access and login is required and there is a current sone`() {
- core.preferences.isRequireFullAccess = true
+ core.preferences.newRequireFullAccess = true
whenever(toadletContext.isAllowedFullAccess).thenReturn(true)
assertThat(page.isEnabled(toadletContext), equalTo(true))
}
}
}
+ @Test
+ fun `handle request with sone request is called`() {
+ var called = false
+ val page = object : SoneTemplatePage("path.html", webInterface, template) {
+ override fun handleRequest(soneRequest: SoneRequest, templateContext: TemplateContext) {
+ called = true
+ }
+ }
+ page.processTemplate(freenetRequest, templateContext)
+ assertThat(called, equalTo(true))
+ }
+
}