1 package net.pterodactylus.sone.web.pages
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
13 import org.mockito.ArgumentMatchers.any
14 import org.mockito.Mockito.never
15 import org.mockito.Mockito.verify
18 * Unit test for [UnlockSonePage].
20 class UnlockSonePageTest: WebPageTest(::UnlockSonePage) {
23 fun `page returns correct path`() {
24 assertThat(page.path, equalTo("unlockSone.html"))
28 fun `page does not require login`() {
29 assertThat(page.requiresLogin(), equalTo(false))
33 fun `page returns correct title`() {
34 addTranslation("Page.UnlockSone.Title", "unlock page title")
35 assertThat(page.getPageTitle(freenetRequest), equalTo("unlock page title"))
39 fun `post request without sone redirects to return page`() {
41 addHttpRequestPart("returnPage", "return.html")
42 verifyRedirect("return.html") {
43 verify(core, never()).unlockSone(any())
48 fun `post request without invalid local sone does not unlock any sone and redirects to return page`() {
50 addHttpRequestPart("returnPage", "return.html")
51 addHttpRequestPart("sone", "invalid-sone")
52 verifyRedirect("return.html") {
53 verify(core, never()).unlockSone(any())
58 fun `post request without remote sone does not unlock any sone and redirects to return page`() {
60 addHttpRequestPart("returnPage", "return.html")
61 addHttpRequestPart("sone", "remote-sone")
62 addSone("remote-sone", mock())
63 verifyRedirect("return.html") {
64 verify(core, never()).unlockSone(any())
69 fun `post request with local sone unlocks sone and redirects to return page`() {
71 addHttpRequestPart("returnPage", "return.html")
72 addHttpRequestPart("sone", "local-sone")
73 val sone = mock<Sone>().apply { whenever(isLocal).thenReturn(true) }
74 addLocalSone("local-sone", sone)
75 verifyRedirect("return.html") {
76 verify(core).unlockSone(sone)
81 fun `page can be created by dependency injection`() {
82 assertThat(baseInjector.getInstance<UnlockSonePage>(), notNullValue())