Skip to content

Commit 94bbc82

Browse files
KuechAdevcrocod
authored andcommitted
Add a unit test to check parsing logic
1 parent cf9082e commit 94bbc82

1 file changed

Lines changed: 75 additions & 0 deletions

File tree

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package io.modelcontextprotocol.kotlin.sdk.server
2+
3+
import kotlin.test.Test
4+
import kotlin.test.assertEquals
5+
import kotlin.test.assertFalse
6+
import kotlin.test.assertTrue
7+
8+
class UriTemplateFeatureKeyTest {
9+
@Test
10+
fun testParseUriWithoutTemplate() {
11+
val key = "schema://resource"
12+
val featureKey = UriTemplateFeatureKey(key)
13+
assertEquals("schema://resource", featureKey.key)
14+
assertEquals("^schema://resource/?$", featureKey.value.pattern)
15+
16+
val keyWithSlash = "schema://resource/"
17+
val featureKeyWithSlash = UriTemplateFeatureKey(keyWithSlash)
18+
assertEquals("schema://resource/", featureKeyWithSlash.key)
19+
assertEquals("^schema://resource/?$", featureKeyWithSlash.value.pattern)
20+
}
21+
22+
@Test
23+
fun testParseUriWithSingleVariable() {
24+
val key = "schema://resource/{resourceId}"
25+
val featureKey = UriTemplateFeatureKey(key)
26+
assertEquals(key, featureKey.key)
27+
assertEquals("^schema://resource/(?<resourceId>[^/]+)/?$", featureKey.value.pattern)
28+
29+
val receivedValidUri = "schema://resource/123"
30+
assertTrue(featureKey.matches(receivedValidUri))
31+
val parsedArguments = featureKey.extractArguments(receivedValidUri)
32+
assertEquals(mapOf("resourceId" to "123"), parsedArguments)
33+
34+
val receivedValidUri2 = "schema://resource/123/"
35+
assertTrue(featureKey.matches(receivedValidUri2))
36+
val parsedArguments2 = featureKey.extractArguments(receivedValidUri2)
37+
assertEquals(mapOf("resourceId" to "123"), parsedArguments2)
38+
39+
val receivedInvalidUri = "schema://resource2/123"
40+
assertFalse(featureKey.matches(receivedInvalidUri))
41+
val receivedInvalidUri2 = "schema://resource/123/abc"
42+
assertFalse(featureKey.matches(receivedInvalidUri2))
43+
}
44+
45+
@Test
46+
fun testParseUriWithExplodeSingleVariable() {
47+
val key = "schema://resource/{resourceId*}"
48+
val featureKey = UriTemplateFeatureKey(key)
49+
assertEquals(key, featureKey.key)
50+
assertEquals("^schema://resource/(?<resourceId>.+)/?$", featureKey.value.pattern)
51+
52+
val receivedValidUri = "schema://resource/123"
53+
assertTrue(featureKey.matches(receivedValidUri))
54+
val parsedArguments = featureKey.extractArguments(receivedValidUri)
55+
assertEquals(mapOf("resourceId" to "123"), parsedArguments)
56+
57+
val receivedValidUri2 = "schema://resource/123/"
58+
assertTrue(featureKey.matches(receivedValidUri2))
59+
val parsedArguments2 = featureKey.extractArguments(receivedValidUri2)
60+
assertEquals(mapOf("resourceId" to "123"), parsedArguments2)
61+
62+
val receivedValidUri3 = "schema://resource/123/abc"
63+
assertTrue(featureKey.matches(receivedValidUri3))
64+
val parsedArguments3 = featureKey.extractArguments(receivedValidUri3)
65+
assertEquals(mapOf("resourceId" to "123/abc"), parsedArguments3)
66+
67+
val receivedValidUri4 = "schema://resource/123/abc/"
68+
assertTrue(featureKey.matches(receivedValidUri4))
69+
val parsedArguments4 = featureKey.extractArguments(receivedValidUri4)
70+
assertEquals(mapOf("resourceId" to "123/abc"), parsedArguments4)
71+
72+
val receivedInvalidUri = "schema://resource2/123"
73+
assertFalse(featureKey.matches(receivedInvalidUri))
74+
}
75+
}

0 commit comments

Comments
 (0)