bitwarden_core/client/
flags.rs1#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)]
10#[serde(default, rename_all = "kebab-case")]
11pub struct Flags {
12 #[serde(alias = "pm-34500-strict-cipher-decryption")]
14 pub strict_cipher_decryption: bool,
15
16 #[serde(alias = "fedrampGovRegion")]
18 pub fedramp_gov_region: bool,
19}
20
21impl Flags {
22 pub fn load_from_map(map: std::collections::HashMap<String, bool>) -> Self {
24 let map = map
25 .into_iter()
26 .map(|(k, v)| (k, serde_json::Value::Bool(v)))
27 .collect();
28 serde_json::from_value(serde_json::Value::Object(map)).expect("Valid map")
29 }
30}
31
32#[cfg(test)]
33mod tests {
34 use super::*;
35
36 #[test]
37 fn test_load_empty_map() {
38 let map = std::collections::HashMap::new();
39 let flags = Flags::load_from_map(map);
40 assert!(!flags.strict_cipher_decryption);
41 }
42
43 #[test]
44 fn test_load_valid_map() {
45 let mut map = std::collections::HashMap::new();
46 map.insert("strict-cipher-decryption".into(), true);
47 let flags = Flags::load_from_map(map);
48 assert!(flags.strict_cipher_decryption);
49 }
50
51 #[test]
52 fn test_load_valid_map_alias() {
53 let mut map = std::collections::HashMap::new();
54 map.insert("pm-34500-strict-cipher-decryption".into(), true);
55 let flags = Flags::load_from_map(map);
56 assert!(flags.strict_cipher_decryption);
57 }
58
59 #[test]
60 fn test_load_invalid_map() {
61 let mut map = std::collections::HashMap::new();
62 map.insert("thisIsNotAFlag".into(), true);
63 let flags = Flags::load_from_map(map);
64 assert!(!flags.strict_cipher_decryption);
65 }
66}