1db89d0bb306c351ad6a576093fb15ca7b0ae257
[Sone.git] / src / test / java / net / pterodactylus / sone / web / ajax / BookmarkAjaxPageTest.java
1 /*
2  * © 2013 xplosion interactive
3  */
4
5 package net.pterodactylus.sone.web.ajax;
6
7 import static org.hamcrest.CoreMatchers.is;
8 import static org.hamcrest.CoreMatchers.notNullValue;
9 import static org.junit.Assert.assertThat;
10 import static org.mockito.Matchers.anyString;
11 import static org.mockito.Mockito.mock;
12 import static org.mockito.Mockito.never;
13 import static org.mockito.Mockito.times;
14 import static org.mockito.Mockito.verify;
15 import static org.mockito.Mockito.when;
16
17 import java.net.URI;
18 import java.net.URISyntaxException;
19
20 import net.pterodactylus.sone.core.Core;
21 import net.pterodactylus.sone.web.WebInterface;
22 import net.pterodactylus.sone.web.page.FreenetRequest;
23
24 import freenet.clients.http.HTTPRequestImpl;
25 import freenet.support.api.HTTPRequest;
26 import org.junit.Test;
27
28 /**
29  * Tests for {@link BookmarkAjaxPage}.
30  *
31  * @author <a href="mailto:d.roden@xplosion.de">David Roden</a>
32  */
33 public class BookmarkAjaxPageTest {
34
35         @Test
36         public void testBookmarkingExistingPost() throws URISyntaxException {
37                 /* create mocks. */
38                 Core core = mock(Core.class);
39                 WebInterface webInterface = mock(WebInterface.class);
40                 when(webInterface.getCore()).thenReturn(core);
41                 HTTPRequest httpRequest = new HTTPRequestImpl(new URI("/ajax/bookmark.ajax?post=abc"), "GET");
42                 FreenetRequest request = mock(FreenetRequest.class);
43                 when(request.getHttpRequest()).thenReturn(httpRequest);
44
45                 /* create JSON page. */
46                 BookmarkAjaxPage bookmarkAjaxPage = new BookmarkAjaxPage(webInterface);
47                 JsonReturnObject jsonReturnObject = bookmarkAjaxPage.createJsonObject(request);
48
49                 /* verify response. */
50                 assertThat(jsonReturnObject, notNullValue());
51                 assertThat(jsonReturnObject.isSuccess(), is(true));
52
53                 /* verify behaviour. */
54                 verify(core, times(1)).bookmarkPost(anyString());
55                 verify(core).bookmarkPost("abc");
56         }
57
58         @Test
59         public void testBookmarkingMissingPost() throws URISyntaxException {
60                 /* create mocks. */
61                 Core core = mock(Core.class);
62                 WebInterface webInterface = mock(WebInterface.class);
63                 when(webInterface.getCore()).thenReturn(core);
64                 HTTPRequest httpRequest = new HTTPRequestImpl(new URI("/ajax/bookmark.ajax"), "GET");
65                 FreenetRequest request = mock(FreenetRequest.class);
66                 when(request.getHttpRequest()).thenReturn(httpRequest);
67
68                 /* create JSON page. */
69                 BookmarkAjaxPage bookmarkAjaxPage = new BookmarkAjaxPage(webInterface);
70                 JsonReturnObject jsonReturnObject = bookmarkAjaxPage.createJsonObject(request);
71
72                 /* verify response. */
73                 assertThat(jsonReturnObject, notNullValue());
74                 assertThat(jsonReturnObject.isSuccess(), is(false));
75                 assertThat(((JsonErrorReturnObject) jsonReturnObject).getError(), is("invalid-post-id"));
76
77                 /* verify behaviour. */
78                 verify(core, never()).bookmarkPost(anyString());
79         }
80
81 }