Move InputStream matcher to Matchers.
[Sone.git] / src / test / java / net / pterodactylus / sone / fcp / FcpInterfaceTest.java
index 8fd09c1..78b2591 100644 (file)
@@ -20,6 +20,7 @@ package net.pterodactylus.sone.fcp;
 import static freenet.pluginmanager.FredPluginFCP.ACCESS_DIRECT;
 import static freenet.pluginmanager.FredPluginFCP.ACCESS_FCP_FULL;
 import static freenet.pluginmanager.FredPluginFCP.ACCESS_FCP_RESTRICTED;
+import static net.pterodactylus.sone.Matchers.delivers;
 import static net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired.ALWAYS;
 import static net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired.NO;
 import static net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired.WRITING;
@@ -30,7 +31,6 @@ import static org.hamcrest.Matchers.notNullValue;
 import static org.mockito.Mockito.mock;
 
 import java.io.IOException;
-import java.io.InputStream;
 import java.util.List;
 
 import net.pterodactylus.sone.core.Core;
@@ -44,9 +44,6 @@ import freenet.support.api.Bucket;
 import freenet.support.io.ArrayBucket;
 
 import com.google.common.collect.Lists;
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
 import org.junit.Test;
 
 /**
@@ -61,12 +58,13 @@ public class FcpInterfaceTest {
        private final CapturingPluginReplySender pluginReplySender = new CapturingPluginReplySender();
 
        public FcpInterfaceTest() {
-               fcpInterface.setActive(false);
+               fcpInterface.setActive(true);
                fcpInterface.setFullAccessRequired(ALWAYS);
        }
 
        @Test
        public void testThatAnInactiveFcpInterfaceReturnsAnErrorForDirectAccess() throws PluginNotFoundException {
+               fcpInterface.setActive(false);
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_DIRECT);
                verifyErrorWithCode("400");
@@ -74,6 +72,7 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnInactiveFcpInterfaceReturnsAnErrorForRestrictedFcpAccess() throws PluginNotFoundException {
+               fcpInterface.setActive(false);
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_FCP_RESTRICTED);
                verifyErrorWithCode("400");
@@ -81,6 +80,7 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnInactiveFcpInterfaceReturnsAnErrorForFullFcpAccess() throws PluginNotFoundException {
+               fcpInterface.setActive(false);
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_FCP_FULL);
                verifyErrorWithCode("400");
@@ -88,7 +88,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceReturnsAnErrorForAnUnknownMessage() {
-               fcpInterface.setActive(true);
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "Foo").get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_DIRECT);
                verifyError();
@@ -96,7 +95,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceReturnsAnErrorForAMessageWithoutIdentifier() {
-               fcpInterface.setActive(true);
                fcpInterface.addCommand("ReadOnlyPing", new ReadOnlyPing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadOnlyPing").get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_DIRECT);
@@ -105,7 +103,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceRequiringFullAccessAllowsDirectFcpAccessForReadOnlyCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.addCommand("ReadOnlyPing", new ReadOnlyPing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadOnlyPing").put("Identifier", "foo").get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_DIRECT);
@@ -114,7 +111,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceRequiringFullAccessForWritesAllowsDirectFcpAccessForReadOnlyCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.setFullAccessRequired(WRITING);
                fcpInterface.addCommand("ReadOnlyPing", new ReadOnlyPing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadOnlyPing").put("Identifier", "foo").get();
@@ -124,7 +120,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceNotRequiringFullAccessAllowsDirectFcpAccessForReadOnlyCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.setFullAccessRequired(NO);
                fcpInterface.addCommand("ReadOnlyPing", new ReadOnlyPing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadOnlyPing").put("Identifier", "foo").get();
@@ -134,7 +129,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceRequiringFullAccessAllowsDirectFcpAccessForReadWriteCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.addCommand("ReadWritePing", new ReadWritePing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadWritePing").put("Identifier", "foo").get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_DIRECT);
@@ -143,7 +137,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceRequiringFullAccessForWritesAllowsDirectFcpAccessForReadWriteCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.setFullAccessRequired(WRITING);
                fcpInterface.addCommand("ReadWritePing", new ReadWritePing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadWritePing").put("Identifier", "foo").get();
@@ -153,7 +146,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceNotRequiringFullAccessAllowsDirectFcpAccessForReadWriteCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.setFullAccessRequired(NO);
                fcpInterface.addCommand("ReadWritePing", new ReadWritePing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadWritePing").put("Identifier", "foo").get();
@@ -163,7 +155,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceRequiringFullAccessAllowsFullFcpAccessForReadOnlyCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.addCommand("ReadOnlyPing", new ReadOnlyPing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadOnlyPing").put("Identifier", "foo").get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_FCP_FULL);
@@ -172,7 +163,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceRequiringFullAccessForWritesAllowsFullFcpAccessForReadOnlyCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.setFullAccessRequired(WRITING);
                fcpInterface.addCommand("ReadOnlyPing", new ReadOnlyPing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadOnlyPing").put("Identifier", "foo").get();
@@ -182,7 +172,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceNotRequiringFullAccessAllowsFullFcpAccessForReadOnlyCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.setFullAccessRequired(NO);
                fcpInterface.addCommand("ReadOnlyPing", new ReadOnlyPing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadOnlyPing").put("Identifier", "foo").get();
@@ -198,7 +187,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceRequiringFullAccessAllowsFullFcpAccessForReadWriteCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.addCommand("ReadWritePing", new ReadWritePing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadWritePing").put("Identifier", "foo").get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_FCP_FULL);
@@ -207,7 +195,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceRequiringFullAccessForWritesAllowsFullFcpAccessForReadWriteCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.setFullAccessRequired(WRITING);
                fcpInterface.addCommand("ReadWritePing", new ReadWritePing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadWritePing").put("Identifier", "foo").get();
@@ -217,7 +204,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceNotRequiringFullAccessAllowsFullFcpAccessForReadWriteCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.setFullAccessRequired(NO);
                fcpInterface.addCommand("ReadWritePing", new ReadWritePing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadWritePing").put("Identifier", "foo").get();
@@ -227,7 +213,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceRequiringFullAccessDoesNotAllowRestrictedFcpAccessForReadOnlyCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.addCommand("ReadOnlyPing", new ReadOnlyPing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadOnlyPing").put("Identifier", "foo").get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_FCP_RESTRICTED);
@@ -236,7 +221,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceRequiringFullAccessForWritesAllowsRestrictedFcpAccessForReadOnlyCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.setFullAccessRequired(WRITING);
                fcpInterface.addCommand("ReadOnlyPing", new ReadOnlyPing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadOnlyPing").put("Identifier", "foo").get();
@@ -246,7 +230,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceNotRequiringFullAccessAllowsRestrictedFcpAccessForReadOnlyCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.setFullAccessRequired(NO);
                fcpInterface.addCommand("ReadOnlyPing", new ReadOnlyPing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadOnlyPing").put("Identifier", "foo").get();
@@ -256,7 +239,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceRequiringFullAccessDoesNotAllowRestrictedFcpAccessForReadWriteCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.addCommand("ReadWritePing", new ReadWritePing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadWritePing").put("Identifier", "foo").get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_FCP_RESTRICTED);
@@ -265,7 +247,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceRequiringFullAccessForWritesDoesNotAllowRestrictedFcpAccessForReadWriteCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.setFullAccessRequired(WRITING);
                fcpInterface.addCommand("ReadWritePing", new ReadWritePing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadWritePing").put("Identifier", "foo").get();
@@ -275,7 +256,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAnActiveFcpInterfaceNotRequiringFullAccessAllowsRestrictedFcpAccessForReadWriteCommand() {
-               fcpInterface.setActive(true);
                fcpInterface.setFullAccessRequired(NO);
                fcpInterface.addCommand("ReadWritePing", new ReadWritePing());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "ReadWritePing").put("Identifier", "foo").get();
@@ -285,7 +265,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAFaultyCommandResultsInAnError() {
-               fcpInterface.setActive(true);
                fcpInterface.addCommand("Faulty", new FaultyCommand());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "Faulty").put("Identifier", "foo").get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_FCP_FULL);
@@ -294,14 +273,12 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatAFaultyPluginReplySenderIsHandled() {
-               fcpInterface.setActive(true);
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "Faulty").put("Identifier", "foo").get();
                fcpInterface.handle(new FaultyPluginReplySender(), fieldSet, null, ACCESS_FCP_FULL);
        }
 
        @Test
        public void testThatACommandWithDataIsHandledCorrectly() throws IOException {
-               fcpInterface.setActive(true);
                fcpInterface.addCommand("CommandWithData", new CommandWithData());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "CommandWithData").put("Identifier", "foo").get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_FCP_FULL);
@@ -313,7 +290,6 @@ public class FcpInterfaceTest {
 
        @Test
        public void testThatACommandWithABucketIsHandledCorrectly() throws IOException {
-               fcpInterface.setActive(true);
                fcpInterface.addCommand("CommandWithBucket", new CommandWithBucket());
                SimpleFieldSet fieldSet = new SimpleFieldSetBuilder().put("Message", "CommandWithBucket").put("Identifier", "foo").get();
                fcpInterface.handle(pluginReplySender, fieldSet, null, ACCESS_FCP_FULL);
@@ -323,41 +299,6 @@ public class FcpInterfaceTest {
                assertThat(pluginReplySender.results.get(0).bucket.getInputStream(), delivers(new byte[] { 4, 5, 6 }));
        }
 
-       private Matcher<InputStream> delivers(final byte[] data) {
-               return new TypeSafeMatcher<InputStream>() {
-                       byte[] readData = new byte[data.length];
-
-                       @Override
-                       protected boolean matchesSafely(InputStream inputStream) {
-                               int offset = 0;
-                               try {
-                                       while (true) {
-                                               int r = inputStream.read();
-                                               if (r == -1) {
-                                                       return offset == data.length;
-                                               }
-                                               readData[offset] = (byte) r;
-                                               if (data[offset++] != r) {
-                                                       return false;
-                                               }
-                                       }
-                               } catch (IOException ioe1) {
-                                       return false;
-                               }
-                       }
-
-                       @Override
-                       public void describeTo(Description description) {
-                               description.appendValue(data);
-                       }
-
-                       @Override
-                       protected void describeMismatchSafely(InputStream item, Description mismatchDescription) {
-                               mismatchDescription.appendValue(readData);
-                       }
-               };
-       }
-
        private void verifyError() {
                assertThat(pluginReplySender.results, hasSize(1));
                assertThat(pluginReplySender.results.get(0).fieldSet, notNullValue());