X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FLoginPageTest.kt;h=1dbe3cd51820ae2371fccc5463eabf4dd55c7d04;hp=3b5c74fa7675c26bf031a0c995d1fa4673cf2cec;hb=9acbc5bdec4ccb752e0856a501568b0bb6161579;hpb=9824d45ada252d673a259029052f5ac4eecc5420 diff --git a/src/test/kotlin/net/pterodactylus/sone/web/LoginPageTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/LoginPageTest.kt index 3b5c74f..1dbe3cd 100644 --- a/src/test/kotlin/net/pterodactylus/sone/web/LoginPageTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/web/LoginPageTest.kt @@ -6,7 +6,6 @@ import net.pterodactylus.sone.freenet.wot.OwnIdentity 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 @@ -27,6 +26,8 @@ class LoginPageTest : WebPageTest() { private val sones = listOf(createSone("Sone", "Test"), createSone("Test"), createSone("Sone")) + override fun getPage() = page + private fun createSone(vararg contexts: String) = mock().apply { whenever(id).thenReturn(hashCode().toString()) val identity = mock().apply { @@ -48,30 +49,45 @@ class LoginPageTest : WebPageTest() { } @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, 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, contains(sones[1].identity)) } @Test + @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, containsInAnyOrder(sones[0], sones[1], sones[2])) assertThat(templateContext["identitiesWithoutSone"] as Iterable, 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]) } } @@ -81,10 +97,7 @@ class LoginPageTest : WebPageTest() { 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]) } }