use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Secret {
pub key: String,
pub value: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
impl Secret {
pub fn new(key: impl Into<String>, value: impl Into<String>) -> Self {
Self {
key: key.into(),
value: value.into(),
description: None,
}
}
pub fn with_description(
key: impl Into<String>,
value: impl Into<String>,
description: impl Into<String>,
) -> Self {
Self {
key: key.into(),
value: value.into(),
description: Some(description.into()),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_secret_new() {
let s = Secret::new("API_KEY", "secret_value");
assert_eq!(s.key, "API_KEY");
assert_eq!(s.value, "secret_value");
}
}