seraphic 0.1.55

Lightweight JSON RPC 2.0
Documentation
use super::*;
use seraphic::RequestWrapper;
use tracing::Level;

#[test]
fn message_serde() {
    tracing_subscriber::fmt()
        .with_max_level(Level::DEBUG)
        .init();

    let rq = MyRequest::from(TestRequest {});
    let expected_req = rq.clone();

    let message = rq.into_message::<MyResponse>(0);
    let expected_message = message.clone();

    let packet = MessagePacket::from(&message);
    let expected_packet = packet.clone();

    let serialized = serde_json::to_vec(&packet).unwrap();

    let packet: MessagePacket = serde_json::from_slice(&serialized).unwrap();
    assert_eq!(packet, expected_packet);

    let message: Message = packet.try_into_inner().unwrap();
    assert_eq!(message, expected_message);

    if let Message::Req { req, .. } = message {
        assert_eq!(expected_req, req)
    } else {
        panic!()
    }

    let rs = MyResponse::from(TestResponse {});
    let expected_req = rs.clone();

    let message = rs.into_message::<MyRequest>(0);
    let expected_message = message.clone();

    let packet = MessagePacket::from(&message);
    let expected_packet = packet.clone();

    let serialized = serde_json::to_vec(&packet).unwrap();

    let packet: MessagePacket = serde_json::from_slice(&serialized).unwrap();
    assert_eq!(packet, expected_packet);

    let message: Message = packet.try_into_inner().unwrap();
    assert_eq!(message, expected_message);

    if let Message::Res { res, .. } = message {
        assert_eq!(expected_req, res)
    } else {
        panic!()
    }
}