mirror of
https://github.com/zap-proto/wasm.git
synced 2026-10-30 15:03:12 +00:00
123 lines
3.1 KiB
Rust
123 lines
3.1 KiB
Rust
//! WASM tests for zap-wasm
|
|
//!
|
|
//! Run with: wasm-pack test --node
|
|
//! Or with browser: wasm-pack test --headless --firefox
|
|
|
|
#![cfg(target_arch = "wasm32")]
|
|
|
|
use wasm_bindgen_test::*;
|
|
use zap_wasm::*;
|
|
|
|
#[wasm_bindgen_test]
|
|
fn test_generate_id() {
|
|
let id1 = generate_id();
|
|
let id2 = generate_id();
|
|
|
|
assert!(!id1.is_empty());
|
|
assert!(!id2.is_empty());
|
|
assert_ne!(id1, id2);
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn test_generate_client_id() {
|
|
let id = generate_client_id();
|
|
|
|
assert!(id.starts_with("zap-"));
|
|
assert!(id.len() > 4);
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn test_protocol_encode_decode_binary() {
|
|
use js_sys::Object;
|
|
|
|
let protocol = Protocol::new(Some(true));
|
|
|
|
// Create test data
|
|
let obj = Object::new();
|
|
js_sys::Reflect::set(&obj, &"test".into(), &"value".into()).unwrap();
|
|
|
|
// Encode
|
|
let encoded = protocol.encode(MessageType::Request as u8, obj.into()).unwrap();
|
|
|
|
// Decode
|
|
let decoded = protocol.decode(encoded).unwrap();
|
|
|
|
let msg_type = js_sys::Reflect::get(&decoded, &"type".into())
|
|
.unwrap()
|
|
.as_f64()
|
|
.unwrap() as u8;
|
|
|
|
assert_eq!(msg_type, MessageType::Request as u8);
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn test_protocol_encode_decode_json() {
|
|
use js_sys::Object;
|
|
|
|
let protocol = Protocol::new(Some(false));
|
|
|
|
// Create test data
|
|
let obj = Object::new();
|
|
js_sys::Reflect::set(&obj, &"hello".into(), &"world".into()).unwrap();
|
|
|
|
// Encode
|
|
let encoded = protocol.encode(MessageType::Ping as u8, obj.into()).unwrap();
|
|
|
|
// Should be a string
|
|
assert!(encoded.is_string());
|
|
|
|
// Decode
|
|
let decoded = protocol.decode(encoded).unwrap();
|
|
|
|
let msg_type = js_sys::Reflect::get(&decoded, &"type".into())
|
|
.unwrap()
|
|
.as_f64()
|
|
.unwrap() as u8;
|
|
|
|
assert_eq!(msg_type, MessageType::Ping as u8);
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn test_client_type_enum() {
|
|
assert_eq!(ClientType::Unknown as u8, 0);
|
|
assert_eq!(ClientType::BrowserExtension as u8, 1);
|
|
assert_eq!(ClientType::McpServer as u8, 2);
|
|
assert_eq!(ClientType::McpClient as u8, 3);
|
|
assert_eq!(ClientType::Agent as u8, 4);
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn test_browser_action_enum() {
|
|
assert_eq!(BrowserAction::None as u8, 0);
|
|
assert_eq!(BrowserAction::Navigate as u8, 1);
|
|
assert_eq!(BrowserAction::Reload as u8, 2);
|
|
assert_eq!(BrowserAction::Click as u8, 10);
|
|
assert_eq!(BrowserAction::Evaluate as u8, 20);
|
|
assert_eq!(BrowserAction::Screenshot as u8, 40);
|
|
assert_eq!(BrowserAction::GetTabs as u8, 50);
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn test_zap_client_creation() {
|
|
use js_sys::Object;
|
|
|
|
let options = Object::new();
|
|
js_sys::Reflect::set(&options, &"clientId".into(), &"test-client".into()).unwrap();
|
|
|
|
let client = ZapClient::new(options.into()).unwrap();
|
|
|
|
assert_eq!(client.client_id(), "test-client");
|
|
assert!(!client.is_connected());
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn test_zap_client_default_options() {
|
|
use js_sys::Object;
|
|
|
|
let client = ZapClient::new(Object::new().into()).unwrap();
|
|
|
|
// Should have auto-generated client ID
|
|
assert!(client.client_id().starts_with("zap-"));
|
|
assert!(!client.is_connected());
|
|
}
|