Replace get image page with Kotlin version
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / GetImagePageTest.kt
1 package net.pterodactylus.sone.web.pages
2
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
7 import org.junit.Test
8
9 /**
10  * Unit test for [GetImagePage].
11  */
12 class GetImagePageTest : WebPageTest() {
13
14         private val page = GetImagePage(webInterface)
15
16         @Test
17         fun `page returns correct path`() {
18                 assertThat(page.path, equalTo("getImage.html"))
19         }
20
21         @Test
22         fun `page is not a prefix page`() {
23                 assertThat(page.isPrefixPage, equalTo(false))
24         }
25
26         @Test
27         fun `page is not link-excepted`() {
28                 assertThat(page.isLinkExcepted(null), equalTo(false))
29         }
30
31         @Test
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)))
38         }
39
40         @Test
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)
45                 }
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")
55                 ))
56         }
57
58 }