Skip to main content

apif_execution/
config.rs

1use std::collections::HashMap;
2
3/// Protocol-agnostic TLS configuration.
4#[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/// Configuration for creating a call client.
14#[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}