Add unit test for distrust page
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / DistrustPageTest.kt
1 package net.pterodactylus.sone.web
2
3 import net.pterodactylus.sone.data.Sone
4 import net.pterodactylus.sone.test.mock
5 import net.pterodactylus.sone.web.WebTestUtils.redirectsTo
6 import net.pterodactylus.util.web.Method
7 import net.pterodactylus.util.web.Method.GET
8 import net.pterodactylus.util.web.Method.POST
9 import org.junit.Test
10 import org.mockito.Mockito
11 import org.mockito.Mockito.verify
12
13 /**
14  * Unit test for [DistrustPage].
15  */
16 class DistrustPageTest : WebPageTest() {
17
18         private val page = DistrustPage(template, webInterface)
19
20         @Test
21         fun `get request does not redirect`() {
22             request("", GET)
23                 page.handleRequest(freenetRequest, templateContext)
24         }
25
26         @Test
27         fun `post request with invalid sone redirects to return page`() {
28             request("", POST)
29                 addHttpRequestParameter("returnPage", "return.html")
30                 expectedException.expect(redirectsTo("return.html"))
31                 page.handleRequest(freenetRequest, templateContext)
32         }
33
34         @Test
35         fun `post request with valid sone distrusts sone and redirects to return page`() {
36             request("", POST)
37                 val remoteSone = mock<Sone>()
38                 addSone("remote-sone-id", remoteSone)
39                 addHttpRequestParameter("returnPage", "return.html")
40                 addHttpRequestParameter("sone", "remote-sone-id")
41                 expectedException.expect(redirectsTo("return.html"))
42                 try {
43                         page.handleRequest(freenetRequest, templateContext)
44                 } finally {
45                         verify(core).distrustSone(currentSone, remoteSone)
46                 }
47         }
48
49 }