1 package net.pterodactylus.sone.web
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.GET
7 import net.pterodactylus.util.web.Method.POST
9 import org.mockito.ArgumentMatchers
10 import org.mockito.ArgumentMatchers.any
11 import org.mockito.ArgumentMatchers.anyString
12 import org.mockito.Mockito.never
13 import org.mockito.Mockito.verify
16 * Unit test for [FollowSonePage].
18 class FollowSonePageTest : WebPageTest() {
20 private val page = FollowSonePage(template, webInterface)
23 fun `get request does not redirect`() {
25 page.handleRequest(freenetRequest, templateContext)
29 fun `a single sone can be followed`() {
31 val sone = mock<Sone>()
32 addSone("sone-id", sone)
33 addHttpRequestParameter("sone", "sone-id")
34 addHttpRequestParameter("returnPage", "return.html")
35 expectedException.expect(redirectsTo("return.html"))
37 page.handleRequest(freenetRequest, templateContext)
39 verify(core).followSone(currentSone, "sone-id")
40 verify(core).markSoneKnown(sone)
45 fun `multiple sones can be followed`() {
47 val firstSone = mock<Sone>()
48 addSone("sone-id1", firstSone)
49 val secondSone = mock<Sone>()
50 addSone("sone-id2", secondSone)
51 addHttpRequestParameter("sone", "sone-id1,sone-id2")
52 addHttpRequestParameter("returnPage", "return.html")
53 expectedException.expect(redirectsTo("return.html"))
55 page.handleRequest(freenetRequest, templateContext)
57 verify(core).followSone(currentSone, "sone-id1")
58 verify(core).followSone(currentSone, "sone-id2")
59 verify(core).markSoneKnown(firstSone)
60 verify(core).markSoneKnown(secondSone)
65 fun `a non-existing sone is not followed`() {
67 addHttpRequestParameter("sone", "sone-id")
68 addHttpRequestParameter("returnPage", "return.html")
69 expectedException.expect(redirectsTo("return.html"))
71 page.handleRequest(freenetRequest, templateContext)
73 verify(core, never()).followSone(ArgumentMatchers.eq(currentSone), anyString())
74 verify(core, never()).markSoneKnown(any<Sone>())