1include!(concat!(env!("OUT_DIR"), "/hindclaw_client_generated.rs"));
24
25#[cfg(test)]
26mod tests {
27 use super::*;
28
29 #[test]
30 fn test_client_creation() {
31 let _client = Client::new("http://localhost:8888");
32 assert!(true);
33 }
34
35 #[tokio::test]
36 #[ignore] async fn test_user_lifecycle() {
38 let api_url = std::env::var("HINDCLAW_API_URL")
39 .unwrap_or_else(|_| "http://localhost:8888".to_string());
40 let api_key = std::env::var("HINDCLAW_API_KEY")
41 .expect("HINDCLAW_API_KEY must be set for integration tests");
42
43 let http_client = reqwest::Client::builder()
45 .timeout(std::time::Duration::from_secs(30))
46 .default_headers({
47 let mut headers = reqwest::header::HeaderMap::new();
48 headers.insert(
49 reqwest::header::AUTHORIZATION,
50 format!("Bearer {}", api_key).parse().unwrap(),
51 );
52 headers
53 })
54 .build()
55 .expect("Failed to build HTTP client");
56 let client = Client::new_with_client(&api_url, http_client);
57
58 let user_id = format!("rust-test-{}", uuid::Uuid::new_v4());
59
60 let create_request = types::CreateUserRequest {
62 id: user_id.clone(),
63 display_name: "Rust Test User".to_string(),
64 email: None,
65 is_active: true,
66 };
67 let _create_response = client
68 .create_user(&create_request)
69 .await
70 .expect("Failed to create user");
71
72 let users = client
74 .list_users()
75 .await
76 .expect("Failed to list users");
77 let user_list = users.into_inner();
78 assert!(
79 user_list.iter().any(|u| u.id == user_id),
80 "Created user should appear in list"
81 );
82
83 let _ = client.delete_user(&user_id).await;
85 }
86}