11package io.modelcontextprotocol.kotlin.sdk.integration.kotlin
22
3+ import io.modelcontextprotocol.kotlin.sdk.GetPromptRequest
4+ import io.modelcontextprotocol.kotlin.sdk.GetPromptResult
5+ import io.modelcontextprotocol.kotlin.sdk.PromptArgument
6+ import io.modelcontextprotocol.kotlin.sdk.PromptMessage
7+ import io.modelcontextprotocol.kotlin.sdk.Role
8+ import io.modelcontextprotocol.kotlin.sdk.ServerCapabilities
9+ import io.modelcontextprotocol.kotlin.sdk.TextContent
310import io.modelcontextprotocol.kotlin.sdk.integration.utils.TestUtils.runTest
4- import io.modelcontextprotocol.kotlin.sdk.*
511import kotlinx.coroutines.launch
612import kotlinx.coroutines.runBlocking
713import org.junit.jupiter.api.Test
@@ -28,13 +34,11 @@ class PromptEdgeCasesTest : KotlinTestBase() {
2834 private val specialCharsPromptDescription = " A prompt with special characters"
2935 private val specialCharsContent = " !@#$%^&*()_+{}|:\" <>?~`-=[]\\ ;',./\n\t "
3036
31- override fun configureServerCapabilities (): ServerCapabilities {
32- return ServerCapabilities (
33- prompts = ServerCapabilities .Prompts (
34- listChanged = true
35- )
36- )
37- }
37+ override fun configureServerCapabilities (): ServerCapabilities = ServerCapabilities (
38+ prompts = ServerCapabilities .Prompts (
39+ listChanged = true ,
40+ ),
41+ )
3842
3943 override fun configureServer () {
4044 server.addPrompt(
@@ -44,9 +48,9 @@ class PromptEdgeCasesTest : KotlinTestBase() {
4448 PromptArgument (
4549 name = " name" ,
4650 description = " The name to greet" ,
47- required = true
48- )
49- )
51+ required = true ,
52+ ),
53+ ),
5054 ) { request ->
5155 val name = request.arguments?.get(" name" ) ? : " World"
5256
@@ -55,13 +59,13 @@ class PromptEdgeCasesTest : KotlinTestBase() {
5559 messages = listOf (
5660 PromptMessage (
5761 role = Role .user,
58- content = TextContent (text = " Hello, $name !" )
62+ content = TextContent (text = " Hello, $name !" ),
5963 ),
6064 PromptMessage (
6165 role = Role .assistant,
62- content = TextContent (text = " Greetings, $name ! How can I assist you today?" )
63- )
64- )
66+ content = TextContent (text = " Greetings, $name ! How can I assist you today?" ),
67+ ),
68+ ),
6569 )
6670 }
6771
@@ -78,8 +82,8 @@ class PromptEdgeCasesTest : KotlinTestBase() {
7882 PromptArgument (name = " arg7" , description = " Argument 7" , required = false ),
7983 PromptArgument (name = " arg8" , description = " Argument 8" , required = false ),
8084 PromptArgument (name = " arg9" , description = " Argument 9" , required = false ),
81- PromptArgument (name = " arg10" , description = " Argument 10" , required = false )
82- )
85+ PromptArgument (name = " arg10" , description = " Argument 10" , required = false ),
86+ ),
8387 ) { request ->
8488 // validate required arguments
8589 val requiredArgs = listOf (" arg1" , " arg2" , " arg3" )
@@ -103,13 +107,19 @@ class PromptEdgeCasesTest : KotlinTestBase() {
103107 messages = listOf (
104108 PromptMessage (
105109 role = Role .user,
106- content = TextContent (text = " Arguments: ${args.entries.joinToString { " ${it.key} =${it.value} " }} " )
110+ content = TextContent (
111+ text = " Arguments: ${
112+ args.entries.joinToString {
113+ " ${it.key} =${it.value} "
114+ }
115+ } " ,
116+ ),
107117 ),
108118 PromptMessage (
109119 role = Role .assistant,
110- content = TextContent (text = " Received ${args.size} arguments" )
111- )
112- )
120+ content = TextContent (text = " Received ${args.size} arguments" ),
121+ ),
122+ ),
113123 )
114124 }
115125
@@ -121,9 +131,9 @@ class PromptEdgeCasesTest : KotlinTestBase() {
121131 PromptArgument (
122132 name = " size" ,
123133 description = " Size multiplier" ,
124- required = false
125- )
126- )
134+ required = false ,
135+ ),
136+ ),
127137 ) { request ->
128138 val size = request.arguments?.get(" size" )?.toIntOrNull() ? : 1
129139 val content = largePromptContent.repeat(size)
@@ -133,13 +143,13 @@ class PromptEdgeCasesTest : KotlinTestBase() {
133143 messages = listOf (
134144 PromptMessage (
135145 role = Role .user,
136- content = TextContent (text = " Generate a large response" )
146+ content = TextContent (text = " Generate a large response" ),
137147 ),
138148 PromptMessage (
139149 role = Role .assistant,
140- content = TextContent (text = content)
141- )
142- )
150+ content = TextContent (text = content),
151+ ),
152+ ),
143153 )
144154 }
145155
@@ -150,9 +160,9 @@ class PromptEdgeCasesTest : KotlinTestBase() {
150160 PromptArgument (
151161 name = " special" ,
152162 description = " Special characters to include" ,
153- required = false
154- )
155- )
163+ required = false ,
164+ ),
165+ ),
156166 ) { request ->
157167 val special = request.arguments?.get(" special" ) ? : specialCharsContent
158168
@@ -161,13 +171,13 @@ class PromptEdgeCasesTest : KotlinTestBase() {
161171 messages = listOf (
162172 PromptMessage (
163173 role = Role .user,
164- content = TextContent (text = " Special characters: $special " )
174+ content = TextContent (text = " Special characters: $special " ),
165175 ),
166176 PromptMessage (
167177 role = Role .assistant,
168- content = TextContent (text = " Received special characters: $special " )
169- )
170- )
178+ content = TextContent (text = " Received special characters: $special " ),
179+ ),
180+ ),
171181 )
172182 }
173183 }
@@ -179,8 +189,8 @@ class PromptEdgeCasesTest : KotlinTestBase() {
179189 val result = client.getPrompt(
180190 GetPromptRequest (
181191 name = basicPromptName,
182- arguments = mapOf (" name" to testName)
183- )
192+ arguments = mapOf (" name" to testName),
193+ ),
184194 )
185195
186196 assertNotNull(result, " Get prompt result should not be null" )
@@ -201,7 +211,7 @@ class PromptEdgeCasesTest : KotlinTestBase() {
201211 assertEquals(
202212 " Greetings, $testName ! How can I assist you today?" ,
203213 assistantContent.text,
204- " Assistant message content should match"
214+ " Assistant message content should match" ,
205215 )
206216 }
207217 }
@@ -214,8 +224,8 @@ class PromptEdgeCasesTest : KotlinTestBase() {
214224 val result = client.getPrompt(
215225 GetPromptRequest (
216226 name = complexPromptName,
217- arguments = arguments
218- )
227+ arguments = arguments,
228+ ),
219229 )
220230
221231 assertNotNull(result, " Get prompt result should not be null" )
@@ -241,7 +251,7 @@ class PromptEdgeCasesTest : KotlinTestBase() {
241251 assertEquals(
242252 " Received 10 arguments" ,
243253 assistantContent.text,
244- " Assistant message should indicate 10 arguments"
254+ " Assistant message should indicate 10 arguments" ,
245255 )
246256 }
247257 }
@@ -252,8 +262,8 @@ class PromptEdgeCasesTest : KotlinTestBase() {
252262 val result = client.getPrompt(
253263 GetPromptRequest (
254264 name = largePromptName,
255- arguments = mapOf (" size" to " 1" )
256- )
265+ arguments = mapOf (" size" to " 1" ),
266+ ),
257267 )
258268
259269 assertNotNull(result, " Get prompt result should not be null" )
@@ -276,8 +286,8 @@ class PromptEdgeCasesTest : KotlinTestBase() {
276286 val result = client.getPrompt(
277287 GetPromptRequest (
278288 name = specialCharsPromptName,
279- arguments = mapOf (" special" to specialCharsContent)
280- )
289+ arguments = mapOf (" special" to specialCharsContent),
290+ ),
281291 )
282292
283293 assertNotNull(result, " Get prompt result should not be null" )
@@ -299,7 +309,7 @@ class PromptEdgeCasesTest : KotlinTestBase() {
299309 val assistantText = assistantContent.text ? : " "
300310 assertTrue(
301311 assistantText.contains(specialCharsContent),
302- " Assistant message should contain special characters"
312+ " Assistant message should contain special characters" ,
303313 )
304314 }
305315 }
@@ -312,18 +322,18 @@ class PromptEdgeCasesTest : KotlinTestBase() {
312322 client.getPrompt(
313323 GetPromptRequest (
314324 name = complexPromptName,
315- arguments = mapOf (" arg4" to " value4" , " arg5" to " value5" )
316- )
325+ arguments = mapOf (" arg4" to " value4" , " arg5" to " value5" ),
326+ ),
317327 )
318328 }
319329 }
320330
321331 assertTrue(
322332 exception.message?.contains(" arg1" ) == true ||
323- exception.message?.contains(" arg2" ) == true ||
324- exception.message?.contains(" arg3" ) == true ||
325- exception.message?.contains(" required" ) == true ,
326- " Exception should mention missing required arguments"
333+ exception.message?.contains(" arg2" ) == true ||
334+ exception.message?.contains(" arg3" ) == true ||
335+ exception.message?.contains(" required" ) == true ,
336+ " Exception should mention missing required arguments" ,
327337 )
328338 }
329339 }
@@ -354,8 +364,8 @@ class PromptEdgeCasesTest : KotlinTestBase() {
354364 val result = client.getPrompt(
355365 GetPromptRequest (
356366 name = promptName,
357- arguments = arguments
358- )
367+ arguments = arguments,
368+ ),
359369 )
360370
361371 synchronized(results) {
@@ -384,19 +394,19 @@ class PromptEdgeCasesTest : KotlinTestBase() {
384394 client.getPrompt(
385395 GetPromptRequest (
386396 name = nonExistentPromptName,
387- arguments = mapOf (" name" to " Test" )
388- )
397+ arguments = mapOf (" name" to " Test" ),
398+ ),
389399 )
390400 }
391401 }
392402
393403 assertTrue(
394404 exception.message?.contains(" not found" ) == true ||
395- exception.message?.contains(" does not exist" ) == true ||
396- exception.message?.contains(" unknown" ) == true ||
397- exception.message?.contains(" error" ) == true ,
398- " Exception should indicate prompt not found"
405+ exception.message?.contains(" does not exist" ) == true ||
406+ exception.message?.contains(" unknown" ) == true ||
407+ exception.message?.contains(" error" ) == true ,
408+ " Exception should indicate prompt not found" ,
399409 )
400410 }
401411 }
402- }
412+ }
0 commit comments