@@ -5,7 +5,11 @@ import dev.typetype.server.models.ExtractionResult
55import dev.typetype.server.routes.channelRoutes
66import dev.typetype.server.services.ChannelService
77import io.ktor.client.request.get
8+ import io.ktor.client.request.header
9+ import io.ktor.client.request.post
10+ import io.ktor.client.request.setBody
811import io.ktor.http.HttpStatusCode
12+ import io.ktor.http.HttpHeaders
913import io.ktor.serialization.kotlinx.json.json
1014import io.ktor.server.application.install
1115import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
@@ -80,4 +84,29 @@ class ChannelRoutesTest {
8084 assertEquals(HttpStatusCode .OK , response.status)
8185 coVerify { channelService.getChannel(" https://www.youtube.com/@test/search?query=typing" , null , null ) }
8286 }
87+
88+ @Test
89+ fun `POST channel page accepts long nextpage in body` () = withApp {
90+ val nextpage = " x" .repeat(9_000 )
91+ coEvery { channelService.getChannel(any(), any(), any()) } returns
92+ ExtractionResult .Success (testChannelResponse())
93+
94+ val response = client.post(" /channel/page" ) {
95+ header(HttpHeaders .ContentType , " application/json" )
96+ setBody(""" {"url":"https://youtube.com/channel/test","nextpage":"$nextpage ","sort":"latest"}""" )
97+ }
98+
99+ assertEquals(HttpStatusCode .OK , response.status)
100+ coVerify { channelService.getChannel(" https://youtube.com/channel/test" , nextpage, " latest" ) }
101+ }
102+
103+ @Test
104+ fun `POST channel page without url returns 400` () = withApp {
105+ val response = client.post(" /channel/page" ) {
106+ header(HttpHeaders .ContentType , " application/json" )
107+ setBody(""" {"nextpage":"cursor"}""" )
108+ }
109+
110+ assertEquals(HttpStatusCode .BadRequest , response.status)
111+ }
83112}
0 commit comments