Rewrite test for lock sone command in Kotlin
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 15 Jan 2017 09:51:58 +0000 (10:51 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 15 Jan 2017 09:52:31 +0000 (10:52 +0100)
src/test/java/net/pterodactylus/sone/fcp/LockSoneCommandTest.java [deleted file]
src/test/kotlin/net/pterodactylus/sone/fcp/LockSoneCommandTest.kt [new file with mode: 0644]

diff --git a/src/test/java/net/pterodactylus/sone/fcp/LockSoneCommandTest.java b/src/test/java/net/pterodactylus/sone/fcp/LockSoneCommandTest.java
deleted file mode 100644 (file)
index d2adbd7..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Sone - LockSoneCommandTest.java - Copyright © 2013–2016 David Roden
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-package net.pterodactylus.sone.fcp;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import net.pterodactylus.sone.core.Core;
-import net.pterodactylus.sone.data.Sone;
-import net.pterodactylus.sone.freenet.SimpleFieldSetBuilder;
-import net.pterodactylus.sone.freenet.fcp.Command.Response;
-import net.pterodactylus.sone.freenet.fcp.FcpException;
-
-import freenet.support.SimpleFieldSet;
-
-import com.google.common.base.Optional;
-import org.junit.Test;
-
-/**
- * Tests for {@link UnlockSoneCommand}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
- */
-public class LockSoneCommandTest {
-
-       @Test
-       public void testLockingALocalSone() throws FcpException {
-               Sone localSone = mock(Sone.class);
-               when(localSone.getId()).thenReturn("LocalSone");
-               when(localSone.isLocal()).thenReturn(true);
-               Core core = mock(Core.class);
-               when(core.getSone(eq("LocalSone"))).thenReturn(Optional.of(localSone));
-               when(core.getLocalSone(eq("LocalSone"))).thenReturn(localSone);
-               SimpleFieldSet fields = new SimpleFieldSetBuilder().put("Sone", "LocalSone").get();
-
-               LockSoneCommand lockSoneCommand = new LockSoneCommand(core);
-               Response response = lockSoneCommand.execute(fields);
-
-               verify(core).lockSone(eq(localSone));
-               assertThat(response, notNullValue());
-               assertThat(response.getReplyParameters(), notNullValue());
-               assertThat(response.getReplyParameters().get("Message"), is("SoneLocked"));
-               assertThat(response.getReplyParameters().get("Sone"), is("LocalSone"));
-       }
-
-       @Test(expected = FcpException.class)
-       public void testLockingARemoteSone() throws FcpException {
-               Sone removeSone = mock(Sone.class);
-               Core core = mock(Core.class);
-               when(core.getSone(eq("RemoteSone"))).thenReturn(Optional.of(removeSone));
-               SimpleFieldSet fields = new SimpleFieldSetBuilder().put("Sone", "RemoteSone").get();
-
-               LockSoneCommand lockSoneCommand = new LockSoneCommand(core);
-               lockSoneCommand.execute(fields);
-       }
-
-       @Test(expected = FcpException.class)
-       public void testMissingSone() throws FcpException {
-               Core core = mock(Core.class);
-               SimpleFieldSet fields = new SimpleFieldSetBuilder().get();
-
-               LockSoneCommand lockSoneCommand = new LockSoneCommand(core);
-               lockSoneCommand.execute(fields);
-       }
-
-}
diff --git a/src/test/kotlin/net/pterodactylus/sone/fcp/LockSoneCommandTest.kt b/src/test/kotlin/net/pterodactylus/sone/fcp/LockSoneCommandTest.kt
new file mode 100644 (file)
index 0000000..f9a6d6b
--- /dev/null
@@ -0,0 +1,58 @@
+package net.pterodactylus.sone.fcp
+
+import net.pterodactylus.sone.core.Core
+import net.pterodactylus.sone.test.asOptional
+import net.pterodactylus.sone.test.whenever
+import org.hamcrest.MatcherAssert
+import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers
+import org.hamcrest.Matchers.equalTo
+import org.junit.Before
+import org.junit.Test
+import org.mockito.Mockito
+import org.mockito.Mockito.verify
+
+/**
+ * Unit test for [LockSoneCommand].
+ */
+class LockSoneCommandTest : SoneCommandTest() {
+
+       override fun createCommand(core: Core) = LockSoneCommand(core)
+
+       @Before
+       fun setupSones() {
+               whenever(core.getSone("RemoteSoneId")).thenReturn(remoteSone.asOptional())
+               whenever(core.getSone("LocalSoneId")).thenReturn(localSone.asOptional())
+               whenever(localSone.id).thenReturn("LocalSoneId")
+       }
+
+       @Test
+       fun `command requires write access`() {
+               assertThat(command.requiresWriteAccess(), equalTo(true))
+       }
+
+       @Test
+       fun `request without any parameters results in FCP exception`() {
+           requestWithoutAnyParameterResultsInFcpException()
+       }
+
+       @Test
+       fun `request with invalid sone parameter results in FCP exception`() {
+           requestWithInvalidSoneParameterResultsInFcpException()
+       }
+
+       @Test
+       fun `request with valid remote sone parameter results in FCP exception`() {
+           requestWithValidRemoteSoneParameterResultsInFcpException()
+       }
+       
+       @Test
+       fun `request with local sone parameter locks the sone`() {
+           parameters += "Sone" to "LocalSoneId"
+               val replyParameters = command.execute(parameters).replyParameters
+               assertThat(replyParameters["Message"], equalTo("SoneLocked"))
+               assertThat(replyParameters["Sone"], equalTo("LocalSoneId"))
+               verify(core).lockSone(localSone)
+       }
+
+}