2d44010658ee4cdf14f44569d70c5a35ca7a9397
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / ReloadingPageTest.kt
1 package net.pterodactylus.sone.web.pages
2
3 import net.pterodactylus.sone.web.pages.ReloadingPage
4 import net.pterodactylus.sone.web.page.FreenetRequest
5 import net.pterodactylus.util.web.Method.GET
6 import org.hamcrest.MatcherAssert.assertThat
7 import org.hamcrest.Matchers.equalTo
8 import org.junit.Rule
9 import org.junit.Test
10 import org.junit.rules.TemporaryFolder
11 import java.nio.file.Files
12 import java.nio.file.Paths
13 import kotlin.text.Charsets.UTF_8
14
15 /**
16  * Unit test for [ReloadingPage].
17  */
18 class ReloadingPageTest : WebPageTest() {
19
20         @Rule @JvmField val tempFolder = TemporaryFolder()
21         private val folder by lazy { tempFolder.newFolder() }
22         private val page by lazy { ReloadingPage<FreenetRequest>("/prefix/", folder.path, "text/plain") }
23
24         @Test
25         fun `page returns correct path prefix`() {
26                 assertThat(page.path, equalTo("/prefix/"))
27         }
28
29         @Test
30         fun `page returns that it’s a prefix page`() {
31                 assertThat(page.isPrefixPage, equalTo(true))
32         }
33
34         @Test
35         fun `requesting invalid file results in 404`() {
36                 request("/prefix/path/file.txt", GET)
37                 page.handleRequest(freenetRequest, response)
38                 assertThat(response.statusCode, equalTo(404))
39         }
40
41         @Test
42         fun `requesting valid file results in 200 and delivers file`() {
43                 Files.write(Paths.get(folder.path, "file.txt"), listOf("Hello", "World"), UTF_8)
44                 request("/prefix/path/file.txt", GET)
45                 page.handleRequest(freenetRequest, response)
46                 assertThat(response.statusCode, equalTo(200))
47                 assertThat(response.contentType, equalTo("text/plain"))
48                 assertThat(responseBytes, equalTo("Hello\nWorld\n".toByteArray()))
49         }
50
51 }