mcp_core_rs/protocol/
mod.rs

1pub mod capabilities;
2pub mod constants;
3pub mod error;
4pub mod message;
5pub mod result;
6
7#[cfg(test)]
8mod tests {
9    use serde_json::json;
10
11    use crate::protocol::message::{JsonRpcMessage, JsonRpcRaw};
12
13    #[test]
14    fn test_notification_conversion() {
15        let raw = JsonRpcRaw {
16            jsonrpc: "2.0".to_string(),
17            id: None,
18            method: Some("notify".to_string()),
19            params: Some(json!({"key": "value"})),
20            result: None,
21            error: None,
22        };
23
24        let message = JsonRpcMessage::try_from(raw).unwrap();
25        match message {
26            JsonRpcMessage::Notification(n) => {
27                assert_eq!(n.jsonrpc, "2.0");
28                assert_eq!(n.method, "notify");
29                assert_eq!(n.params.unwrap(), json!({"key": "value"}));
30            }
31            _ => panic!("Expected Notification"),
32        }
33    }
34
35    #[test]
36    fn test_request_conversion() {
37        let raw = JsonRpcRaw {
38            jsonrpc: "2.0".to_string(),
39            id: Some(1),
40            method: Some("request".to_string()),
41            params: Some(json!({"key": "value"})),
42            result: None,
43            error: None,
44        };
45
46        let message = JsonRpcMessage::try_from(raw).unwrap();
47        match message {
48            JsonRpcMessage::Request(r) => {
49                assert_eq!(r.jsonrpc, "2.0");
50                assert_eq!(r.id, Some(1));
51                assert_eq!(r.method, "request");
52                assert_eq!(r.params.unwrap(), json!({"key": "value"}));
53            }
54            _ => panic!("Expected Request"),
55        }
56    }
57}