e5621f0aaaa8d0884d5324b8b9d4e89d89a82a5e
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / ajax / JsonPageTest.kt
1 package net.pterodactylus.sone.web.ajax
2
3 import net.pterodactylus.sone.test.mock
4 import net.pterodactylus.sone.web.WebInterface
5 import org.hamcrest.MatcherAssert.assertThat
6 import org.hamcrest.Matchers.equalTo
7 import org.junit.Test
8
9 /**
10  * Base class for tests for any [JsonPage] implementations.
11  */
12 abstract class JsonPageTest(
13                 private val expectedPath: String,
14                 private val requiresLogin: Boolean = true,
15                 private val needsFormPassword: Boolean = true,
16                 pageSupplier: (WebInterface) -> JsonPage = { mock() }): TestObjects() {
17
18         protected open val page: JsonPage by lazy { pageSupplier(webInterface) }
19         protected val json by lazy {
20                 page.createJsonObject(freenetRequest)
21         }
22
23         protected val JsonReturnObject.error get() = if (this is JsonErrorReturnObject) this.error else null
24
25         @Test
26         fun `page returns correct path`() {
27                 assertThat(page.path, equalTo(expectedPath))
28         }
29
30         @Test
31         fun `page needs form password`() {
32                 assertThat(page.needsFormPassword, equalTo(needsFormPassword))
33         }
34
35         @Test
36         fun `page requires login`() {
37                 assertThat(page.requiresLogin, equalTo(requiresLogin))
38         }
39
40 }