app
Codex
Public Made by Adomby adom
Codex in Adom Hydrogen: ecosystem setup, dock dashboard and live engineering demos.
main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
use serde_json::{json, Value};
use std::{
net::TcpListener,
process::{Child, Command, Stdio},
thread,
time::{Duration, Instant},
};
struct Server(Child);
impl Drop for Server {
fn drop(&mut self) {
let _ = self.0.kill();
let _ = self.0.wait();
}
}
#[test]
fn loopback_health_identity_origin_and_catalog_contract() {
let listener = TcpListener::bind("127.0.0.1:0").unwrap();
let port = listener.local_addr().unwrap().port();
drop(listener);
let _server = Server(
Command::new(env!("CARGO_BIN_EXE_codex-bridge"))
.args(["--port", &port.to_string()])
.env("ADOM_BIND_HOST", "127.0.0.1")
.stdout(Stdio::null())
.stderr(Stdio::null())
.spawn()
.unwrap(),
);
let base = format!("http://127.0.0.1:{port}");
let agent = ureq::AgentBuilder::new()
.timeout(Duration::from_secs(2))
.build();
let deadline = Instant::now() + Duration::from_secs(5);
loop {
if agent.get(&format!("{base}/health")).call().is_ok() {
break;
}
assert!(Instant::now() < deadline);
thread::sleep(Duration::from_millis(20));
}
let url = format!("{base}/command");
let body = json!({"command":"codex_describe","args":{}});
assert!(matches!(
agent.post(&url).send_json(body.clone()),
Err(ureq::Error::Status(400, _))
));
assert!(matches!(
agent
.post(&url)
.set("X-Adom-Caller-Thread", "test")
.set("Origin", "https://example.com")
.send_json(body.clone()),
Err(ureq::Error::Status(403, _))
));
let catalog: Value = agent
.post(&url)
.set("X-Adom-Caller-Thread", "test")
.send_json(body)
.unwrap()
.into_json()
.unwrap();
assert_eq!(catalog["success"], true);
assert_eq!(catalog["_beforeUac"]["command"], "notify_user");
assert!(catalog["_setupHint"].as_str().unwrap().contains("BEFORE"));
assert_eq!(catalog["verbs"].as_array().unwrap().len(), 40);
let unknown: Value = agent
.post(&url)
.set("X-Adom-Caller-Thread", "test")
.send_json(json!({"command":"codex_arbitrary_shell","args":{}}))
.unwrap()
.into_json()
.unwrap();
assert_eq!(unknown["success"], false);
assert_eq!(unknown["errorCode"], "unknown_command");
}