Add unit test for DeletePostAjaxPage.
[Sone.git] / src / test / java / net / pterodactylus / sone / web / ajax / DeletePostAjaxPageTest.java
1 package net.pterodactylus.sone.web.ajax;
2
3 import static org.hamcrest.MatcherAssert.assertThat;
4 import static org.hamcrest.Matchers.is;
5 import static org.mockito.Mockito.verify;
6 import static org.mockito.Mockito.when;
7
8 import net.pterodactylus.sone.data.Mocks;
9 import net.pterodactylus.sone.data.Post;
10 import net.pterodactylus.sone.data.Sone;
11 import net.pterodactylus.sone.web.page.FreenetRequest;
12
13 import org.junit.Test;
14
15 /**
16  * Unit test for {@link DeletePostAjaxPage}.
17  *
18  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
19  */
20 public class DeletePostAjaxPageTest {
21
22         private Mocks mocks = new Mocks();
23         private final DeletePostAjaxPage deletePostAjaxPage = new DeletePostAjaxPage(mocks.webInterface);
24         private final FreenetRequest freenetRequest = mocks.mockRequest("deletePost.ajax");
25
26         @Test
27         public void canDeletePost() {
28                 Sone sender = mocks.mockSone("SoneId").local().create();
29                 Post post = mocks.mockPost(sender, "PostId").create();
30                 when(freenetRequest.getHttpRequest().getParam("post")).thenReturn("PostId");
31                 JsonReturnObject jsonReturnObject = deletePostAjaxPage.createJsonObject(freenetRequest);
32                 assertThat(jsonReturnObject.isSuccess(), is(true));
33                 verify(mocks.core).deletePost(post);
34         }
35
36         @Test
37         public void canNotDeletePostWithInvalidId() {
38                 JsonReturnObject jsonReturnObject = deletePostAjaxPage.createJsonObject(freenetRequest);
39                 verifyFailure(jsonReturnObject, "invalid-post-id");
40         }
41
42         private void verifyFailure(JsonReturnObject jsonReturnObject, String errorId) {
43                 assertThat(jsonReturnObject.isSuccess(), is(false));
44                 assertThat(((JsonErrorReturnObject) jsonReturnObject).getError(), is(errorId));
45         }
46
47         @Test
48         public void canNotDeletePostFromRemoteSone() {
49                 Sone sender = mocks.mockSone("SoneId").create();
50                 mocks.mockPost(sender, "PostId").create();
51                 when(freenetRequest.getHttpRequest().getParam("post")).thenReturn("PostId");
52                 JsonReturnObject jsonReturnObject = deletePostAjaxPage.createJsonObject(freenetRequest);
53                 verifyFailure(jsonReturnObject, "not-authorized");
54         }
55
56 }