use super::serde_helpers::nullable_rfc3339;
use crate::{Deserialize, Serialize};
use time::OffsetDateTime;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Secret {
pub name: String,
#[serde(default)]
pub data: String,
#[serde(default)]
pub description: String,
#[serde(
default,
with = "nullable_rfc3339",
skip_serializing_if = "Option::is_none"
)]
pub created: Option<OffsetDateTime>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_secret_round_trip() {
let original = Secret {
name: "MY_SECRET".to_string(),
data: "supersecretvalue".to_string(),
description: "A secret value".to_string(),
created: Some(OffsetDateTime::new_utc(
time::Date::from_calendar_date(2024, time::Month::January, 15).unwrap(),
time::Time::from_hms(10, 0, 0).unwrap(),
)),
};
let json = serde_json::to_string(&original).unwrap();
let restored: Secret = serde_json::from_str(&json).unwrap();
assert_eq!(restored.name, original.name);
assert_eq!(restored.data, original.data);
}
}