Fix test so it runs on Windows, too
[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.test.*
4 import net.pterodactylus.sone.web.*
5 import net.pterodactylus.sone.web.page.*
6 import org.hamcrest.MatcherAssert.*
7 import org.hamcrest.Matchers.*
8 import org.junit.*
9 import org.junit.rules.*
10 import java.nio.file.*
11
12 /**
13  * Unit test for [ReloadingPage].
14  */
15 class ReloadingPageTest {
16
17         @Rule
18         @JvmField
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
26
27         @Test
28         fun `page returns correct path prefix`() {
29                 assertThat(page.path, equalTo("/prefix/"))
30         }
31
32         @Test
33         fun `page returns that it’s a prefix page`() {
34                 assertThat(page.isPrefixPage, equalTo(true))
35         }
36
37         @Test
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"))
43         }
44
45         @Test
46         fun `requesting valid file results in 200 and delivers file`() {
47                 val fileContent = listOf("Hello", "World").joinToString("\n", postfix = "\n")
48                 Files.writeString(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.toByteArray()))
55         }
56
57         @Test
58         fun `page can be created by dependency injection`() {
59                 assertThat(baseInjector.getInstance<ReloadingPage<*>>(), notNullValue())
60         }
61
62 }