Add unit test for lock sone page
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / LockSonePageTest.kt
1 package net.pterodactylus.sone.web
2
3 import net.pterodactylus.sone.data.Sone
4 import net.pterodactylus.sone.test.mock
5 import org.junit.Test
6 import org.mockito.ArgumentMatchers.any
7 import org.mockito.Mockito.never
8 import org.mockito.Mockito.verify
9
10 /**
11  * Unit test for [LockSonePage].
12  */
13 class LockSonePageTest : WebPageTest() {
14
15         private val page = LockSonePage(template, webInterface)
16
17         @Test
18         fun `locking an invalid local sone redirects to return page`() {
19                 addHttpRequestParameter("returnPage", "return.html")
20                 expectedException.expect(WebTestUtils.redirectsTo("return.html"))
21                 try {
22                         page.handleRequest(freenetRequest, templateContext)
23                 } finally {
24                         verify(core, never()).lockSone(any<Sone>())
25                 }
26         }
27
28         @Test
29         fun `locking an valid local sone locks the sone and redirects to return page`() {
30                 addHttpRequestParameter("sone", "sone-id")
31                 val sone = mock<Sone>()
32                 addLocalSone("sone-id", sone)
33                 addHttpRequestParameter("returnPage", "return.html")
34                 expectedException.expect(WebTestUtils.redirectsTo("return.html"))
35                 try {
36                         page.handleRequest(freenetRequest, templateContext)
37                 } finally {
38                         verify(core).lockSone(sone)
39                 }
40         }
41
42 }