use serde_json::json; use warp_cli::{ artifact::{ArtifactCommand, DownloadArtifactArgs, GetArtifactArgs, UploadArtifactArgs}, task::{MessageCommand, MessageSendArgs, MessageWatchArgs, TaskCommand}, CliCommand, }; use warp_core::telemetry::TelemetryEvent; use super::{command_requires_auth, command_to_telemetry_event}; #[test] fn logout_does_not_require_auth() { assert!(!command_requires_auth(&CliCommand::Logout)); } #[test] fn login_does_not_require_auth() { assert!(!command_requires_auth(&CliCommand::Login)); } #[test] fn artifact_download_requires_auth() { assert!(command_requires_auth(&CliCommand::Artifact( ArtifactCommand::Download(DownloadArtifactArgs { artifact_uid: "artifact-123".to_string(), out: None, },) ))); } #[test] fn run_message_send_requires_auth() { assert!(command_requires_auth(&CliCommand::Run( TaskCommand::Message(MessageCommand::Send(MessageSendArgs { to: vec!["run-456".to_string()], subject: "subject".to_string(), body: "body".to_string(), sender_run_id: "run-123".to_string(), }),) ))); } #[test] fn artifact_get_requires_auth() { assert!(command_requires_auth(&CliCommand::Artifact( ArtifactCommand::Get(GetArtifactArgs { artifact_uid: "artifact-123".to_string(), },) ))); } #[test] fn artifact_upload_requires_auth() { assert!(command_requires_auth(&CliCommand::Artifact( ArtifactCommand::Upload(UploadArtifactArgs { path: "artifact.txt".into(), run_id: Some("run-123".to_string()), conversation_id: None, description: None, },) ))); } #[test] #[serial_test::serial] fn run_message_send_telemetry_uses_canonical_harness_from_env() { std::env::set_var("OZ_HARNESS", " CLAUDE "); let event = command_to_telemetry_event(&CliCommand::Run(TaskCommand::Message( MessageCommand::Send(MessageSendArgs { to: vec!["run-456".to_string()], subject: "subject".to_string(), body: "body".to_string(), sender_run_id: "run-123".to_string(), }), ))); std::env::remove_var("OZ_HARNESS"); assert_eq!(event.payload(), Some(json!({ "harness": "claude" }))); } #[test] #[serial_test::serial] fn run_message_send_telemetry_supports_claude_code_alias() { std::env::set_var("OZ_HARNESS", "CLAUDE_CODE"); let event = command_to_telemetry_event(&CliCommand::Run(TaskCommand::Message( MessageCommand::Send(MessageSendArgs { to: vec!["run-456".to_string()], subject: "subject".to_string(), body: "body".to_string(), sender_run_id: "run-123".to_string(), }), ))); std::env::remove_var("OZ_HARNESS"); assert_eq!(event.payload(), Some(json!({ "harness": "claude" }))); } #[test] #[serial_test::serial] fn run_message_send_telemetry_supports_opencode_harness() { std::env::set_var("OZ_HARNESS", "opencode"); let event = command_to_telemetry_event(&CliCommand::Run(TaskCommand::Message( MessageCommand::Send(MessageSendArgs { to: vec!["run-456".to_string()], subject: "subject".to_string(), body: "body".to_string(), sender_run_id: "run-123".to_string(), }), ))); std::env::remove_var("OZ_HARNESS"); assert_eq!(event.payload(), Some(json!({ "harness": "opencode" }))); } #[test] #[serial_test::serial] fn run_message_send_telemetry_defaults_to_unknown_harness() { std::env::remove_var("OZ_HARNESS"); let event = command_to_telemetry_event(&CliCommand::Run(TaskCommand::Message( MessageCommand::Send(MessageSendArgs { to: vec!["run-456".to_string()], subject: "subject".to_string(), body: "body".to_string(), sender_run_id: "run-123".to_string(), }), ))); assert_eq!(event.payload(), Some(json!({ "harness": "unknown" }))); } #[test] #[serial_test::serial] fn run_message_watch_telemetry_defaults_to_unknown_harness() { std::env::remove_var("OZ_HARNESS"); let event = command_to_telemetry_event(&CliCommand::Run(TaskCommand::Message( MessageCommand::Watch(MessageWatchArgs { run_id: "run-123".to_string(), since_sequence: 0, }), ))); assert_eq!(event.payload(), Some(json!({ "harness": "unknown" }))); }