X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FWebPageTest.java;h=c73bf61f23169abd73286d0169bd2dd9cea8013c;hb=6b2461a58af4530997197ad3b17749f79c4d297a;hp=eefb641df3b1c45722a910947f4b66002d1444ec;hpb=a821184f9e7f54cb5b9ad18a213bbaea07d7d978;p=Sone.git diff --git a/src/test/java/net/pterodactylus/sone/web/WebPageTest.java b/src/test/java/net/pterodactylus/sone/web/WebPageTest.java index eefb641..c73bf61 100644 --- a/src/test/java/net/pterodactylus/sone/web/WebPageTest.java +++ b/src/test/java/net/pterodactylus/sone/web/WebPageTest.java @@ -11,11 +11,23 @@ import static org.mockito.Mockito.when; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.annotation.Nonnull; import net.pterodactylus.sone.core.Core; +import net.pterodactylus.sone.core.Preferences; import net.pterodactylus.sone.core.UpdateChecker; +import net.pterodactylus.sone.data.Album; +import net.pterodactylus.sone.data.Image; import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.sone.data.SoneOptions.DefaultSoneOptions; +import net.pterodactylus.sone.freenet.wot.OwnIdentity; import net.pterodactylus.sone.web.page.FreenetRequest; import net.pterodactylus.util.notify.Notification; import net.pterodactylus.util.template.Template; @@ -26,6 +38,7 @@ import freenet.clients.http.ToadletContext; import freenet.support.api.HTTPRequest; import com.google.common.base.Optional; +import com.google.common.eventbus.EventBus; import org.junit.Before; import org.junit.Rule; import org.junit.rules.ExpectedException; @@ -44,15 +57,20 @@ public abstract class WebPageTest { protected final Template template = new Template(); protected final WebInterface webInterface = mock(WebInterface.class, RETURNS_DEEP_STUBS); + protected final EventBus eventBus = mock(EventBus.class); protected final Core core = webInterface.getCore(); protected final Sone currentSone = mock(Sone.class); protected final TemplateContext templateContext = new TemplateContext(); protected final HTTPRequest httpRequest = mock(HTTPRequest.class); + protected final Map requestParameters = new HashMap<>(); + protected final Map requestHeaders = new HashMap<>(); protected final FreenetRequest freenetRequest = mock(FreenetRequest.class); protected final ToadletContext toadletContext = mock(ToadletContext.class); + private final Set ownIdentities = new HashSet<>(); + private final List localSones = new ArrayList<>(); @Before public final void setupFreenetRequest() { @@ -61,7 +79,41 @@ public abstract class WebPageTest { when(httpRequest.getPartAsStringFailsafe(anyString(), anyInt())).thenAnswer(new Answer() { @Override public String answer(InvocationOnMock invocation) throws Throwable { - return ""; + String parameter = invocation.getArgument(0); + int maxLength = invocation.getArgument(1); + return requestParameters.containsKey(parameter) ? requestParameters.get(parameter).substring(0, Math.min(maxLength, requestParameters.get(parameter).length())) : ""; + } + }); + when(httpRequest.getParam(anyString())).thenAnswer(new Answer() { + @Override + public String answer(InvocationOnMock invocation) throws Throwable { + String parameter = invocation.getArgument(0); + return requestParameters.containsKey(parameter) ? requestParameters.get(parameter) : ""; + } + }); + when(httpRequest.getParam(anyString(), anyString())).thenAnswer(new Answer() { + @Override + public String answer(InvocationOnMock invocation) throws Throwable { + String parameter = invocation.getArgument(0); + return requestParameters.containsKey(parameter) ? requestParameters.get(parameter) : invocation.getArgument(1); + } + }); + when(httpRequest.isPartSet(anyString())).thenAnswer(new Answer() { + @Override + public Boolean answer(InvocationOnMock invocation) throws Throwable { + return requestParameters.containsKey(invocation.getArgument(0)); + } + }); + when(httpRequest.getParts()).thenAnswer(new Answer() { + @Override + public String[] answer(InvocationOnMock invocation) throws Throwable { + return requestParameters.keySet().toArray(new String[requestParameters.size()]); + } + }); + when(httpRequest.getHeader(anyString())).thenAnswer(new Answer() { + @Override + public String answer(InvocationOnMock invocation) throws Throwable { + return requestHeaders.get(invocation.getArgument(0).toLowerCase()); } }); } @@ -69,16 +121,40 @@ public abstract class WebPageTest { @Before public final void setupCore() { UpdateChecker updateChecker = mock(UpdateChecker.class); - when(webInterface.getCore().getUpdateChecker()).thenReturn(updateChecker); + when(core.getUpdateChecker()).thenReturn(updateChecker); + when(core.getPreferences()).thenReturn(new Preferences(eventBus)); + when(core.getLocalSone(anyString())).thenReturn(null); + when(core.getLocalSones()).thenReturn(localSones); + when(core.getSone(anyString())).thenReturn(Optional.absent()); + when(core.getPost(anyString())).thenReturn(Optional.absent()); + when(core.getAlbum(anyString())).thenReturn(null); + when(core.getImage(anyString())).thenReturn(null); + when(core.getImage(anyString(), anyBoolean())).thenReturn(null); + } + + @Before + public final void setupIdentityManager() { + when(core.getIdentityManager().getAllOwnIdentities()).thenReturn(ownIdentities); } @Before public final void setupWebInterface() { when(webInterface.getCurrentSone(toadletContext)).thenReturn(currentSone); when(webInterface.getCurrentSone(eq(toadletContext), anyBoolean())).thenReturn(currentSone); + when(webInterface.getNotification(anyString())).thenReturn(Optional.absent()); when(webInterface.getNotifications(currentSone)).thenReturn(new ArrayList()); } + @Before + public void setupSone() { + when(currentSone.getOptions()).thenReturn(new DefaultSoneOptions()); + } + + protected void unsetCurrentSone() { + when(webInterface.getCurrentSone(toadletContext)).thenReturn(null); + when(webInterface.getCurrentSone(eq(toadletContext), anyBoolean())).thenReturn(null); + } + protected void request(String uri, Method method) { try { when(freenetRequest.getUri()).thenReturn(new URI(uri)); @@ -88,18 +164,42 @@ public abstract class WebPageTest { when(freenetRequest.getMethod()).thenReturn(method); } + protected void addHttpRequestHeader(@Nonnull String name, String value) { + requestHeaders.put(name.toLowerCase(), value); + } + protected void addHttpRequestParameter(String name, final String value) { - when(httpRequest.getPartAsStringFailsafe(eq(name), anyInt())).thenAnswer(new Answer() { - @Override - public String answer(InvocationOnMock invocation) throws Throwable { - int maxLength = invocation.getArgument(1); - return value.substring(0, Math.min(maxLength, value.length())); - } - }); + requestParameters.put(name, value); } protected void addPost(String postId, Post post) { when(core.getPost(postId)).thenReturn(Optional.fromNullable(post)); } + protected void addSone(String soneId, Sone sone) { + when(core.getSone(eq(soneId))).thenReturn(Optional.fromNullable(sone)); + } + + protected void addLocalSone(String soneId, Sone sone) { + when(core.getLocalSone(eq(soneId))).thenReturn(sone); + localSones.add(sone); + } + + protected void addOwnIdentity(OwnIdentity ownIdentity) { + ownIdentities.add(ownIdentity); + } + + protected void addAlbum(String albumId, Album album) { + when(core.getAlbum(eq(albumId))).thenReturn(album); + } + + protected void addImage(String imageId, Image image) { + when(core.getImage(eq(imageId))).thenReturn(image); + when(core.getImage(eq(imageId), anyBoolean())).thenReturn(image); + } + + protected void addNotification(String notificationId, Notification notification) { + when(webInterface.getNotification(eq(notificationId))).thenReturn(Optional.of(notification)); + } + }