Merge branch 'last-working' into next
[Sone.git] / src / test / java / net / pterodactylus / sone / core / FreenetInterfaceTest.java
index c753740..091c93f 100644 (file)
@@ -1,7 +1,5 @@
 package net.pterodactylus.sone.core;
 
-import static freenet.client.InsertException.CANCELLED;
-import static freenet.client.InsertException.INTERNAL_ERROR;
 import static freenet.keys.InsertableClientSSK.createRandom;
 import static freenet.node.RequestStarter.INTERACTIVE_PRIORITY_CLASS;
 import static freenet.node.RequestStarter.PREFETCH_PRIORITY_CLASS;
@@ -41,15 +39,16 @@ import net.pterodactylus.sone.data.Image;
 import net.pterodactylus.sone.data.impl.ImageImpl;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.data.TemporaryImage;
-import net.pterodactylus.sone.freenet.StringBucket;
 
 import freenet.client.ClientMetadata;
 import freenet.client.FetchException;
+import freenet.client.FetchException.FetchExceptionMode;
 import freenet.client.FetchResult;
 import freenet.client.HighLevelSimpleClient;
 import freenet.client.InsertBlock;
 import freenet.client.InsertContext;
 import freenet.client.InsertException;
+import freenet.client.InsertException.InsertExceptionMode;
 import freenet.client.async.ClientPutter;
 import freenet.client.async.USKCallback;
 import freenet.client.async.USKManager;
@@ -63,6 +62,8 @@ import freenet.node.NodeClientCore;
 import freenet.node.RequestClient;
 import freenet.support.Base64;
 import freenet.support.api.Bucket;
+import freenet.support.io.ArrayBucket;
+import freenet.support.io.ResumeFailedException;
 
 import com.google.common.eventbus.EventBus;
 import org.junit.Before;
@@ -87,6 +88,7 @@ public class FreenetInterfaceTest {
        private final ArgumentCaptor<USKCallback> callbackCaptor = forClass(USKCallback.class);
        private final Image image = mock(Image.class);
        private InsertToken insertToken;
+       private final Bucket bucket = mock(Bucket.class);
 
        @Before
        public void setupFreenetInterface() {
@@ -96,6 +98,7 @@ public class FreenetInterfaceTest {
                setFinalField(nodeClientCore, "uskManager", uskManager);
                freenetInterface = new FreenetInterface(eventBus, node);
                insertToken = freenetInterface.new InsertToken(image);
+               insertToken.setBucket(bucket);
        }
 
        @Before
@@ -126,7 +129,7 @@ public class FreenetInterfaceTest {
                FreenetURI freenetUri = new FreenetURI("KSK@GPLv2.txt");
                FreenetURI newFreenetUri = new FreenetURI("KSK@GPLv3.txt");
                FetchResult fetchResult = createFetchResult();
-               FetchException fetchException = new FetchException(FetchException.PERMANENT_REDIRECT, newFreenetUri);
+               FetchException fetchException = new FetchException(FetchExceptionMode.PERMANENT_REDIRECT, newFreenetUri);
                when(highLevelSimpleClient.fetch(freenetUri)).thenThrow(fetchException);
                when(highLevelSimpleClient.fetch(newFreenetUri)).thenReturn(fetchResult);
                Fetched fetched = freenetInterface.fetchUri(freenetUri);
@@ -137,7 +140,7 @@ public class FreenetInterfaceTest {
        @Test
        public void fetchReturnsNullOnFetchExceptions() throws MalformedURLException, FetchException {
                FreenetURI freenetUri = new FreenetURI("KSK@GPLv2.txt");
-               FetchException fetchException = new FetchException(FetchException.ALL_DATA_NOT_FOUND);
+               FetchException fetchException = new FetchException(FetchExceptionMode.ALL_DATA_NOT_FOUND);
                when(highLevelSimpleClient.fetch(freenetUri)).thenThrow(fetchException);
                Fetched fetched = freenetInterface.fetchUri(freenetUri);
                assertThat(fetched, nullValue());
@@ -145,7 +148,7 @@ public class FreenetInterfaceTest {
 
        private FetchResult createFetchResult() {
                ClientMetadata clientMetadata = new ClientMetadata("text/plain");
-               Bucket bucket = new StringBucket("Some Data.");
+               Bucket bucket = new ArrayBucket("Some Data.".getBytes());
                return new FetchResult(clientMetadata, bucket);
        }
 
@@ -161,7 +164,7 @@ public class FreenetInterfaceTest {
                when(highLevelSimpleClient.getInsertContext(anyBoolean())).thenReturn(insertContext);
                ClientPutter clientPutter = mock(ClientPutter.class);
                ArgumentCaptor<InsertBlock> insertBlockCaptor = forClass(InsertBlock.class);
-               when(highLevelSimpleClient.insert(insertBlockCaptor.capture(), eq(false), eq((String) null), eq(false), eq(insertContext), eq(insertToken), anyShort())).thenReturn(clientPutter);
+               when(highLevelSimpleClient.insert(insertBlockCaptor.capture(), eq((String) null), eq(false), eq(insertContext), eq(insertToken), anyShort())).thenReturn(clientPutter);
                freenetInterface.insertImage(temporaryImage, image, insertToken);
                assertThat(insertBlockCaptor.getValue().getData().getInputStream(), delivers(new byte[] { 1, 2, 3, 4 }));
                assertThat(TestUtil.<ClientPutter>getPrivateField(insertToken, "clientPutter"), is(clientPutter));
@@ -179,7 +182,7 @@ public class FreenetInterfaceTest {
                InsertContext insertContext = mock(InsertContext.class);
                when(highLevelSimpleClient.getInsertContext(anyBoolean())).thenReturn(insertContext);
                ArgumentCaptor<InsertBlock> insertBlockCaptor = forClass(InsertBlock.class);
-               when(highLevelSimpleClient.insert(insertBlockCaptor.capture(), eq(false), eq((String) null), eq(false), eq(insertContext), eq(insertToken), anyShort())).thenThrow(InsertException.class);
+               when(highLevelSimpleClient.insert(insertBlockCaptor.capture(), eq((String) null), eq(false), eq(insertContext), eq(insertToken), anyShort())).thenThrow(InsertException.class);
                freenetInterface.insertImage(temporaryImage, image, insertToken);
        }
 
@@ -312,7 +315,7 @@ public class FreenetInterfaceTest {
                freenetInterface.registerUsk(uri, callback);
                USK key = mock(USK.class);
                when(key.getURI()).thenReturn(uri);
-               callbackCaptor.getValue().onFoundEdition(3, key, null, null, false, (short) 0, null, true, true);
+               callbackCaptor.getValue().onFoundEdition(3, key, null, false, (short) 0, null, true, true);
                verify(callback).editionFound(eq(uri), eq(3L), eq(true), eq(true));
        }
 
@@ -335,51 +338,56 @@ public class FreenetInterfaceTest {
                insertToken.cancel();
                ArgumentCaptor<ImageInsertAbortedEvent> imageInsertAbortedEvent = forClass(ImageInsertAbortedEvent.class);
                verify(eventBus, times(2)).post(imageInsertAbortedEvent.capture());
+               verify(bucket).free();
                assertThat(imageInsertAbortedEvent.getValue().image(), is(image));
        }
 
        @Test
        public void failureWithoutExceptionSendsFailedEvent() {
-               insertToken.onFailure(null, null, null);
+               insertToken.onFailure(null, null);
                ArgumentCaptor<ImageInsertFailedEvent> imageInsertFailedEvent = forClass(ImageInsertFailedEvent.class);
                verify(eventBus).post(imageInsertFailedEvent.capture());
+               verify(bucket).free();
                assertThat(imageInsertFailedEvent.getValue().image(), is(image));
                assertThat(imageInsertFailedEvent.getValue().cause(), nullValue());
        }
 
        @Test
        public void failureSendsFailedEventWithException() {
-               InsertException insertException = new InsertException(INTERNAL_ERROR, "Internal error", null);
-               insertToken.onFailure(insertException, null, null);
+               InsertException insertException = new InsertException(InsertExceptionMode.INTERNAL_ERROR, "Internal error", null);
+               insertToken.onFailure(insertException, null);
                ArgumentCaptor<ImageInsertFailedEvent> imageInsertFailedEvent = forClass(ImageInsertFailedEvent.class);
                verify(eventBus).post(imageInsertFailedEvent.capture());
+               verify(bucket).free();
                assertThat(imageInsertFailedEvent.getValue().image(), is(image));
                assertThat(imageInsertFailedEvent.getValue().cause(), is((Throwable) insertException));
        }
 
        @Test
        public void failureBecauseCancelledByUserSendsAbortedEvent() {
-               InsertException insertException = new InsertException(CANCELLED, null);
-               insertToken.onFailure(insertException, null, null);
+               InsertException insertException = new InsertException(InsertExceptionMode.CANCELLED, null);
+               insertToken.onFailure(insertException, null);
                ArgumentCaptor<ImageInsertAbortedEvent> imageInsertAbortedEvent = forClass(ImageInsertAbortedEvent.class);
                verify(eventBus).post(imageInsertAbortedEvent.capture());
+               verify(bucket).free();
                assertThat(imageInsertAbortedEvent.getValue().image(), is(image));
        }
 
        @Test
-       public void ignoredMethodsDoNotThrowExceptions() {
-               insertToken.onMajorProgress(null);
-               insertToken.onFetchable(null, null);
-               insertToken.onGeneratedMetadata(null, null, null);
+       public void ignoredMethodsDoNotThrowExceptions() throws ResumeFailedException {
+               insertToken.onResume(null);
+               insertToken.onFetchable(null);
+               insertToken.onGeneratedMetadata(null, null);
        }
 
        @Test
        public void generatedUriIsPostedOnSuccess() {
                FreenetURI generatedUri = mock(FreenetURI.class);
-               insertToken.onGeneratedURI(generatedUri, null, null);
-               insertToken.onSuccess(null, null);
+               insertToken.onGeneratedURI(generatedUri, null);
+               insertToken.onSuccess(null);
                ArgumentCaptor<ImageInsertFinishedEvent> imageInsertFinishedEvent = forClass(ImageInsertFinishedEvent.class);
                verify(eventBus).post(imageInsertFinishedEvent.capture());
+               verify(bucket).free();
                assertThat(imageInsertFinishedEvent.getValue().image(), is(image));
                assertThat(imageInsertFinishedEvent.getValue().resultingUri(), is(generatedUri));
        }