Rewrite test for lock sone command in Kotlin
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / fcp / LockSoneCommandTest.kt
1 package net.pterodactylus.sone.fcp
2
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
11 import org.junit.Test
12 import org.mockito.Mockito
13 import org.mockito.Mockito.verify
14
15 /**
16  * Unit test for [LockSoneCommand].
17  */
18 class LockSoneCommandTest : SoneCommandTest() {
19
20         override fun createCommand(core: Core) = LockSoneCommand(core)
21
22         @Before
23         fun setupSones() {
24                 whenever(core.getSone("RemoteSoneId")).thenReturn(remoteSone.asOptional())
25                 whenever(core.getSone("LocalSoneId")).thenReturn(localSone.asOptional())
26                 whenever(localSone.id).thenReturn("LocalSoneId")
27         }
28
29         @Test
30         fun `command requires write access`() {
31                 assertThat(command.requiresWriteAccess(), equalTo(true))
32         }
33
34         @Test
35         fun `request without any parameters results in FCP exception`() {
36             requestWithoutAnyParameterResultsInFcpException()
37         }
38
39         @Test
40         fun `request with invalid sone parameter results in FCP exception`() {
41             requestWithInvalidSoneParameterResultsInFcpException()
42         }
43
44         @Test
45         fun `request with valid remote sone parameter results in FCP exception`() {
46             requestWithValidRemoteSoneParameterResultsInFcpException()
47         }
48         
49         @Test
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)
56         }
57
58 }