import net.pterodactylus.sone.test.mock
import net.pterodactylus.sone.test.thenReturnMock
import net.pterodactylus.sone.test.whenever
-import net.pterodactylus.sone.web.WebTestUtils.redirectsTo
import net.pterodactylus.util.web.Method.GET
import net.pterodactylus.util.web.Method.POST
import org.hamcrest.MatcherAssert.assertThat
private val sones = listOf(createSone("Sone", "Test"), createSone("Test"), createSone("Sone"))
+ override fun getPage() = page
+
private fun createSone(vararg contexts: String) = mock<Sone>().apply {
whenever(id).thenReturn(hashCode().toString())
val identity = mock<OwnIdentity>().apply {
}
@Test
+ fun `page returns correct path`() {
+ assertThat(page.path, equalTo("login.html"))
+ }
+
+ @Test
+ fun `page does not require login`() {
+ assertThat(page.requiresLogin(), equalTo(false))
+ }
+
+ @Test
@Suppress("UNCHECKED_CAST")
- fun `get request stores sone and identities without sones in template context`() {
+ fun `get request stores sones in template context`() {
request("", GET)
- page.handleRequest(freenetRequest, templateContext)
+ page.processTemplate(freenetRequest, templateContext)
assertThat(templateContext["sones"] as Iterable<Sone>, containsInAnyOrder(sones[0], sones[1], sones[2]))
+ }
+
+ @Test
+ @Suppress("UNCHECKED_CAST")
+ fun `get request stores identities without sones in template context`() {
+ request("", GET)
+ page.processTemplate(freenetRequest, templateContext)
assertThat(templateContext["identitiesWithoutSone"] as Iterable<Identity>, contains(sones[1].identity))
}
@Suppress("UNCHECKED_CAST")
fun `post request with invalid sone sets sones and identities without sone in template context`() {
request("", POST)
- page.handleRequest(freenetRequest, templateContext)
+ page.processTemplate(freenetRequest, templateContext)
assertThat(templateContext["sones"] as Iterable<Sone>, containsInAnyOrder(sones[0], sones[1], sones[2]))
assertThat(templateContext["identitiesWithoutSone"] as Iterable<Identity>, contains(sones[1].identity))
}
@Test
- fun `post request with valid sone and redirects to index page`() {
+ fun `post request with valid sone logs in the sone and redirects to index page`() {
request("", POST)
addHttpRequestParameter("sone-id", "sone2")
- expectedException.expect(redirectsTo("index.html"))
- try {
- page.handleRequest(freenetRequest, templateContext)
- } finally {
+ verifyRedirect("index.html") {
verify(webInterface).setCurrentSone(toadletContext, sones[1])
}
}
request("", POST)
addHttpRequestParameter("sone-id", "sone2")
addHttpRequestParameter("target", "foo.html")
- expectedException.expect(redirectsTo("foo.html"))
- try {
- page.handleRequest(freenetRequest, templateContext)
- } finally {
+ verifyRedirect("foo.html") {
verify(webInterface).setCurrentSone(toadletContext, sones[1])
}
}