aboutsummaryrefslogtreecommitdiff
path: root/src/server/client_endpoint_control.rs
blob: 099700044aef951b6754c1400ca8f7a69b09ac56 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
pub(crate) fn response(kind: &str, data: String) -> Option<crate::protocol::ServerMessage> {
    (kind == crate::protocol::endpoint::HEALTH_PING_KIND).then(|| {
        crate::protocol::ServerMessage::EndpointControl {
            kind: crate::protocol::endpoint::HEALTH_PONG_KIND.into(),
            data,
        }
    })
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn health_ping_echoes_a_pong_without_entering_server_state() {
        let pong = response(crate::protocol::endpoint::HEALTH_PING_KIND, "probe".into()).unwrap();
        assert!(matches!(
            pong,
            crate::protocol::ServerMessage::EndpointControl { kind, data }
                if kind == crate::protocol::endpoint::HEALTH_PONG_KIND && data == "probe"
        ));
        assert!(response("future.control", String::new()).is_none());
    }
}