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() }
@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
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
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
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
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
assertThat(page.isPrefixPage, equalTo(false))
}
+ private fun String.asJson() = objectMapper.readValue(this, Map::class.java) as Map<String, Any>
+
}