diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-17 01:41:16 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-17 01:41:16 +0300 |
| commit | e4de58b37f58d59d146158239ed218a8accd5c3c (patch) | |
| tree | 6bb35b8c9aaec969110ff51a58814dd8099617c0 /tests/api_ping.rs | |
| parent | 86adf88351e17c6a11cac253714b169eac0db233 (diff) | |
feat: add agent start for server-owned terminals
Diffstat (limited to 'tests/api_ping.rs')
| -rw-r--r-- | tests/api_ping.rs | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/api_ping.rs b/tests/api_ping.rs index a2e6ef76..4300b54e 100644 --- a/tests/api_ping.rs +++ b/tests/api_ping.rs @@ -551,6 +551,61 @@ fn tab_methods_round_trip_over_socket() { #[cfg(not(target_os = "macos"))] #[test] +fn agent_start_creates_named_terminal_over_socket() { + let _lock = test_lock(); + let base = unique_test_dir(); + let config_home = base.join("config"); + let runtime_dir = base.join("runtime"); + let socket_path = runtime_dir.join("herdr.sock"); + + let child = spawn_herdr(&config_home, &runtime_dir, &socket_path); + wait_for_socket(&socket_path, Duration::from_secs(5)); + + let started = send_request( + &socket_path, + &format!( + r#"{{"id":"agent_start","method":"agent.start","params":{{"name":"main","cwd":"{}","argv":["/bin/sh","-c","printf agent-start-ok; sleep 2"]}}}}"#, + base.display() + ), + ); + assert_eq!(started["result"]["type"], "agent_started"); + assert_eq!(started["result"]["agent"]["name"], "main"); + assert_eq!( + started["result"]["agent"]["cwd"], + base.display().to_string() + ); + assert_eq!(started["result"]["argv"][0], "/bin/sh"); + let terminal_id = started["result"]["agent"]["terminal_id"] + .as_str() + .unwrap() + .to_string(); + + let listed = send_request( + &socket_path, + r#"{"id":"agent_start_list","method":"agent.list","params":{}}"#, + ); + let agents = listed["result"]["agents"].as_array().unwrap(); + assert_eq!(agents.len(), 1); + assert_eq!(agents[0]["terminal_id"], terminal_id); + assert_eq!(agents[0]["name"], "main"); + + let duplicate = send_request( + &socket_path, + &format!( + r#"{{"id":"agent_start_duplicate","method":"agent.start","params":{{"name":"main","cwd":"{}","argv":["/bin/sh","-c","true"]}}}}"#, + base.display() + ), + ); + assert_eq!(duplicate["error"]["code"], "agent_name_taken"); + assert!(duplicate["error"]["message"] + .as_str() + .unwrap() + .contains(&terminal_id)); + + cleanup_spawned_herdr(child, base); +} + +#[test] fn agent_methods_round_trip_over_socket() { let _lock = test_lock(); let base = unique_test_dir(); |
