bitwarden_core/client/
flags.rs

1#[derive(Debug, Default, Clone, serde::Deserialize)]
2pub struct Flags {
3    #[serde(default, rename = "enableCipherKeyEncryption")]
4    pub enable_cipher_key_encryption: bool,
5}
6
7impl Flags {
8    pub fn load_from_map(map: std::collections::HashMap<String, bool>) -> Self {
9        let map = map
10            .into_iter()
11            .map(|(k, v)| (k, serde_json::Value::Bool(v)))
12            .collect();
13        serde_json::from_value(serde_json::Value::Object(map)).expect("Valid map")
14    }
15}
16
17#[cfg(test)]
18mod tests {
19    use super::*;
20
21    #[test]
22    fn test_load_empty_map() {
23        let map = std::collections::HashMap::new();
24        let flags = Flags::load_from_map(map);
25        assert!(!flags.enable_cipher_key_encryption);
26    }
27
28    #[test]
29    fn test_load_valid_map() {
30        let mut map = std::collections::HashMap::new();
31        map.insert("enableCipherKeyEncryption".into(), true);
32        let flags = Flags::load_from_map(map);
33        assert!(flags.enable_cipher_key_encryption);
34    }
35
36    #[test]
37    fn test_load_invalid_map() {
38        let mut map = std::collections::HashMap::new();
39        map.insert("thisIsNotAFlag".into(), true);
40        let flags = Flags::load_from_map(map);
41        assert!(!flags.enable_cipher_key_encryption);
42    }
43}