chore: seed sgclaw rust baseline
This commit is contained in:
41
tests/pipe_handshake_test.rs
Normal file
41
tests/pipe_handshake_test.rs
Normal file
@@ -0,0 +1,41 @@
|
||||
mod common;
|
||||
|
||||
use std::time::Duration;
|
||||
|
||||
use common::MockTransport;
|
||||
use sgclaw::pipe::{perform_handshake, AgentMessage, BrowserMessage};
|
||||
|
||||
#[test]
|
||||
fn handshake_reads_init_and_writes_init_ack() {
|
||||
let transport = MockTransport::new(vec![BrowserMessage::Init {
|
||||
version: "1.0".to_string(),
|
||||
hmac_seed: "0123456789abcdef".to_string(),
|
||||
capabilities: vec!["browser_action".to_string()],
|
||||
}]);
|
||||
|
||||
let result = perform_handshake(&transport, Duration::from_secs(5)).unwrap();
|
||||
let sent = transport.sent_messages();
|
||||
|
||||
assert_eq!(result.capabilities, vec!["browser_action"]);
|
||||
assert_eq!(sent.len(), 1);
|
||||
assert!(matches!(
|
||||
&sent[0],
|
||||
AgentMessage::InitAck {
|
||||
version,
|
||||
agent_id,
|
||||
supported_actions
|
||||
} if version == "1.0" && !agent_id.is_empty() && supported_actions.len() >= 4
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn handshake_rejects_version_mismatch() {
|
||||
let transport = MockTransport::new(vec![BrowserMessage::Init {
|
||||
version: "9.9".to_string(),
|
||||
hmac_seed: "0123456789abcdef".to_string(),
|
||||
capabilities: vec![],
|
||||
}]);
|
||||
|
||||
let err = perform_handshake(&transport, Duration::from_secs(5)).unwrap_err();
|
||||
assert!(err.to_string().contains("unsupported protocol version"));
|
||||
}
|
||||
Reference in New Issue
Block a user