eggress-protocol-websocket 1.0.4

WebSocket tunnel protocol implementation for eggress
Documentation
use eggress_protocol_websocket::error::WebSocketError;
use eggress_protocol_websocket::{WebSocketTunnelClient, WebSocketTunnelServer};

#[test]
fn fuzz_smoke_websocket_error_display() {
    let strings: &[&str] = &["", "test", "\u{0000}\u{0001}\u{ffff}", &"x".repeat(10000)];
    for s in strings {
        let err = WebSocketError::Handshake(s.to_string());
        let _ = err.to_string();
        let err = WebSocketError::Connect(s.to_string());
        let _ = err.to_string();
        let err = WebSocketError::Protocol(s.to_string());
        let _ = err.to_string();
    }
}

#[test]
fn fuzz_smoke_websocket_message_too_large() {
    let sizes: &[usize] = &[0, 1, 1024, usize::MAX / 2, usize::MAX];
    for &size in sizes {
        let max = size / 2;
        let err = WebSocketError::MessageTooLarge { size, max };
        let _ = err.to_string();
    }
}

#[test]
fn fuzz_smoke_websocket_tunnel_construction() {
    let max_sizes: &[usize] = &[0, 1, 1024, 16 * 1024 * 1024, usize::MAX];
    for &max in max_sizes {
        let _server = WebSocketTunnelServer::new(max);
        let _client = WebSocketTunnelClient::new(max);
    }
}