Remove obsolete loading animation
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / EditImagePageTest.kt
1 package net.pterodactylus.sone.web
2
3 import net.pterodactylus.sone.data.Album
4 import net.pterodactylus.sone.data.Image
5 import net.pterodactylus.sone.data.Sone
6 import net.pterodactylus.sone.test.mock
7 import net.pterodactylus.sone.test.mockBuilder
8 import net.pterodactylus.sone.test.whenever
9 import net.pterodactylus.util.web.Method.GET
10 import net.pterodactylus.util.web.Method.POST
11 import org.junit.Before
12 import org.junit.Test
13 import org.mockito.Mockito.never
14 import org.mockito.Mockito.verify
15
16 /**
17  * Unit test for [EditImagePage].
18  */
19 class EditImagePageTest : WebPageTest() {
20
21         private val page = EditImagePage(template, webInterface)
22
23         private val image = mock<Image>()
24         private val modifier = mockBuilder<Image.Modifier>()
25         private val sone = mock<Sone>()
26         private val album = mock<Album>()
27
28         override fun getPage() = page
29
30         @Before
31         fun setupImage() {
32                 whenever(sone.isLocal).thenReturn(true)
33                 whenever(album.id).thenReturn("album-id")
34                 whenever(modifier.update()).thenReturn(image)
35                 whenever(image.sone).thenReturn(sone)
36                 whenever(image.album).thenReturn(album)
37                 whenever(image.modify()).thenReturn(modifier)
38         }
39
40         @Test
41         fun `get request does not redirect`() {
42                 request("", GET)
43                 page.handleRequest(freenetRequest, templateContext)
44         }
45
46         @Test
47         fun `post request with invalid image redirects to invalid page`() {
48                 request("", POST)
49                 verifyRedirect("invalid.html")
50         }
51
52         @Test
53         fun `post request with valid image from non-local sone redirects to no permission page`() {
54                 request("", POST)
55                 whenever(sone.isLocal).thenReturn(false)
56                 addImage("image-id", image)
57                 addHttpRequestParameter("image", "image-id")
58                 verifyRedirect("noPermission.html")
59         }
60
61         @Test
62         fun `post request with valid image and move left requested moves image left and redirects to return page`() {
63                 request("", POST)
64                 addImage("image-id", image)
65                 addHttpRequestParameter("image", "image-id")
66                 addHttpRequestParameter("returnPage", "return.html")
67                 addHttpRequestParameter("moveLeft", "true")
68                 verifyRedirect("return.html") {
69                         verify(album).moveImageUp(image)
70                         verify(core).touchConfiguration()
71                 }
72         }
73
74         @Test
75         fun `post request with valid image and move right requested moves image right and redirects to return page`() {
76                 request("", POST)
77                 addImage("image-id", image)
78                 addHttpRequestParameter("image", "image-id")
79                 addHttpRequestParameter("returnPage", "return.html")
80                 addHttpRequestParameter("moveRight", "true")
81                 verifyRedirect("return.html") {
82                         verify(album).moveImageDown(image)
83                         verify(core).touchConfiguration()
84                 }
85         }
86
87         @Test
88         fun `post request with valid image but only whitespace in the title redirects to empty image title page`() {
89                 request("", POST)
90                 addImage("image-id", image)
91                 addHttpRequestParameter("image", "image-id")
92                 addHttpRequestParameter("returnPage", "return.html")
93                 addHttpRequestParameter("title", "   ")
94                 verifyRedirect("emptyImageTitle.html") {
95                         verify(core, never()).touchConfiguration()
96                 }
97         }
98
99         @Test
100         fun `post request with valid image title and description modifies image and redirects to reutrn page`() {
101                 request("", POST)
102                 addImage("image-id", image)
103                 addHttpRequestParameter("image", "image-id")
104                 addHttpRequestParameter("returnPage", "return.html")
105                 addHttpRequestParameter("title", "Title")
106                 addHttpRequestParameter("description", "Description")
107                 verifyRedirect("return.html") {
108                         verify(modifier).setTitle("Title")
109                         verify(modifier).setDescription("Description")
110                         verify(modifier).update()
111                         verify(core).touchConfiguration()
112                 }
113         }
114
115         @Test
116         fun `post request with image title and description modifies image with filtered description and redirects to reutrn page`() {
117                 request("", POST)
118                 addImage("image-id", image)
119                 addHttpRequestParameter("image", "image-id")
120                 addHttpRequestParameter("returnPage", "return.html")
121                 addHttpRequestParameter("title", "Title")
122                 addHttpRequestHeader("Host", "www.te.st")
123                 addHttpRequestParameter("description", "Get http://www.te.st/KSK@GPL.txt")
124                 verifyRedirect("return.html") {
125                         verify(modifier).setTitle("Title")
126                         verify(modifier).setDescription("Get KSK@GPL.txt")
127                         verify(modifier).update()
128                         verify(core).touchConfiguration()
129                 }
130         }
131
132 }