Use method from Verifiers.
[Sone.git] / src / test / java / net / pterodactylus / sone / fcp / FcpInterfaceTest.java
index 6648d12..bbbf509 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.fcp.FcpInterface.FullAccessRequired.ALWAYS;
 import static net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired.NO;
 import static net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired.WRITING;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -59,8 +60,14 @@ public class FcpInterfaceTest {
        private final FcpInterface fcpInterface = new FcpInterface(core);
        private final CapturingPluginReplySender pluginReplySender = new CapturingPluginReplySender();
 
+       public FcpInterfaceTest() {
+               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");
@@ -68,6 +75,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");
@@ -75,6 +83,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");
@@ -82,7 +91,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();
@@ -90,7 +98,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);
@@ -99,7 +106,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);
@@ -108,7 +114,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();
@@ -118,7 +123,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();
@@ -128,7 +132,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);
@@ -137,7 +140,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();
@@ -147,7 +149,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();
@@ -157,7 +158,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);
@@ -166,7 +166,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();
@@ -176,7 +175,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();
@@ -192,7 +190,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);
@@ -201,7 +198,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();
@@ -211,7 +207,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();
@@ -221,7 +216,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);
@@ -230,7 +224,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();
@@ -240,7 +233,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();
@@ -250,7 +242,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);
@@ -259,7 +250,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();
@@ -269,7 +259,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();
@@ -279,7 +268,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);
@@ -288,14 +276,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);
@@ -307,7 +293,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);
@@ -330,10 +315,13 @@ public class FcpInterfaceTest {
                                                if (r == -1) {
                                                        return offset == data.length;
                                                }
-                                               readData[offset] = (byte) r;
-                                               if (data[offset++] != r) {
+                                               if (offset == data.length) {
+                                                       return false;
+                                               }
+                                               if (data[offset] != (readData[offset] = (byte) r)) {
                                                        return false;
                                                }
+                                               offset++;
                                        }
                                } catch (IOException ioe1) {
                                        return false;