1 package net.pterodactylus.sone.web.pages
3 import net.pterodactylus.sone.test.*
4 import net.pterodactylus.sone.web.*
5 import net.pterodactylus.sone.web.page.*
6 import org.hamcrest.MatcherAssert.*
7 import org.hamcrest.Matchers.*
9 import org.junit.rules.*
10 import java.nio.file.*
13 * Unit test for [ReloadingPage].
15 class ReloadingPageTest {
19 val tempFolder = TemporaryFolder()
20 private val folder by lazy { tempFolder.newFolder()!! }
21 private val page by lazy { ReloadingPage<FreenetRequest>("/prefix/", folder.path, "text/plain") }
22 private val webPageTest = WebPageTest()
23 private val freenetRequest = webPageTest.freenetRequest
24 private val responseBytes = webPageTest.responseContent
25 private val response = webPageTest.response
28 fun `page returns correct path prefix`() {
29 assertThat(page.path, equalTo("/prefix/"))
33 fun `page returns that it’s a prefix page`() {
34 assertThat(page.isPrefixPage, equalTo(true))
38 fun `requesting invalid file results in 404`() {
39 webPageTest.request("/prefix/path/file.txt")
40 page.handleRequest(freenetRequest, response)
41 assertThat(response.statusCode, equalTo(404))
42 assertThat(response.statusText, equalTo("Not found"))
46 fun `requesting valid file results in 200 and delivers file`() {
47 val fileContent = listOf("Hello", "World").joinToString("\n", postfix = "\n").toByteArray()
48 Files.write(Paths.get(folder.path, "file.txt"), fileContent)
49 webPageTest.request("/prefix/path/file.txt")
50 page.handleRequest(freenetRequest, response)
51 assertThat(response.statusCode, equalTo(200))
52 assertThat(response.statusText, equalTo("OK"))
53 assertThat(response.contentType, equalTo("text/plain"))
54 assertThat(responseBytes.toByteArray(), equalTo(fileContent))
58 fun `page can be created by dependency injection`() {
59 assertThat(baseInjector.getInstance<ReloadingPage<*>>(), notNullValue())