bitwarden_policies/policies/
organization_data_ownership.rs1use serde::{Deserialize, Serialize};
2
3use crate::{PolicyDefinition, PolicyType, policy_type::PolicyDataType};
4
5pub struct OrganizationDataOwnershipPolicy;
7
8impl PolicyDefinition 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#[bitwarden_ffi::wasm_record]
29pub struct OrganizationDataOwnershipPolicyData {
30 #[serde(skip_serializing_if = "Option::is_none")]
32 pub enable_individual_items_transfer: Option<bool>,
33}
34
35#[cfg(test)]
36mod tests {
37 use super::*;
38
39 #[test]
40 fn round_trips() {
41 let data = OrganizationDataOwnershipPolicyData {
42 enable_individual_items_transfer: Some(true),
43 };
44 let json = serde_json::to_string(&data).unwrap();
45 assert_eq!(json, r#"{"enableIndividualItemsTransfer":true}"#);
46 assert_eq!(
47 serde_json::from_str::<OrganizationDataOwnershipPolicyData>(&json).unwrap(),
48 data
49 );
50 }
51
52 #[test]
53 fn empty_serializes_to_empty_object() {
54 assert_eq!(
55 serde_json::to_string(&OrganizationDataOwnershipPolicyData::default()).unwrap(),
56 "{}"
57 );
58 }
59}