cdk_mintd/env_vars/
signatory.rs1use 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}