diff options
author | Leo Kettmeir <crowlkats@toaxl.com> | 2022-07-18 22:49:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-18 22:49:49 +0200 |
commit | 2eb27c92db38889a0a9e0e8e356ecfe55fcf433a (patch) | |
tree | 97a988872c7d7d9b2822224edcc14a155d478095 /cli/tests/integration/mod.rs | |
parent | 2bebdc9116f0824f0eb6241445de6fb1925f4c15 (diff) |
fix: WebSocketStream ping event causes pending promises (#15235)
Diffstat (limited to 'cli/tests/integration/mod.rs')
-rw-r--r-- | cli/tests/integration/mod.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/cli/tests/integration/mod.rs b/cli/tests/integration/mod.rs index 277b6a5d6..3101d8dc7 100644 --- a/cli/tests/integration/mod.rs +++ b/cli/tests/integration/mod.rs @@ -663,6 +663,46 @@ fn websocketstream() { } #[test] +fn websocketstream_ping() { + use deno_runtime::deno_websocket::tokio_tungstenite::tungstenite; + let _g = util::http_server(); + + let script = util::testdata_path().join("websocketstream_ping_test.ts"); + let root_ca = util::testdata_path().join("tls/RootCA.pem"); + let mut child = util::deno_cmd() + .arg("test") + .arg("--unstable") + .arg("--allow-net") + .arg("--cert") + .arg(root_ca) + .arg(script) + .stdout(std::process::Stdio::piped()) + .spawn() + .unwrap(); + + let server = std::net::TcpListener::bind("127.0.0.1:4513").unwrap(); + let (stream, _) = server.accept().unwrap(); + let mut socket = tungstenite::accept(stream).unwrap(); + socket + .write_message(tungstenite::Message::Text(String::from("A"))) + .unwrap(); + socket + .write_message(tungstenite::Message::Ping(vec![])) + .unwrap(); + socket + .write_message(tungstenite::Message::Text(String::from("B"))) + .unwrap(); + let message = socket.read_message().unwrap(); + assert_eq!(message, tungstenite::Message::Pong(vec![])); + socket + .write_message(tungstenite::Message::Text(String::from("C"))) + .unwrap(); + socket.close(None).unwrap(); + + assert!(child.wait().unwrap().success()); +} + +#[test] fn websocket_server_multi_field_connection_header() { let script = util::testdata_path() .join("websocket_server_multi_field_connection_header_test.ts"); |