Add test for DI constructability of TrustAjaxPage
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / ajax / DeleteReplyAjaxPageTest.kt
1 package net.pterodactylus.sone.web.ajax
2
3 import net.pterodactylus.sone.data.PostReply
4 import net.pterodactylus.sone.data.Sone
5 import net.pterodactylus.sone.test.getInstance
6 import net.pterodactylus.sone.test.mock
7 import net.pterodactylus.sone.test.whenever
8 import net.pterodactylus.sone.web.baseInjector
9 import org.hamcrest.MatcherAssert.assertThat
10 import org.hamcrest.Matchers.equalTo
11 import org.hamcrest.Matchers.notNullValue
12 import org.junit.Test
13 import org.mockito.Mockito.verify
14
15 /**
16  * Unit test for [DeleteReplyAjaxPage].
17  */
18 class DeleteReplyAjaxPageTest : JsonPageTest("deleteReply.ajax", pageSupplier = ::DeleteReplyAjaxPage) {
19
20         @Test
21         fun `request with missing reply results in invalid id`() {
22                 assertThatJsonFailed("invalid-reply-id")
23         }
24
25         @Test
26         fun `request with non-local reply id results in not authorized`() {
27                 val reply = mock<PostReply>()
28                 val sone = mock<Sone>()
29                 whenever(reply.sone).thenReturn(sone)
30                 addReply(reply, "reply-id")
31                 addRequestParameter("reply", "reply-id")
32                 assertThatJsonFailed("not-authorized")
33         }
34
35         @Test
36         fun `request with local reply id deletes reply`() {
37                 val reply = mock<PostReply>()
38                 val sone = mock<Sone>()
39                 whenever(sone.isLocal).thenReturn(true)
40                 whenever(reply.sone).thenReturn(sone)
41                 addReply(reply, "reply-id")
42                 addRequestParameter("reply", "reply-id")
43                 assertThatJsonIsSuccessful()
44                 verify(core).deleteReply(reply)
45         }
46
47         @Test
48         fun `page can be created by dependency injection`() {
49             assertThat(baseInjector.getInstance<DeleteReplyAjaxPage>(), notNullValue())
50         }
51
52 }