X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FJsonPageBaseTest.kt;h=75a0cd43793736a593e25c5b85232316068e04d4;hp=fd1af2732ea7ea6732cd45202dda54996a77c319;hb=ea7ad5e87074576d17b7df74365a726bd95d7665;hpb=c22350cb3c7a26b235147e13da25735682b7f130 diff --git a/src/test/kotlin/net/pterodactylus/sone/web/ajax/JsonPageBaseTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/ajax/JsonPageBaseTest.kt index fd1af27..75a0cd4 100644 --- a/src/test/kotlin/net/pterodactylus/sone/web/ajax/JsonPageBaseTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/web/ajax/JsonPageBaseTest.kt @@ -19,13 +19,13 @@ class JsonPageBaseTest : TestObjects() { private var needsFormPassword = false private val pageCallCounter = AtomicInteger() - private var pageResponse = { JsonReturnObject(true) } + private var pageResponse = { JsonReturnObject(true).put("foo", "bar") } private val outputStream = ByteArrayOutputStream() private val response = Response(outputStream) private val page = object : JsonPage("path.html", webInterface) { - override fun needsFormPassword() = this@JsonPageBaseTest.needsFormPassword + override val needsFormPassword get() = this@JsonPageBaseTest.needsFormPassword override fun createJsonObject(request: FreenetRequest) = pageResponse().also { pageCallCounter.incrementAndGet() } @@ -52,6 +52,9 @@ class JsonPageBaseTest : TestObjects() { core.preferences.isRequireFullAccess = true page.handleRequest(freenetRequest, response) assertThat(response.statusCode, equalTo(403)) + assertThat(response.statusText, equalTo("Forbidden")) + assertThat(response.contentType, equalTo("application/json")) + assertThat(outputStream.toString("UTF-8").asJson(), equalTo(mapOf("success" to false, "error" to "auth-required"))) } @Test @@ -59,6 +62,9 @@ class JsonPageBaseTest : TestObjects() { needsFormPassword = true page.handleRequest(freenetRequest, response) assertThat(response.statusCode, equalTo(403)) + assertThat(response.statusText, equalTo("Forbidden")) + assertThat(response.contentType, equalTo("application/json")) + assertThat(outputStream.toString("UTF-8").asJson(), equalTo(mapOf("success" to false, "error" to "auth-required"))) } @Test @@ -67,6 +73,9 @@ class JsonPageBaseTest : TestObjects() { addRequestParameter("formPassword", formPassword + "_false") page.handleRequest(freenetRequest, response) assertThat(response.statusCode, equalTo(403)) + assertThat(response.statusText, equalTo("Forbidden")) + assertThat(response.contentType, equalTo("application/json")) + assertThat(outputStream.toString("UTF-8").asJson(), equalTo(mapOf("success" to false, "error" to "auth-required"))) } @Test @@ -75,6 +84,9 @@ class JsonPageBaseTest : TestObjects() { addRequestParameter("formPassword", formPassword) page.handleRequest(freenetRequest, response) assertThat(response.statusCode, equalTo(200)) + assertThat(response.statusText, equalTo("OK")) + assertThat(response.contentType, equalTo("application/json")) + assertThat(outputStream.toString("UTF-8").asJson(), equalTo(mapOf("success" to true, "foo" to "bar"))) } @Test @@ -82,20 +94,28 @@ class JsonPageBaseTest : TestObjects() { unsetCurrentSone() page.handleRequest(freenetRequest, response) assertThat(response.statusCode, equalTo(403)) + assertThat(response.statusText, equalTo("Forbidden")) + assertThat(response.contentType, equalTo("application/json")) + assertThat(outputStream.toString("UTF-8").asJson(), equalTo(mapOf("success" to false, "error" to "auth-required"))) } @Test fun `page returns content if login is required and current Sone is set`() { page.handleRequest(freenetRequest, response) - assertThat(response.statusCode, equalTo(200)) assertThat(pageCallCounter.get(), equalTo(1)) + assertThat(response.statusCode, equalTo(200)) + assertThat(response.statusText, equalTo("OK")) + assertThat(response.contentType, equalTo("application/json")) + assertThat(outputStream.toString("UTF-8").asJson(), equalTo(mapOf("success" to true, "foo" to "bar"))) } @Test fun `page returns 500 if execution throws exception`() { - pageResponse = { throw IllegalStateException() } + pageResponse = { throw IllegalStateException("some error occured") } page.handleRequest(freenetRequest, response) assertThat(response.statusCode, equalTo(500)) + assertThat(response.statusText, equalTo("some error occured")) + assertThat(response.contentType, equalTo("text/plain")) } @Test @@ -110,4 +130,6 @@ class JsonPageBaseTest : TestObjects() { assertThat(page.isPrefixPage, equalTo(false)) } + private fun String.asJson() = objectMapper.readValue(this, Map::class.java) as Map + }