♻️ Use SoneRequest instead of FreenetRequest
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / DistrustPageTest.kt
1 package net.pterodactylus.sone.web.pages
2
3 import net.pterodactylus.sone.data.Sone
4 import net.pterodactylus.sone.test.getInstance
5 import net.pterodactylus.sone.test.mock
6 import net.pterodactylus.sone.test.whenever
7 import net.pterodactylus.sone.web.baseInjector
8 import net.pterodactylus.util.web.Method.POST
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 [DistrustPage].
17  */
18 class DistrustPageTest: WebPageTest(::DistrustPage) {
19
20         @Test
21         fun `page returns correct path`() {
22                 assertThat(page.path, equalTo("distrust.html"))
23         }
24
25         @Test
26         fun `page requires login`() {
27                 assertThat(page.requiresLogin(), equalTo(true))
28         }
29
30         @Test
31         fun `page returns correct title`() {
32                 whenever(l10n.getString("Page.Distrust.Title")).thenReturn("distrust page title")
33                 assertThat(page.getPageTitle(soneRequest), equalTo("distrust page title"))
34         }
35
36         @Test
37         fun `get request does not redirect`() {
38                 page.processTemplate(freenetRequest, templateContext)
39         }
40
41         @Test
42         fun `post request with invalid sone redirects to return page`() {
43                 setMethod(POST)
44                 addHttpRequestPart("returnPage", "return.html")
45                 verifyRedirect("return.html")
46         }
47
48         @Test
49         fun `post request with valid sone distrusts sone and redirects to return page`() {
50                 setMethod(POST)
51                 val remoteSone = mock<Sone>()
52                 addSone("remote-sone-id", remoteSone)
53                 addHttpRequestPart("returnPage", "return.html")
54                 addHttpRequestPart("sone", "remote-sone-id")
55                 verifyRedirect("return.html") {
56                         verify(core).distrustSone(currentSone, remoteSone)
57                 }
58         }
59
60         @Test
61         fun `page can be created by dependency injection`() {
62                 assertThat(baseInjector.getInstance<DistrustPage>(), notNullValue())
63         }
64
65 }