1 package net.pterodactylus.sone.web.pages
3 import net.pterodactylus.sone.web.page.FreenetRequest
4 import org.hamcrest.MatcherAssert.assertThat
5 import org.hamcrest.Matchers.equalTo
8 import org.junit.rules.TemporaryFolder
9 import java.nio.file.Files
10 import java.nio.file.Paths
11 import kotlin.text.Charsets.UTF_8
14 * Unit test for [ReloadingPage].
16 class ReloadingPageTest {
18 @Rule @JvmField val tempFolder = TemporaryFolder()
19 private val folder by lazy { tempFolder.newFolder()!! }
20 private val page by lazy { ReloadingPage<FreenetRequest>("/prefix/", folder.path, "text/plain") }
21 private val webPageTest = WebPageTest()
22 private val freenetRequest = webPageTest.freenetRequest
23 private val responseBytes = webPageTest.responseContent
24 private val response = webPageTest.response
27 fun `page returns correct path prefix`() {
28 assertThat(page.path, equalTo("/prefix/"))
32 fun `page returns that it’s a prefix page`() {
33 assertThat(page.isPrefixPage, equalTo(true))
37 fun `requesting invalid file results in 404`() {
38 webPageTest.request("/prefix/path/file.txt")
39 page.handleRequest(freenetRequest, response)
40 assertThat(response.statusCode, equalTo(404))
41 assertThat(response.statusText, equalTo("Not found"))
45 fun `requesting valid file results in 200 and delivers file`() {
46 Files.write(Paths.get(folder.path, "file.txt"), listOf("Hello", "World"), UTF_8)
47 webPageTest.request("/prefix/path/file.txt")
48 page.handleRequest(freenetRequest, response)
49 assertThat(response.statusCode, equalTo(200))
50 assertThat(response.statusText, equalTo("OK"))
51 assertThat(response.contentType, equalTo("text/plain"))
52 assertThat(responseBytes.toByteArray(), equalTo("Hello\nWorld\n".toByteArray()))