Add test for DI constructability of TrustAjaxPage
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / ajax / CreatePostAjaxPageTest.kt
index 0588b6a..821198f 100644 (file)
@@ -3,59 +3,37 @@ package net.pterodactylus.sone.web.ajax
 import com.google.common.base.Optional
 import net.pterodactylus.sone.data.Post
 import net.pterodactylus.sone.data.Sone
+import net.pterodactylus.sone.test.getInstance
 import net.pterodactylus.sone.test.mock
 import net.pterodactylus.sone.test.whenever
 import net.pterodactylus.sone.utils.asOptional
+import net.pterodactylus.sone.web.baseInjector
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.equalTo
+import org.hamcrest.Matchers.notNullValue
 import org.hamcrest.Matchers.nullValue
 import org.junit.Test
 
 /**
  * Unit test for [CreatePostAjaxPage].
  */
-class CreatePostAjaxPageTest : JsonPageTest(::CreatePostAjaxPage) {
-
-       @Test
-       fun `page returns correct path`() {
-               assertThat(page.path, equalTo("createPost.ajax"))
-       }
-
-       @Test
-       fun `page needs form password`() {
-               assertThat(page.needsFormPassword(), equalTo(true))
-       }
-
-       @Test
-       fun `page requires login`() {
-               assertThat(page.requiresLogin(), equalTo(true))
-       }
-
-       @Test
-       fun `page requires a current sone`() {
-               unsetCurrentSone()
-               assertThat(json.isSuccess, equalTo(false))
-               assertThat(json.error, equalTo("auth-required"))
-       }
+class CreatePostAjaxPageTest : JsonPageTest("createPost.ajax", pageSupplier = ::CreatePostAjaxPage) {
 
        @Test
        fun `missing text parameter returns error`() {
-               assertThat(json.isSuccess, equalTo(false))
-               assertThat(json.error, equalTo("text-required"))
+               assertThatJsonFailed("text-required")
        }
 
        @Test
        fun `empty text returns error`() {
                addRequestParameter("text", "")
-               assertThat(json.isSuccess, equalTo(false))
-               assertThat(json.error, equalTo("text-required"))
+               assertThatJsonFailed("text-required")
        }
 
        @Test
        fun `whitespace-only text returns error`() {
                addRequestParameter("text", "  ")
-               assertThat(json.isSuccess, equalTo(false))
-               assertThat(json.error, equalTo("text-required"))
+               assertThatJsonFailed("text-required")
        }
 
        @Test
@@ -63,9 +41,9 @@ class CreatePostAjaxPageTest : JsonPageTest(::CreatePostAjaxPage) {
                addRequestParameter("text", "test")
                val post = createPost()
                whenever(core.createPost(currentSone, Optional.absent(), "test")).thenReturn(post)
-               assertThat(json.isSuccess, equalTo(true))
-               assertThat(json["postId"].asText(), equalTo("id"))
-               assertThat(json["sone"].asText(), equalTo(currentSone.id))
+               assertThatJsonIsSuccessful()
+               assertThat(json["postId"]?.asText(), equalTo("id"))
+               assertThat(json["sone"]?.asText(), equalTo(currentSone.id))
                assertThat(json["recipient"], nullValue())
        }
 
@@ -75,9 +53,9 @@ class CreatePostAjaxPageTest : JsonPageTest(::CreatePostAjaxPage) {
                addRequestParameter("recipient", "invalid")
                val post = createPost()
                whenever(core.createPost(currentSone, Optional.absent(), "test")).thenReturn(post)
-               assertThat(json.isSuccess, equalTo(true))
-               assertThat(json["postId"].asText(), equalTo("id"))
-               assertThat(json["sone"].asText(), equalTo(currentSone.id))
+               assertThatJsonIsSuccessful()
+               assertThat(json["postId"]?.asText(), equalTo("id"))
+               assertThat(json["sone"]?.asText(), equalTo(currentSone.id))
                assertThat(json["recipient"], nullValue())
        }
 
@@ -89,10 +67,10 @@ class CreatePostAjaxPageTest : JsonPageTest(::CreatePostAjaxPage) {
                addSone(recipient)
                val post = createPost("valid")
                whenever(core.createPost(currentSone, Optional.of(recipient), "test")).thenReturn(post)
-               assertThat(json.isSuccess, equalTo(true))
-               assertThat(json["postId"].asText(), equalTo("id"))
-               assertThat(json["sone"].asText(), equalTo(currentSone.id))
-               assertThat(json["recipient"].asText(), equalTo("valid"))
+               assertThatJsonIsSuccessful()
+               assertThat(json["postId"]?.asText(), equalTo("id"))
+               assertThat(json["sone"]?.asText(), equalTo(currentSone.id))
+               assertThat(json["recipient"]?.asText(), equalTo("valid"))
        }
 
        @Test
@@ -101,9 +79,9 @@ class CreatePostAjaxPageTest : JsonPageTest(::CreatePostAjaxPage) {
                addRequestHeader("Host", "freenet.test:8888")
                val post = createPost()
                whenever(core.createPost(currentSone, Optional.absent(), "Link KSK@foo is filtered")).thenReturn(post)
-               assertThat(json.isSuccess, equalTo(true))
-               assertThat(json["postId"].asText(), equalTo("id"))
-               assertThat(json["sone"].asText(), equalTo(currentSone.id))
+               assertThatJsonIsSuccessful()
+               assertThat(json["postId"]?.asText(), equalTo("id"))
+               assertThat(json["sone"]?.asText(), equalTo(currentSone.id))
                assertThat(json["recipient"], nullValue())
        }
 
@@ -114,4 +92,9 @@ class CreatePostAjaxPageTest : JsonPageTest(::CreatePostAjaxPage) {
                                whenever(this.recipientId).thenReturn(recipientId.asOptional())
                        }
 
+       @Test
+       fun `page can be created by dependency injection`() {
+           assertThat(baseInjector.getInstance<CreatePostAjaxPage>(), notNullValue())
+       }
+
 }