| 677 | |
| 678 | #[test] |
| 679 | fn test_rpc_command_hook() { |
| 680 | let r = serde_json::json!({ |
| 681 | "rpc_command": { |
| 682 | "id": "3", |
| 683 | "method": "method_name", |
| 684 | "params": { |
| 685 | "param_1": [], |
| 686 | "param_2": {}, |
| 687 | "param_n": "", |
| 688 | } |
| 689 | } |
| 690 | }); |
| 691 | let d: RpcCommandEvent = serde_json::from_value(r).unwrap(); |
| 692 | match &d.rpc_command.id { |
| 693 | JsonScalar::String(s) => assert_eq!(s, "3"), |
| 694 | _ => panic!("should be string"), |
| 695 | } |
| 696 | assert_eq!(d.rpc_command.method, "method_name"); |
| 697 | |
| 698 | let mut params = serde_json::Map::new(); |
| 699 | params.insert("param_1".to_string(), serde_json::Value::Array(vec![])); |
| 700 | params.insert( |
| 701 | "param_2".to_string(), |
| 702 | serde_json::Value::Object(serde_json::Map::new()), |
| 703 | ); |
| 704 | params.insert( |
| 705 | "param_n".to_string(), |
| 706 | serde_json::Value::String("".to_string()), |
| 707 | ); |
| 708 | assert_eq!( |
| 709 | d.rpc_command.params, |
| 710 | JsonObjectOrArray::Object(params.clone()) |
| 711 | ); |
| 712 | assert_serde_roundtrip!(d, RpcCommandEvent); |
| 713 | |
| 714 | let q = serde_json::json!({ |
| 715 | "replace": { |
| 716 | "jsonrpc": "2.0", |
| 717 | "id": "3", |
| 718 | "method": "method_name", |
| 719 | "params": { |
| 720 | "param_1": [], |
| 721 | "param_2": {}, |
| 722 | "param_n": "", |
| 723 | } |
| 724 | } |
| 725 | }); |
| 726 | let e: RpcCommandAction = serde_json::from_value(q).unwrap(); |
| 727 | match &e.replace.as_ref().unwrap().id { |
| 728 | JsonScalar::String(s) => assert_eq!(s, "3"), |
| 729 | _ => panic!("should be string"), |
| 730 | } |
| 731 | assert_eq!(e.replace.as_ref().unwrap().method, "method_name"); |
| 732 | assert_eq!( |
| 733 | e.replace.as_ref().unwrap().params, |
| 734 | JsonObjectOrArray::Object(params) |
| 735 | ); |
| 736 | assert_serde_roundtrip!(e, RpcCommandAction); |