diff --git a/crates/idfoto-core/src/item_types/secure_note.rs b/crates/idfoto-core/src/item_types/secure_note.rs index 271c222..20fe52d 100644 --- a/crates/idfoto-core/src/item_types/secure_note.rs +++ b/crates/idfoto-core/src/item_types/secure_note.rs @@ -1,3 +1,30 @@ +//! Secure note: just a multiline body, Zeroizing. + use serde::{Deserialize, Serialize}; +use zeroize::Zeroizing; + #[derive(Debug, Clone, Serialize, Deserialize, Default)] -pub struct SecureNoteCore {} +pub struct SecureNoteCore { + pub body: Zeroizing, +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn secure_note_round_trips() { + let note = SecureNoteCore { body: Zeroizing::new("a multi\nline note".into()) }; + let json = serde_json::to_string(¬e).unwrap(); + let parsed: SecureNoteCore = serde_json::from_str(&json).unwrap(); + assert_eq!(parsed.body.as_str(), "a multi\nline note"); + } + + #[test] + fn empty_body_round_trips() { + let note = SecureNoteCore::default(); + let json = serde_json::to_string(¬e).unwrap(); + let parsed: SecureNoteCore = serde_json::from_str(&json).unwrap(); + assert!(parsed.body.is_empty()); + } +}