1 package net.pterodactylus.sone.web.pages
3 import com.google.common.base.Optional.absent
4 import net.pterodactylus.sone.data.Sone
5 import net.pterodactylus.sone.test.asOptional
6 import net.pterodactylus.sone.test.mock
7 import net.pterodactylus.sone.web.pages.WebPageTest
8 import net.pterodactylus.sone.web.pages.CreatePostPage
9 import net.pterodactylus.util.web.Method.POST
10 import org.hamcrest.MatcherAssert.assertThat
11 import org.hamcrest.Matchers.equalTo
13 import org.mockito.Mockito.verify
16 * Unit test for [CreatePostPage].
18 class CreatePostPageTest: WebPageTest() {
20 private val page = CreatePostPage(template, webInterface)
22 override fun getPage() = page
25 fun `page returns correct path`() {
26 assertThat(page.path, equalTo("createPost.html"))
30 fun `page requires login`() {
31 assertThat(page.requiresLogin(), equalTo(true))
35 fun `return page is set in template context`() {
36 addHttpRequestPart("returnPage", "return.html")
37 page.processTemplate(freenetRequest, templateContext)
38 assertThat(templateContext["returnPage"], equalTo<Any>("return.html"))
42 fun `post is created correctly`() {
44 addHttpRequestPart("returnPage", "return.html")
45 addHttpRequestPart("text", "post text")
46 verifyRedirect("return.html") {
47 verify(core).createPost(currentSone, absent(), "post text")
52 fun `creating an empty post is denied`() {
54 addHttpRequestPart("returnPage", "return.html")
55 addHttpRequestPart("text", " ")
56 page.processTemplate(freenetRequest, templateContext)
57 assertThat(templateContext["errorTextEmpty"], equalTo<Any>(true))
61 fun `a sender can be selected`() {
63 addHttpRequestPart("returnPage", "return.html")
64 addHttpRequestPart("text", "post text")
65 addHttpRequestPart("sender", "sender-id")
66 val sender = mock<Sone>()
67 addLocalSone("sender-id", sender)
68 verifyRedirect("return.html") {
69 verify(core).createPost(sender, absent(), "post text")
74 fun `a recipient can be selected`() {
76 addHttpRequestPart("returnPage", "return.html")
77 addHttpRequestPart("text", "post text")
78 addHttpRequestPart("recipient", "recipient-id")
79 val recipient = mock<Sone>()
80 addSone("recipient-id", recipient)
81 verifyRedirect("return.html") {
82 verify(core).createPost(currentSone, recipient.asOptional(), "post text")
87 fun `text is filtered correctly`() {
89 addHttpRequestPart("returnPage", "return.html")
90 addHttpRequestPart("text", "post http://localhost:12345/KSK@foo text")
91 addHttpRequestHeader("Host", "localhost:12345")
92 verifyRedirect("return.html") {
93 verify(core).createPost(currentSone, absent(), "post KSK@foo text")