mcp_core_rs/protocol/
mod.rs1pub 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}