#[derive(Debug, Clone, Default, PartialEq, Eq)]
pub enum TrustPolicy {
#[default]
Tofu,
Explicit,
}
impl TrustPolicy {
pub fn from_str_flag(s: &str) -> Result<Self, String> {
match s {
"tofu" => Ok(Self::Tofu),
"explicit" => Ok(Self::Explicit),
other => Err(format!(
"Unknown trust policy: '{}'. Valid values: tofu, explicit",
other
)),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_from_str_flag_tofu() {
assert_eq!(TrustPolicy::from_str_flag("tofu"), Ok(TrustPolicy::Tofu));
}
#[test]
fn test_from_str_flag_explicit() {
assert_eq!(
TrustPolicy::from_str_flag("explicit"),
Ok(TrustPolicy::Explicit)
);
}
#[test]
fn test_from_str_flag_invalid() {
let result = TrustPolicy::from_str_flag("invalid");
assert!(result.is_err());
assert!(result.unwrap_err().contains("Unknown trust policy"));
}
#[test]
fn test_default() {
assert_eq!(TrustPolicy::default(), TrustPolicy::Tofu);
}
}