bitwarden_policies/policies/
organization_data_ownership.rs1use serde::{Deserialize, Serialize};
2
3use crate::{Policy, PolicyType, policy_type::PolicyDataType};
4
5pub struct OrganizationDataOwnershipPolicy;
7
8impl Policy for OrganizationDataOwnershipPolicy {
9 type Data = OrganizationDataOwnershipPolicyData;
10
11 fn policy_type(&self) -> PolicyType {
12 PolicyType::OrganizationDataOwnership
13 }
14
15 fn to_erased(&self, data: Self::Data) -> PolicyDataType {
16 PolicyDataType::OrganizationDataOwnership(data)
17 }
18}
19
20#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
26#[serde(rename_all = "camelCase")]
27#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
28#[cfg_attr(
29 feature = "wasm",
30 derive(tsify::Tsify),
31 tsify(into_wasm_abi, from_wasm_abi)
32)]
33pub struct OrganizationDataOwnershipPolicyData {
34 #[serde(skip_serializing_if = "Option::is_none")]
36 pub enable_individual_items_transfer: Option<bool>,
37}
38
39#[cfg(test)]
40mod tests {
41 use super::*;
42
43 #[test]
44 fn round_trips() {
45 let data = OrganizationDataOwnershipPolicyData {
46 enable_individual_items_transfer: Some(true),
47 };
48 let json = serde_json::to_string(&data).unwrap();
49 assert_eq!(json, r#"{"enableIndividualItemsTransfer":true}"#);
50 assert_eq!(
51 serde_json::from_str::<OrganizationDataOwnershipPolicyData>(&json).unwrap(),
52 data
53 );
54 }
55
56 #[test]
57 fn empty_serializes_to_empty_object() {
58 assert_eq!(
59 serde_json::to_string(&OrganizationDataOwnershipPolicyData::default()).unwrap(),
60 "{}"
61 );
62 }
63}