1 package net.pterodactylus.sone.fcp
3 import net.pterodactylus.sone.core.*
4 import net.pterodactylus.sone.data.*
5 import net.pterodactylus.sone.test.*
6 import org.hamcrest.MatcherAssert.*
7 import org.hamcrest.Matchers.*
9 import org.mockito.Mockito.*
12 * Unit test for [DeleteReplyCommand].
14 class DeleteReplyCommandTest : SoneCommandTest() {
16 private val remotePostReply = mock<PostReply>().apply { whenever(sone).thenReturn(remoteSone) }
17 private val localPostReply = mock<PostReply>().apply { whenever(sone).thenReturn(localSone) }
19 override fun createCommand(core: Core) = DeleteReplyCommand(core)
22 fun `command requires write access`() {
23 assertThat(command.requiresWriteAccess, equalTo(true))
27 fun `request without any parameters results in fcp exception`() {
28 requestWithoutAnyParameterResultsInFcpException()
32 fun `request with invalid post reply parameter results in fcp exception`() {
33 parameters += "Reply" to "InvalidReplyId"
34 executeCommandAndExpectFcpException()
38 fun `request with remote post reply parameter results in error response`() {
39 parameters += "Reply" to "RemoteReplyId"
40 whenever(core.getPostReply("RemoteReplyId")).thenReturn(remotePostReply)
41 val response = command.execute(parameters)
42 assertThat(response.replyParameters["Message"], equalTo("Error"))
43 assertThat(response.replyParameters["ErrorCode"], equalTo("401"))
47 fun `request with local post reply parameter deletes reply`() {
48 parameters += "Reply" to "RemoteReplyId"
49 whenever(core.getPostReply("RemoteReplyId")).thenReturn(localPostReply)
50 val response = command.execute(parameters)
51 assertThat(response.replyParameters["Message"], equalTo("ReplyDeleted"))
52 verify(core).deleteReply(localPostReply)