Skip to main content

cdk_mintd/env_vars/
signatory.rs

1//! Remote signatory environment variables
2
3use std::env;
4
5use super::common::*;
6use crate::config::Signatory;
7
8impl Signatory {
9    pub fn from_env(mut self) -> Self {
10        if let Ok(enabled) = env::var(ENV_SIGNATORY_ENABLED) {
11            if let Ok(enabled) = enabled.parse() {
12                self.enabled = enabled;
13            }
14        }
15
16        if let Ok(addr) = env::var(ENV_SIGNATORY_ADDRESS) {
17            self.address = addr;
18        }
19
20        if let Ok(port) = env::var(ENV_SIGNATORY_PORT) {
21            if let Ok(port) = port.parse() {
22                self.port = port;
23            }
24        }
25
26        if let Ok(tls_dir) = env::var(ENV_SIGNATORY_TLS_DIR) {
27            self.tls_dir = Some(tls_dir.into());
28        }
29
30        if let Ok(allow_insecure) = env::var(ENV_SIGNATORY_ALLOW_INSECURE) {
31            if let Ok(allow_insecure) = allow_insecure.parse() {
32                self.allow_insecure = allow_insecure;
33            }
34        }
35
36        self
37    }
38}
39
40#[cfg(test)]
41mod tests {
42    use std::path::PathBuf;
43
44    use super::*;
45
46    fn env_lock() -> std::sync::MutexGuard<'static, ()> {
47        crate::test_utils::env_lock()
48    }
49
50    fn clear_env_vars() {
51        env::remove_var(ENV_SIGNATORY_ENABLED);
52        env::remove_var(ENV_SIGNATORY_ADDRESS);
53        env::remove_var(ENV_SIGNATORY_PORT);
54        env::remove_var(ENV_SIGNATORY_TLS_DIR);
55        env::remove_var(ENV_SIGNATORY_ALLOW_INSECURE);
56    }
57
58    #[test]
59    fn signatory_from_env_reads_enabled_and_connection_fields() {
60        let _guard = env_lock();
61        clear_env_vars();
62
63        env::set_var(ENV_SIGNATORY_ENABLED, "true");
64        env::set_var(ENV_SIGNATORY_ADDRESS, "0.0.0.0");
65        env::set_var(ENV_SIGNATORY_PORT, "15061");
66        env::set_var(ENV_SIGNATORY_TLS_DIR, "/var/lib/cdk/signatory-tls");
67        env::set_var(ENV_SIGNATORY_ALLOW_INSECURE, "true");
68
69        let signatory = Signatory::default().from_env();
70
71        assert!(signatory.enabled);
72        assert_eq!(signatory.address, "0.0.0.0");
73        assert_eq!(signatory.port, 15061);
74        assert_eq!(
75            signatory.tls_dir,
76            Some(PathBuf::from("/var/lib/cdk/signatory-tls"))
77        );
78        assert!(signatory.allow_insecure);
79
80        clear_env_vars();
81    }
82}