1 package net.pterodactylus.sone.web.pages
3 import net.pterodactylus.sone.data.*
4 import net.pterodactylus.sone.test.*
5 import net.pterodactylus.sone.web.*
6 import org.hamcrest.MatcherAssert.*
7 import org.hamcrest.Matchers.*
12 * Unit test for [GetImagePage].
14 class GetImagePageTest {
16 private val scaffolding = WebPageTest()
17 private val page = GetImagePage(scaffolding.webInterface)
18 private val freenetRequest = scaffolding.freenetRequest
19 private val response = scaffolding.response
20 private val responseContent = scaffolding.responseContent
23 fun `page returns correct path`() {
24 assertThat(page.path, equalTo("getImage.html"))
28 fun `page is not a prefix page`() {
29 assertThat(page.isPrefixPage, equalTo(false))
33 fun `page is not link-excepted`() {
34 assertThat(page.isLinkExcepted(URI("")), equalTo(false))
38 fun `invalid image returns 404 response`() {
39 page.handleRequest(freenetRequest, response)
40 assertThat(response.statusCode, equalTo(404))
41 assertThat(response.statusText, equalTo("Not found."))
42 assertThat(response.contentType, equalTo("text/html; charset=utf-8"))
43 assertThat(responseContent.toByteArray(), equalTo(ByteArray(0)))
47 fun `valid image returns response with correct data`() {
48 val image = TemporaryImage("temp-id").apply {
49 mimeType = "image/test"
50 imageData = ByteArray(5, Int::toByte)
52 scaffolding.addHttpRequestParameter("image", "temp-id")
53 scaffolding.addTemporaryImage("temp-id", image)
54 page.handleRequest(freenetRequest, response)
55 assertThat(response.statusCode, equalTo(200))
56 assertThat(response.contentType, equalTo("image/test"))
57 assertThat(responseContent.toByteArray(), equalTo(ByteArray(5, Int::toByte)))
58 println(response.headers.map { it.name to it.iterator().asSequence().toList() })
59 assertThat(response.headers.map { it.name to it.iterator().asSequence().toList() }, contains(
60 "Content-Disposition" to listOf("attachment; filename=temp-id.test")
65 fun `page can be created by dependency injection`() {
66 assertThat(baseInjector.getInstance<GetImagePage>(), notNullValue())