diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/Cargo.toml | 1 | ||||
-rw-r--r-- | cli/tests/integration_tests.rs | 60 |
2 files changed, 61 insertions, 0 deletions
diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 5b715ba9d..0349491cb 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -86,6 +86,7 @@ os_pipe = "0.9.2" test_util = { path = "../test_util" } tokio-tungstenite = "0.11.0" tower-test = "0.3.0" +reqwest = {version = "0.10.8", features = ["json"]} [target.'cfg(unix)'.dev-dependencies] exec = "0.3.1" # Used in test_raw_tty diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index 9400db4ad..2383db0da 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -4345,6 +4345,66 @@ async fn inspector_runtime_evaluate_does_not_crash() { child.wait().unwrap(); } +#[tokio::test] +async fn inspector_json() { + let script = util::tests_path().join("inspector1.js"); + let mut child = util::deno_cmd() + .arg("run") + .arg(inspect_flag_with_unique_port("--inspect")) + .arg(script) + .stderr(std::process::Stdio::piped()) + .spawn() + .unwrap(); + + let stderr = child.stderr.as_mut().unwrap(); + let mut stderr_lines = + std::io::BufReader::new(stderr).lines().map(|r| r.unwrap()); + let ws_url = extract_ws_url_from_stderr(&mut stderr_lines); + let mut url = ws_url.clone(); + let _ = url.set_scheme("http"); + url.set_path("/json"); + let resp = reqwest::get(url).await.unwrap(); + assert_eq!(resp.status(), reqwest::StatusCode::OK); + let endpoint_list = resp + .json::<Vec<deno_core::serde_json::Value>>() + .await + .unwrap(); + let matching_endpoint = endpoint_list + .iter() + .find(|e| e["webSocketDebuggerUrl"] == ws_url.as_str()); + assert!(matching_endpoint.is_some()); +} + +#[tokio::test] +async fn inspector_json_list() { + let script = util::tests_path().join("inspector1.js"); + let mut child = util::deno_cmd() + .arg("run") + .arg(inspect_flag_with_unique_port("--inspect")) + .arg(script) + .stderr(std::process::Stdio::piped()) + .spawn() + .unwrap(); + + let stderr = child.stderr.as_mut().unwrap(); + let mut stderr_lines = + std::io::BufReader::new(stderr).lines().map(|r| r.unwrap()); + let ws_url = extract_ws_url_from_stderr(&mut stderr_lines); + let mut url = ws_url.clone(); + let _ = url.set_scheme("http"); + url.set_path("/json/list"); + let resp = reqwest::get(url).await.unwrap(); + assert_eq!(resp.status(), reqwest::StatusCode::OK); + let endpoint_list = resp + .json::<Vec<deno_core::serde_json::Value>>() + .await + .unwrap(); + let matching_endpoint = endpoint_list + .iter() + .find(|e| e["webSocketDebuggerUrl"] == ws_url.as_str()); + assert!(matching_endpoint.is_some()); +} + #[test] fn websocket() { let _g = util::http_server(); |