1 package net.pterodactylus.sone.web.pages
3 import net.pterodactylus.sone.data.TemporaryImage
4 import org.hamcrest.MatcherAssert.assertThat
5 import org.hamcrest.Matchers.contains
6 import org.hamcrest.Matchers.equalTo
10 * Unit test for [GetImagePage].
12 class GetImagePageTest : WebPageTest() {
14 private val page = GetImagePage(webInterface)
17 fun `page returns correct path`() {
18 assertThat(page.path, equalTo("getImage.html"))
22 fun `page is not a prefix page`() {
23 assertThat(page.isPrefixPage, equalTo(false))
27 fun `page is not link-excepted`() {
28 assertThat(page.isLinkExcepted(null), equalTo(false))
32 fun `invalid image returns 404 response`() {
33 page.handleRequest(freenetRequest, response)
34 assertThat(response.statusCode, equalTo(404))
35 assertThat(response.statusText, equalTo("Not found."))
36 assertThat(response.contentType, equalTo("text/html; charset=utf-8"))
37 assertThat(responseBytes, equalTo(ByteArray(0)))
41 fun `valid image returns response with correct data`() {
42 val image = TemporaryImage("temp-id").apply {
43 mimeType = "image/test"
44 imageData = ByteArray(5, Int::toByte)
46 addHttpRequestParameter("image", "temp-id")
47 addTemporaryImage("temp-id", image)
48 page.handleRequest(freenetRequest, response)
49 assertThat(response.statusCode, equalTo(200))
50 assertThat(response.contentType, equalTo("image/test"))
51 assertThat(responseBytes, equalTo(ByteArray(5, Int::toByte)))
52 println(response.headers.map { it.name to it.iterator().asSequence().toList() })
53 assertThat(response.headers.map { it.name to it.iterator().asSequence().toList() }, contains(
54 "Content-Disposition" to listOf("attachment; filename=temp-id.test")