Fix test so it runs on Windows, too
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / ReloadingPageTest.kt
index 1a80a1b..30cdc6b 100644 (file)
@@ -1,33 +1,28 @@
 package net.pterodactylus.sone.web.pages
 
-import freenet.support.api.HTTPRequest
-import net.pterodactylus.sone.test.mock
-import net.pterodactylus.sone.test.whenever
-import net.pterodactylus.sone.web.page.FreenetRequest
-import net.pterodactylus.util.web.Response
-import org.hamcrest.MatcherAssert.assertThat
-import org.hamcrest.Matchers.equalTo
-import org.junit.Rule
-import org.junit.Test
-import org.junit.rules.TemporaryFolder
-import java.io.ByteArrayOutputStream
-import java.net.URI
-import java.nio.file.Files
-import java.nio.file.Paths
-import kotlin.text.Charsets.UTF_8
+import net.pterodactylus.sone.test.*
+import net.pterodactylus.sone.web.*
+import net.pterodactylus.sone.web.page.*
+import org.hamcrest.MatcherAssert.*
+import org.hamcrest.Matchers.*
+import org.junit.*
+import org.junit.rules.*
+import java.nio.file.*
 
 /**
  * Unit test for [ReloadingPage].
  */
 class ReloadingPageTest {
 
-       @Rule @JvmField val tempFolder = TemporaryFolder()
+       @Rule
+       @JvmField
+       val tempFolder = TemporaryFolder()
        private val folder by lazy { tempFolder.newFolder()!! }
        private val page by lazy { ReloadingPage<FreenetRequest>("/prefix/", folder.path, "text/plain") }
-       private val freenetRequest = mock<FreenetRequest>()
-       private val httpRequest = mock<HTTPRequest>()
-       private val responseBytes = ByteArrayOutputStream()
-       private val response = Response(responseBytes)
+       private val webPageTest = WebPageTest()
+       private val freenetRequest = webPageTest.freenetRequest
+       private val responseBytes = webPageTest.responseContent
+       private val response = webPageTest.response
 
        @Test
        fun `page returns correct path prefix`() {
@@ -39,14 +34,9 @@ class ReloadingPageTest {
                assertThat(page.isPrefixPage, equalTo(true))
        }
 
-       private fun request(uri: String) {
-               whenever(httpRequest.path).thenReturn(uri)
-               whenever(freenetRequest.uri).thenReturn(URI(uri))
-       }
-
        @Test
        fun `requesting invalid file results in 404`() {
-               request("/prefix/path/file.txt")
+               webPageTest.request("/prefix/path/file.txt")
                page.handleRequest(freenetRequest, response)
                assertThat(response.statusCode, equalTo(404))
                assertThat(response.statusText, equalTo("Not found"))
@@ -54,13 +44,19 @@ class ReloadingPageTest {
 
        @Test
        fun `requesting valid file results in 200 and delivers file`() {
-               Files.write(Paths.get(folder.path, "file.txt"), listOf("Hello", "World"), UTF_8)
-               request("/prefix/path/file.txt")
+               val fileContent = listOf("Hello", "World").joinToString("\n", postfix = "\n")
+               Files.writeString(Paths.get(folder.path, "file.txt"), fileContent)
+               webPageTest.request("/prefix/path/file.txt")
                page.handleRequest(freenetRequest, response)
                assertThat(response.statusCode, equalTo(200))
                assertThat(response.statusText, equalTo("OK"))
                assertThat(response.contentType, equalTo("text/plain"))
-               assertThat(responseBytes.toByteArray(), equalTo("Hello\nWorld\n".toByteArray()))
+               assertThat(responseBytes.toByteArray(), equalTo(fileContent.toByteArray()))
+       }
+
+       @Test
+       fun `page can be created by dependency injection`() {
+               assertThat(baseInjector.getInstance<ReloadingPage<*>>(), notNullValue())
        }
 
 }