🔀 Merge “release/v81” into “master”
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / page / FreenetRequestTest.kt
1 package net.pterodactylus.sone.web.page
2
3 import freenet.clients.http.*
4 import freenet.clients.http.SessionManager.*
5 import freenet.support.api.*
6 import net.pterodactylus.sone.test.*
7 import net.pterodactylus.util.web.*
8 import org.hamcrest.MatcherAssert.*
9 import org.hamcrest.Matchers.*
10 import org.junit.*
11 import org.mockito.*
12 import org.mockito.Mockito.*
13 import java.net.*
14
15 class FreenetRequestTest {
16
17         private val uri = URI(".")
18         private val method = Method.GET
19         private val httpRequest = mock(HTTPRequest::class.java)
20         private val toadletContext = mock(ToadletContext::class.java)
21         private val sessionManager = mock<SessionManager>()
22         private val request = FreenetRequest(uri, method, httpRequest, toadletContext, sessionManager)
23
24         @Test
25         fun `uri is retained correctly`() {
26                 assertThat(request.uri, equalTo(uri))
27         }
28
29         @Test
30         fun `method is retained correctly`() {
31                 assertThat(request.method, equalTo(method))
32         }
33
34         @Test
35         fun `http request is retained correctly`() {
36                 assertThat(request.httpRequest, equalTo(httpRequest))
37         }
38
39         @Test
40         fun `toadlet context is retained correctly`() {
41                 assertThat(request.toadletContext, equalTo(toadletContext))
42         }
43
44         @Test
45         fun `null is returned if no session exists`() {
46                 assertThat(request.existingSession, nullValue())
47         }
48
49         @Test
50         fun `existing session can be retrieved`() {
51                 val session = mock<Session>()
52                 whenever(sessionManager.useSession(toadletContext)).thenReturn(session)
53                 assertThat(request.existingSession, sameInstance(session))
54         }
55
56         @Test
57         fun `existing session is returned if it exists`() {
58                 val session = mock<Session>()
59                 whenever(sessionManager.useSession(toadletContext)).thenReturn(session)
60                 assertThat(request.session, sameInstance(session))
61         }
62
63         @Test
64         fun `new session is returned if none exists`() {
65                 val session = mock<Session>()
66                 whenever(sessionManager.createSession(anyString(), ArgumentMatchers.eq(toadletContext))).thenReturn(session)
67                 assertThat(request.session, sameInstance(session))
68         }
69
70 }