bitwarden_policies/policies/
fill_assist.rs1use bitwarden_organizations::OrganizationUserType;
2use serde::{Deserialize, Serialize};
3
4use crate::{Policy, PolicyType, policy_type::PolicyDataType};
5
6pub struct FillAssistPolicy;
8
9impl Policy 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#[cfg_attr(
30 feature = "wasm",
31 derive(tsify::Tsify),
32 tsify(into_wasm_abi, from_wasm_abi)
33)]
34pub struct FillAssistPolicyData {
35 #[serde(skip_serializing_if = "Option::is_none")]
39 pub rules_url: Option<String>,
40}
41
42#[cfg(test)]
43mod tests {
44 use super::*;
45
46 #[test]
47 fn round_trips() {
48 let data = FillAssistPolicyData {
49 rules_url: Some("https://example.com/rules".to_string()),
50 };
51 let json = serde_json::to_string(&data).unwrap();
52 assert_eq!(json, r#"{"rulesUrl":"https://example.com/rules"}"#);
53 assert_eq!(
54 serde_json::from_str::<FillAssistPolicyData>(&json).unwrap(),
55 data
56 );
57 }
58
59 #[test]
60 fn empty_serializes_to_empty_object() {
61 assert_eq!(
62 serde_json::to_string(&FillAssistPolicyData::default()).unwrap(),
63 "{}"
64 );
65 }
66}