1 package net.pterodactylus.sone.fcp
3 import net.pterodactylus.sone.core.Core
4 import net.pterodactylus.sone.test.asOptional
5 import net.pterodactylus.sone.test.whenever
6 import org.hamcrest.MatcherAssert
7 import org.hamcrest.MatcherAssert.assertThat
8 import org.hamcrest.Matchers
9 import org.hamcrest.Matchers.equalTo
10 import org.junit.Before
12 import org.mockito.Mockito
13 import org.mockito.Mockito.verify
16 * Unit test for [LockSoneCommand].
18 class LockSoneCommandTest : SoneCommandTest() {
20 override fun createCommand(core: Core) = LockSoneCommand(core)
24 whenever(core.getSone("RemoteSoneId")).thenReturn(remoteSone.asOptional())
25 whenever(core.getSone("LocalSoneId")).thenReturn(localSone.asOptional())
26 whenever(localSone.id).thenReturn("LocalSoneId")
30 fun `command requires write access`() {
31 assertThat(command.requiresWriteAccess(), equalTo(true))
35 fun `request without any parameters results in FCP exception`() {
36 requestWithoutAnyParameterResultsInFcpException()
40 fun `request with invalid sone parameter results in FCP exception`() {
41 requestWithInvalidSoneParameterResultsInFcpException()
45 fun `request with valid remote sone parameter results in FCP exception`() {
46 requestWithValidRemoteSoneParameterResultsInFcpException()
50 fun `request with local sone parameter locks the sone`() {
51 parameters += "Sone" to "LocalSoneId"
52 val replyParameters = command.execute(parameters).replyParameters
53 assertThat(replyParameters["Message"], equalTo("SoneLocked"))
54 assertThat(replyParameters["Sone"], equalTo("LocalSoneId"))
55 verify(core).lockSone(localSone)