bitwarden_policies/policies/
fill_assist.rs1use bitwarden_organizations::OrganizationUserType;
2use serde::{Deserialize, Serialize};
3
4use crate::{PolicyDefinition, PolicyType, policy_type::PolicyDataType};
5
6pub struct FillAssistPolicy;
8
9impl PolicyDefinition for FillAssistPolicy {
10 type Data = FillAssistPolicyData;
11
12 fn policy_type(&self) -> PolicyType {
13 PolicyType::FillAssist
14 }
15
16 fn exempt_roles(&self) -> &[OrganizationUserType] {
17 &[]
18 }
19
20 fn to_erased(&self, data: Self::Data) -> PolicyDataType {
21 PolicyDataType::FillAssist(data)
22 }
23}
24
25#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
27#[serde(rename_all = "camelCase")]
28#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
29#[bitwarden_ffi::wasm_record]
30pub struct FillAssistPolicyData {
31 #[serde(skip_serializing_if = "Option::is_none")]
35 pub rules_url: Option<String>,
36}
37
38#[cfg(test)]
39mod tests {
40 use super::*;
41
42 #[test]
43 fn round_trips() {
44 let data = FillAssistPolicyData {
45 rules_url: Some("https://example.com/rules".to_string()),
46 };
47 let json = serde_json::to_string(&data).unwrap();
48 assert_eq!(json, r#"{"rulesUrl":"https://example.com/rules"}"#);
49 assert_eq!(
50 serde_json::from_str::<FillAssistPolicyData>(&json).unwrap(),
51 data
52 );
53 }
54
55 #[test]
56 fn empty_serializes_to_empty_object() {
57 assert_eq!(
58 serde_json::to_string(&FillAssistPolicyData::default()).unwrap(),
59 "{}"
60 );
61 }
62}