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=f9554f3761b38075b0d48983d808466d37ed3ea0;hp=fd1af2732ea7ea6732cd45202dda54996a77c319;hb=ca45de0dcbd2e361ab630bbee1d47ff6cf34d97c;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..f9554f3 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) { + private val page = object : JsonPage(webInterface) { - override fun needsFormPassword() = this@JsonPageBaseTest.needsFormPassword + override val needsFormPassword get() = this@JsonPageBaseTest.needsFormPassword override fun createJsonObject(request: FreenetRequest) = pageResponse().also { pageCallCounter.incrementAndGet() } @@ -49,9 +49,12 @@ class JsonPageBaseTest : TestObjects() { @Test fun `page returns 403 is full access is required but request is not full access`() { - core.preferences.isRequireFullAccess = true + core.preferences.newRequireFullAccess = 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 + }