rings-node 0.20.0

Rings is a structured peer-to-peer network implementation using WebRTC, Chord algorithm, and full WebAssembly (WASM) support.
Documentation
use std::net::SocketAddr;
use std::time::Duration;

use tokio::net::TcpListener;
use tokio::net::TcpStream;

use super::super::read_connect_target;
use crate::error::Error;
use crate::error::Result;

#[tokio::test]
async fn test_connect_header_read_times_out() -> Result<()> {
    let listener = TcpListener::bind(SocketAddr::from(([127, 0, 0, 1], 0)))
        .await
        .map_err(|error| Error::HttpRequestError(error.to_string()))?;
    let addr = listener
        .local_addr()
        .map_err(|error| Error::HttpRequestError(error.to_string()))?;
    let client = TcpStream::connect(addr);
    let accepted = listener.accept();
    let (client, accepted) = tokio::join!(client, accepted);
    let _client = client.map_err(|error| Error::HttpRequestError(error.to_string()))?;
    let (mut server, _) = accepted.map_err(|error| Error::HttpRequestError(error.to_string()))?;

    let result = read_connect_target(&mut server, Duration::from_millis(10)).await;

    assert!(matches!(result, Err(Error::HttpRequestError(_))));
    Ok(())
}