🎨 Clean up imports
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / TrustPageTest.kt
1 package net.pterodactylus.sone.web.pages
2
3 import net.pterodactylus.sone.data.*
4 import net.pterodactylus.sone.test.getInstance
5 import net.pterodactylus.sone.test.mock
6 import net.pterodactylus.sone.web.*
7 import net.pterodactylus.util.web.Method.*
8 import org.hamcrest.MatcherAssert.*
9 import org.hamcrest.Matchers.*
10 import org.junit.*
11 import org.mockito.ArgumentMatchers.any
12 import org.mockito.ArgumentMatchers.eq
13 import org.mockito.Mockito.never
14 import org.mockito.Mockito.verify
15
16 /**
17  * Unit test for [TrustPage].
18  */
19 class TrustPageTest: WebPageTest(::TrustPage) {
20
21         @Test
22         fun `page returns correct path`() {
23             assertThat(page.path, equalTo("trust.html"))
24         }
25
26         @Test
27         fun `page requires login`() {
28             assertThat(page.requiresLogin(), equalTo(true))
29         }
30
31         @Test
32         fun `page returns correct title`() {
33             addTranslation("Page.Trust.Title", "title trust page")
34                 assertThat(page.getPageTitle(soneRequest), equalTo("title trust page"))
35         }
36
37         @Test
38         fun `get method does not redirect`() {
39                 verifyNoRedirect { }
40         }
41
42         @Test
43         fun `post request without sone redirects to return page`() {
44                 setMethod(POST)
45                 addHttpRequestPart("returnPage", "return.html")
46                 verifyRedirect("return.html") {
47                         verify(core, never()).trustSone(eq(currentSone), any())
48                 }
49         }
50
51         @Test
52         fun `post request with missing sone redirects to return page`() {
53                 setMethod(POST)
54                 addHttpRequestPart("returnPage", "return.html")
55                 addHttpRequestPart("sone", "sone-id")
56                 verifyRedirect("return.html") {
57                         verify(core, never()).trustSone(eq(currentSone), any())
58                 }
59         }
60
61         @Test
62         fun `post request with existing sone trusts the identity and redirects to return page`() {
63                 setMethod(POST)
64                 addHttpRequestPart("returnPage", "return.html")
65                 addHttpRequestPart("sone", "sone-id")
66                 val sone = mock<Sone>()
67                 addSone("sone-id", sone)
68                 verifyRedirect("return.html") {
69                         verify(core).trustSone(eq(currentSone), eq(sone))
70                 }
71         }
72
73         @Test
74         fun `page can be created by dependency injection`() {
75             assertThat(baseInjector.getInstance<TrustPage>(), notNullValue())
76         }
77
78 }