1use std::collections::HashMap;
2
3#[derive(Debug, Clone, Default)]
5pub struct TlsConfig {
6 pub ca_cert: Option<String>,
7 pub client_cert: Option<String>,
8 pub client_key: Option<String>,
9 pub server_name: Option<String>,
10 pub insecure: bool,
11}
12
13#[derive(Debug, Clone, Default)]
15pub struct CallClientConfig {
16 pub address: String,
17 pub timeout_seconds: u64,
18 pub tls: Option<TlsConfig>,
19 pub metadata: Option<HashMap<String, String>>,
20 pub compression: Option<String>,
21}
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26
27 #[test]
28 fn test_tls_config_default() {
29 let tls = TlsConfig::default();
30 assert!(tls.ca_cert.is_none());
31 assert!(tls.client_cert.is_none());
32 assert!(!tls.insecure);
33 }
34
35 #[test]
36 fn test_tls_config_custom() {
37 let tls = TlsConfig {
38 ca_cert: Some("/path/to/ca.pem".into()),
39 insecure: true,
40 ..Default::default()
41 };
42 assert_eq!(tls.ca_cert.as_deref(), Some("/path/to/ca.pem"));
43 assert!(tls.insecure);
44 }
45
46 #[test]
47 fn test_call_client_config_default() {
48 let cfg = CallClientConfig::default();
49 assert!(cfg.address.is_empty());
50 assert_eq!(cfg.timeout_seconds, 0);
51 assert!(cfg.tls.is_none());
52 assert!(cfg.metadata.is_none());
53 }
54
55 #[test]
56 fn test_call_client_config_custom() {
57 let mut meta = HashMap::new();
58 meta.insert("authorization".into(), "token123".into());
59 let cfg = CallClientConfig {
60 address: "localhost:8080".into(),
61 timeout_seconds: 30,
62 metadata: Some(meta),
63 ..Default::default()
64 };
65 assert_eq!(cfg.address, "localhost:8080");
66 assert_eq!(cfg.timeout_seconds, 30);
67 assert_eq!(cfg.metadata.as_ref().unwrap()["authorization"], "token123");
68 }
69}