Merge branch 'release-0.9.6'
[Sone.git] / src / test / java / net / pterodactylus / sone / web / CreateReplyPageTest.java
1 package net.pterodactylus.sone.web;
2
3 import static net.pterodactylus.sone.web.WebTestUtils.redirectsTo;
4 import static net.pterodactylus.util.web.Method.GET;
5 import static net.pterodactylus.util.web.Method.POST;
6 import static org.hamcrest.MatcherAssert.assertThat;
7 import static org.hamcrest.Matchers.is;
8 import static org.mockito.ArgumentMatchers.any;
9 import static org.mockito.ArgumentMatchers.anyString;
10 import static org.mockito.Mockito.mock;
11 import static org.mockito.Mockito.never;
12 import static org.mockito.Mockito.verify;
13
14 import net.pterodactylus.sone.data.Post;
15 import net.pterodactylus.sone.data.Sone;
16
17 import org.junit.Test;
18
19 /**
20  * Unit test for {@link CreateReplyPageTest}.
21  *
22  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
23  */
24 public class CreateReplyPageTest extends WebPageTest {
25
26         private final CreateReplyPage page = new CreateReplyPage(template, webInterface);
27
28         @Test
29         public void pageReturnsCorrectPath() {
30                 assertThat(page.getPath(), is("createReply.html"));
31         }
32
33         @Test
34         public void replyIsCreatedCorrectly() throws Exception {
35                 request("", POST);
36                 addHttpRequestParameter("post", "post-id");
37                 addHttpRequestParameter("text", "some text");
38                 addHttpRequestParameter("returnPage", "returnPage.html");
39                 Post post = mock(Post.class);
40                 addPost("post-id", post);
41                 expectedException.expect(redirectsTo("returnPage.html"));
42                 try {
43                         page.processTemplate(freenetRequest, templateContext);
44                 } finally {
45                         verify(core).createReply(currentSone, post, "some text");
46                 }
47         }
48
49         @Test
50         public void replyIsCreatedWithCorrectSender() throws Exception {
51                 request("", POST);
52                 addHttpRequestParameter("post", "post-id");
53                 addHttpRequestParameter("text", "some text");
54                 addHttpRequestParameter("returnPage", "returnPage.html");
55                 addHttpRequestParameter("sender", "sender-id");
56                 Sone sender = mock(Sone.class);
57                 addLocalSone("sender-id", sender);
58                 Post post = mock(Post.class);
59                 addPost("post-id", post);
60                 expectedException.expect(redirectsTo("returnPage.html"));
61                 try {
62                         page.processTemplate(freenetRequest, templateContext);
63                 } finally {
64                         verify(core).createReply(sender, post, "some text");
65                 }
66         }
67
68         @Test
69         public void emptyTextSetsVariableInTemplateContext() throws Exception {
70                 request("", POST);
71                 addPost("post-id", mock(Post.class));
72                 addHttpRequestParameter("post", "post-id");
73                 addHttpRequestParameter("text", "   ");
74                 addHttpRequestParameter("returnPage", "returnPage.html");
75                 page.processTemplate(freenetRequest, templateContext);
76                 assertThat(templateContext.<Boolean>get("errorTextEmpty", Boolean.class), is(true));
77                 verifyParametersAreCopied("");
78                 verify(core, never()).createReply(any(Sone.class), any(Post.class), anyString());
79         }
80
81         private void verifyParametersAreCopied(String text) {
82                 assertThat(templateContext.<String>get("postId", String.class), is("post-id"));
83                 assertThat(templateContext.<String>get("text", String.class), is(text));
84                 assertThat(templateContext.<String>get("returnPage", String.class), is("returnPage.html"));
85         }
86
87         @Test
88         public void userIsRedirectIfPostDoesNotExist() throws Exception {
89                 request("", POST);
90                 addHttpRequestParameter("post", "post-id");
91                 addHttpRequestParameter("text", "some text");
92                 addHttpRequestParameter("returnPage", "returnPage.html");
93                 expectedException.expect(redirectsTo("noPermission.html"));
94                 page.processTemplate(freenetRequest, templateContext);
95         }
96
97         @Test
98         public void getRequestServesTemplateAndStoresParameters() throws Exception {
99                 request("", GET);
100                 addHttpRequestParameter("post", "post-id");
101                 addHttpRequestParameter("text", "some text");
102                 addHttpRequestParameter("returnPage", "returnPage.html");
103                 page.processTemplate(freenetRequest, templateContext);
104                 verifyParametersAreCopied("some text");
105         }
106
107 }