Move web pages to their own package
[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 net.pterodactylus.sone.web.pages.GetImagePage
5 import net.pterodactylus.sone.web.pages.WebPageTest
6 import org.hamcrest.MatcherAssert.assertThat
7 import org.hamcrest.Matchers.equalTo
8 import org.junit.Test
9
10 /**
11  * Unit test for [GetImagePage].
12  */
13 class GetImagePageTest : WebPageTest() {
14
15         private val page = GetImagePage(webInterface)
16
17         @Test
18         fun `page returns correct path`() {
19                 assertThat(page.path, equalTo("getImage.html"))
20         }
21
22         @Test
23         fun `page is not a prefix page`() {
24                 assertThat(page.isPrefixPage, equalTo(false))
25         }
26
27         @Test
28         fun `page is not link-excepted`() {
29                 assertThat(page.isLinkExcepted(null), equalTo(false))
30         }
31
32         @Test
33         fun `invalid image returns 404 response`() {
34                 page.handleRequest(freenetRequest, response)
35                 assertThat(response.statusCode, equalTo(404))
36                 assertThat(responseBytes, equalTo(ByteArray(0)))
37         }
38
39         @Test
40         fun `valid image returns response with correct data`() {
41                 val image = TemporaryImage("temp-id").apply {
42                         mimeType = "image/test"
43                         imageData = ByteArray(5, Int::toByte)
44                 }
45                 addHttpRequestParameter("image", "temp-id")
46                 addTemporaryImage("temp-id", image)
47                 page.handleRequest(freenetRequest, response)
48                 assertThat(response.statusCode, equalTo(200))
49                 assertThat(response.contentType, equalTo("image/test"))
50                 assertThat(responseBytes, equalTo(ByteArray(5, Int::toByte)))
51         }
52
53 }