1 package net.pterodactylus.sone.web.ajax;
3 import static org.hamcrest.MatcherAssert.assertThat;
4 import static org.hamcrest.Matchers.is;
5 import static org.hamcrest.Matchers.nullValue;
6 import static org.mockito.Matchers.any;
7 import static org.mockito.Mockito.when;
9 import net.pterodactylus.sone.data.Mocks;
10 import net.pterodactylus.sone.data.Sone;
11 import net.pterodactylus.sone.web.page.FreenetRequest;
13 import freenet.clients.http.ToadletContext;
14 import freenet.support.api.HTTPRequest;
16 import org.junit.Test;
19 * Unit test for {@link CreatePostAjaxPage}.
21 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
23 public class CreatePostAjaxPageTest {
25 private final Mocks mocks = new Mocks();
26 private final CreatePostAjaxPage createPostAjaxPage = new CreatePostAjaxPage(mocks.webInterface);
29 public void missingSoneResultsInAnError() {
30 JsonReturnObject jsonReturnObject = createPostAjaxPage.createJsonObject(mocks.mockRequest(""));
31 verifyError(jsonReturnObject, "auth-required");
34 private void verifyError(JsonReturnObject jsonReturnObject, String error) {
35 assertThat(jsonReturnObject.isSuccess(), is(false));
36 assertThat(((JsonErrorReturnObject) jsonReturnObject).getError(), is(error));
40 public void missingTextResultsInError() {
42 FreenetRequest request = mocks.mockRequest("");
43 JsonReturnObject jsonReturnObject = createPostAjaxPage.createJsonObject(request);
44 verifyError(jsonReturnObject, "text-required");
48 public void emptyTextResultsInError() {
52 private void configureText(FreenetRequest request, String text) {
53 HTTPRequest httpRequest = request.getHttpRequest();
54 when(httpRequest.getParam("text")).thenReturn(text);
57 private void configureLocalSone() {
58 Sone sone = mocks.mockSone("Sone").local().create();
59 when(mocks.webInterface.getCurrentSone(any(ToadletContext.class))).thenReturn(sone);
63 public void postIsCreated() {
65 FreenetRequest request = mocks.mockRequest("");
66 configureText(request, "Test text.");
67 JsonReturnObject jsonReturnObject = createPostAjaxPage.createJsonObject(request);
68 assertThat(jsonReturnObject.isSuccess(), is(true));
69 assertThat(mocks.database.getPost(jsonReturnObject.get("postId").asText()).isPresent(), is(true));
73 public void postWithMissingRecipientIsCreatedWithoutRecipient() {
75 FreenetRequest request = mocks.mockRequest("");
76 configureText(request, "Test text.");
77 when(request.getHttpRequest().getParam("recipient")).thenReturn("Recipient");
78 JsonReturnObject jsonReturnObject = createPostAjaxPage.createJsonObject(request);
79 assertThat(jsonReturnObject.isSuccess(), is(true));
80 assertThat(mocks.database.getPost(jsonReturnObject.get("postId").asText()).isPresent(), is(true));
81 assertThat(jsonReturnObject.get("recipient").textValue(), nullValue());
85 public void postWithRecipientIsCreatedWithRecipient() {
87 FreenetRequest request = mocks.mockRequest("");
88 configureRecipient(request);
89 configureText(request, "Test text.");
90 JsonReturnObject jsonReturnObject = createPostAjaxPage.createJsonObject(request);
91 assertThat(jsonReturnObject.isSuccess(), is(true));
92 assertThat(mocks.database.getPost(jsonReturnObject.get("postId").asText()).isPresent(), is(true));
93 assertThat(jsonReturnObject.get("recipient").textValue(), is("Recipient"));
96 private void configureRecipient(FreenetRequest request) {
97 mocks.mockSone("Recipient").create();
98 when(request.getHttpRequest().getParam("recipient")).thenReturn("Recipient");