946fd34ac99fd55dbc83555fbcd834c221c46369
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / UntrustPageTest.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.web.baseInjector
7 import net.pterodactylus.util.web.Method.POST
8 import org.hamcrest.MatcherAssert.assertThat
9 import org.hamcrest.Matchers.equalTo
10 import org.hamcrest.Matchers.notNullValue
11 import org.junit.Test
12 import org.mockito.ArgumentMatchers.any
13 import org.mockito.ArgumentMatchers.eq
14 import org.mockito.Mockito.never
15 import org.mockito.Mockito.verify
16
17 /**
18  * Unit test for [UntrustPage].
19  */
20 class UntrustPageTest: WebPageTest(::UntrustPage) {
21
22         @Test
23         fun `page returns correct path`() {
24             assertThat(page.path, equalTo("untrust.html"))
25         }
26
27         @Test
28         fun `page requires login`() {
29             assertThat(page.requiresLogin(), equalTo(true))
30         }
31
32         @Test
33         fun `page returns correct title`() {
34                 addTranslation("Page.Untrust.Title", "untrust page title")
35             assertThat(page.getPageTitle(freenetRequest), equalTo("untrust page title"))
36         }
37
38         @Test
39         fun `get request does not redirect`() {
40                 verifyNoRedirect {
41                         verify(core, never()).untrustSone(eq(currentSone), any())
42                 }
43         }
44
45         @Test
46         fun `post request without sone parameter does not untrust but redirects`() {
47                 setMethod(POST)
48                 addHttpRequestPart("returnPage", "return.html")
49                 verifyRedirect("return.html") {
50                         verify(core, never()).untrustSone(eq(currentSone), any())
51                 }
52         }
53
54         @Test
55         fun `post request with invalid sone parameter does not untrust but redirects`() {
56                 setMethod(POST)
57                 addHttpRequestPart("returnPage", "return.html")
58                 addHttpRequestPart("sone", "no-sone")
59                 verifyRedirect("return.html") {
60                         verify(core, never()).untrustSone(eq(currentSone), any())
61                 }
62         }
63
64         @Test
65         fun `post request with valid sone parameter untrusts and redirects`() {
66                 setMethod(POST)
67                 addHttpRequestPart("returnPage", "return.html")
68                 addHttpRequestPart("sone", "sone-id")
69                 val sone = mock<Sone>()
70                 addSone("sone-id", sone)
71                 verifyRedirect("return.html") {
72                         verify(core).untrustSone(currentSone, sone)
73                 }
74         }
75
76         @Test
77         fun `page can be created by dependency injection`() {
78             assertThat(baseInjector.getInstance<UntrustPage>(), notNullValue())
79         }
80
81 }