Replace web page test base 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 {
13
14         private val scaffolding = WebPageTest()
15         private val page = GetImagePage(scaffolding.webInterface)
16         private val freenetRequest = scaffolding.freenetRequest
17         private val response = scaffolding.response
18         private val responseContent = scaffolding.responseContent
19
20         @Test
21         fun `page returns correct path`() {
22                 assertThat(page.path, equalTo("getImage.html"))
23         }
24
25         @Test
26         fun `page is not a prefix page`() {
27                 assertThat(page.isPrefixPage, equalTo(false))
28         }
29
30         @Test
31         fun `page is not link-excepted`() {
32                 assertThat(page.isLinkExcepted(null), equalTo(false))
33         }
34
35         @Test
36         fun `invalid image returns 404 response`() {
37                 page.handleRequest(freenetRequest, response)
38                 assertThat(response.statusCode, equalTo(404))
39                 assertThat(response.statusText, equalTo("Not found."))
40                 assertThat(response.contentType, equalTo("text/html; charset=utf-8"))
41                 assertThat(responseContent.toByteArray(), equalTo(ByteArray(0)))
42         }
43
44         @Test
45         fun `valid image returns response with correct data`() {
46                 val image = TemporaryImage("temp-id").apply {
47                         mimeType = "image/test"
48                         imageData = ByteArray(5, Int::toByte)
49                 }
50                 scaffolding.addHttpRequestParameter("image", "temp-id")
51                 scaffolding.addTemporaryImage("temp-id", image)
52                 page.handleRequest(freenetRequest, response)
53                 assertThat(response.statusCode, equalTo(200))
54                 assertThat(response.contentType, equalTo("image/test"))
55                 assertThat(responseContent.toByteArray(), equalTo(ByteArray(5, Int::toByte)))
56                 println(response.headers.map { it.name to it.iterator().asSequence().toList() })
57                 assertThat(response.headers.map { it.name to it.iterator().asSequence().toList() }, contains(
58                                 "Content-Disposition" to listOf("attachment; filename=temp-id.test")
59                 ))
60         }
61
62 }