#[cfg(test)]
mod tests {
use nash_ws::{WebSocket, Message};
use cross_test::prelude::*;
cross_test_configure!();
#[cross_test]
async fn connection_failure() {
WebSocket::new("wss://nonexistent.domain").await.expect_err("Couldn't connect");
}
#[cross_test]
async fn send_after_close() {
let (mut sender, _) = WebSocket::new("wss://echo.websocket.org").await.expect("Couldn't connect");
sender.close(None).await.expect("Failed to close WebSocket.");
let expected_message_1 = Message::Text("Hello".into());
sender.send(&expected_message_1).await.expect_err("Sending after closing is not allowed.");
}
#[cross_test]
async fn echo() {
let (mut sender, mut receiver) = WebSocket::new("wss://echo.websocket.org").await.expect("Couldn't connect");
let expected_message_1 = Message::Text("Hello".into());
sender.send(&expected_message_1).await.expect("Couldn't send text message 1.");
let expected_message_2 = Message::Binary(vec![1, 2, 3]);
sender.send(&expected_message_2).await.expect("Couldn't send text message 2.");
let expected_message_3 = Message::Text("Echo".into());
sender.send(&expected_message_3).await.expect("Couldn't send binary message 3.");
let message = receiver.next().await.expect("Stream has terminated at message 1.").expect("Failed to receive message 1.");
assert_eq!(message, expected_message_1, "Unexpected message 1.");
let message = receiver.next().await.expect("Stream has terminated at message 2.").expect("Failed to receive message 2.");
assert_eq!(message, expected_message_2, "Unexpected message 2.");
let message = receiver.next().await.expect("Stream has terminated at message 3.").expect("Failed to receive message 3.");
assert_eq!(message, expected_message_3, "Unexpected message 3.");
}
}