X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneInserterTest.java;h=32926e8c30064dd980e786540da059473e95c0ff;hp=c44ced600ce91eae3c661d5a12c8ab7fcdddf6f1;hb=62573c314957b1851f4fbe693b8746686caa940a;hpb=b2b444224f9ad00d75bf58d07efb554dbdcb4226 diff --git a/src/test/java/net/pterodactylus/sone/core/SoneInserterTest.java b/src/test/java/net/pterodactylus/sone/core/SoneInserterTest.java index c44ced6..32926e8 100644 --- a/src/test/java/net/pterodactylus/sone/core/SoneInserterTest.java +++ b/src/test/java/net/pterodactylus/sone/core/SoneInserterTest.java @@ -1,27 +1,29 @@ package net.pterodactylus.sone.core; -import static com.google.common.base.Optional.absent; -import static com.google.common.base.Optional.of; +import static com.google.common.io.ByteStreams.toByteArray; import static com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor; +import static java.lang.System.currentTimeMillis; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.argThat; -import static org.mockito.Matchers.eq; +import static org.hamcrest.Matchers.nullValue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static org.mockito.hamcrest.MockitoHamcrest.argThat; +import java.io.IOException; import java.util.HashMap; +import java.util.Map; -import net.pterodactylus.sone.core.SoneInserter.InsertInformation; +import net.pterodactylus.sone.core.SoneInserter.ManifestCreator; import net.pterodactylus.sone.core.event.InsertionDelayChangedEvent; import net.pterodactylus.sone.core.event.SoneEvent; import net.pterodactylus.sone.core.event.SoneInsertAbortedEvent; @@ -29,9 +31,12 @@ import net.pterodactylus.sone.core.event.SoneInsertedEvent; import net.pterodactylus.sone.core.event.SoneInsertingEvent; import net.pterodactylus.sone.data.Album; import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.sone.main.SonePlugin; import freenet.keys.FreenetURI; +import freenet.support.api.ManifestElement; +import com.google.common.base.Charsets; import com.google.common.base.Optional; import com.google.common.eventbus.AsyncEventBus; import com.google.common.eventbus.EventBus; @@ -43,8 +48,6 @@ import org.mockito.stubbing.Answer; /** * Unit test for {@link SoneInserter} and its subclasses. - * - * @author David ‘Bombe’ Roden */ public class SoneInserterTest { @@ -56,7 +59,7 @@ public class SoneInserterTest { public void setupCore() { UpdateChecker updateChecker = mock(UpdateChecker.class); when(core.getUpdateChecker()).thenReturn(updateChecker); - when(core.getSone(anyString())).thenReturn(Optional.absent()); + when(core.getSone(anyString())).thenReturn(null); } @Test @@ -67,25 +70,12 @@ public class SoneInserterTest { assertThat(SoneInserter.getInsertionDelay().get(), is(15)); } - @Test - /* this test is hilariously bad. */ - public void manifestEntriesAreCreated() { - FreenetURI insertUri = mock(FreenetURI.class); - String fingerprint = "fingerprint"; - Sone sone = createSone(insertUri, fingerprint); - SoneInserter soneInserter = new SoneInserter(core, eventBus, freenetInterface, "SoneId"); - InsertInformation insertInformation = soneInserter.new InsertInformation(sone); - HashMap manifestEntries = insertInformation.generateManifestEntries(); - assertThat(manifestEntries.keySet(), containsInAnyOrder("index.html", "sone.xml")); - assertThat(insertInformation.getFingerprint(), is(fingerprint)); - } - private Sone createSone(FreenetURI insertUri, String fingerprint) { Sone sone = mock(Sone.class); when(sone.getInsertUri()).thenReturn(insertUri); when(sone.getFingerprint()).thenReturn(fingerprint); when(sone.getRootAlbum()).thenReturn(mock(Album.class)); - when(core.getSone(anyString())).thenReturn(of(sone)); + when(core.getSone(anyString())).thenReturn(sone); return sone; } @@ -230,7 +220,7 @@ public class SoneInserterTest { new SoneInserter(core, eventBus, freenetInterface, "SoneId", soneModificationDetector, 1); when(soneModificationDetector.isEligibleForInsert()).thenReturn(true); - when(core.getSone("SoneId")).thenReturn(Optional.absent()); + when(core.getSone("SoneId")).thenReturn(null); soneInserter.serviceRun(); } @@ -255,4 +245,42 @@ public class SoneInserterTest { soneInserter.serviceRun(); } + @Test + public void templateIsRenderedCorrectlyForManifestElement() + throws IOException { + Map soneProperties = new HashMap(); + soneProperties.put("id", "SoneId"); + ManifestCreator manifestCreator = new ManifestCreator(core, soneProperties); + long now = currentTimeMillis(); + when(core.getStartupTime()).thenReturn(now); + ManifestElement manifestElement = manifestCreator.createManifestElement("test.txt", "plain/text; charset=utf-8", "sone-inserter-manifest.txt"); + assertThat(manifestElement.getName(), is("test.txt")); + assertThat(manifestElement.getMimeTypeOverride(), is("plain/text; charset=utf-8")); + String templateContent = new String(toByteArray(manifestElement.getData().getInputStream()), Charsets.UTF_8); + assertThat(templateContent, containsString("Sone Version: " + SonePlugin.getPluginVersion() + "\n")); + assertThat(templateContent, containsString("Core Startup: " + now + "\n")); + assertThat(templateContent, containsString("Sone ID: " + "SoneId" + "\n")); + } + + @Test + public void invalidTemplateReturnsANullManifestElement() { + Map soneProperties = new HashMap(); + ManifestCreator manifestCreator = new ManifestCreator(core, soneProperties); + assertThat(manifestCreator.createManifestElement("test.txt", + "plain/text; charset=utf-8", + "sone-inserter-invalid-manifest.txt"), + nullValue()); + } + + @Test + public void errorWhileRenderingTemplateReturnsANullManifestElement() { + Map soneProperties = new HashMap(); + ManifestCreator manifestCreator = new ManifestCreator(core, soneProperties); + when(core.toString()).thenThrow(NullPointerException.class); + assertThat(manifestCreator.createManifestElement("test.txt", + "plain/text; charset=utf-8", + "sone-inserter-faulty-manifest.txt"), + nullValue()); + } + }