1 package net.pterodactylus.sone.web.ajax
3 import net.pterodactylus.sone.data.Post
4 import net.pterodactylus.sone.data.PostReply
5 import net.pterodactylus.sone.data.Sone
6 import net.pterodactylus.sone.test.mock
7 import net.pterodactylus.sone.test.whenever
8 import org.hamcrest.MatcherAssert.assertThat
9 import org.hamcrest.Matchers.equalTo
13 * Unit test for [CreateReplyAjaxPage].
15 class CreateReplyAjaxPageTest : JsonPageTest("createReply.ajax", pageSupplier = ::CreateReplyAjaxPage) {
18 fun `invalid post ID results in error message`() {
19 assertThat(json.isSuccess, equalTo(false))
20 assertThat(json.error, equalTo("invalid-post-id"))
24 fun `valid post ID results in created reply`() {
25 val post = mock<Post>()
26 addPost(post, "post-id")
27 val reply = mock<PostReply>().apply { whenever(id).thenReturn("reply-id") }
28 whenever(core.createReply(currentSone, post, "")).thenReturn(reply)
29 addRequestParameter("post", "post-id")
30 assertThat(json.isSuccess, equalTo(true))
31 assertThat(json["reply"].asText(), equalTo("reply-id"))
32 assertThat(json["sone"].asText(), equalTo("soneId"))
36 fun `text is filtered when creating reply`() {
37 val post = mock<Post>()
38 addPost(post, "post-id")
39 val reply = mock<PostReply>().apply { whenever(id).thenReturn("reply-id") }
40 whenever(core.createReply(currentSone, post, "Text with KSK@foo.bar link")).thenReturn(reply)
41 addRequestParameter("post", "post-id")
42 addRequestParameter("text", "Text with http://127.0.0.1:8888/KSK@foo.bar link")
43 addRequestHeader("Host", "127.0.0.1:8888")
44 assertThat(json.isSuccess, equalTo(true))
45 assertThat(json["reply"].asText(), equalTo("reply-id"))
46 assertThat(json["sone"].asText(), equalTo("soneId"))
50 fun `sender can be chosen from local sones`() {
51 val sone = mock<Sone>().apply { whenever(id).thenReturn("local-sone") }
53 val post = mock<Post>()
54 addPost(post, "post-id")
55 val reply = mock<PostReply>().apply { whenever(id).thenReturn("reply-id") }
56 whenever(core.createReply(sone, post, "Text")).thenReturn(reply)
57 addRequestParameter("post", "post-id")
58 addRequestParameter("text", "Text")
59 addRequestParameter("sender", "local-sone")
60 assertThat(json.isSuccess, equalTo(true))
61 assertThat(json["reply"].asText(), equalTo("reply-id"))
62 assertThat(json["sone"].asText(), equalTo("local-sone"))