use thiserror::Error;
#[derive(Debug, Error, PartialEq, Eq)]
pub enum IdentityReplaceDenied {
#[error(
"replacing an existing root identity requires an explicit confirmation; \
it is refused non-interactively so `init --force` cannot silently mint a new root (AUTHS-E5012)"
)]
ConfirmationRequired,
}
pub fn authorize_identity_replacement(confirmed: bool) -> Result<(), IdentityReplaceDenied> {
if confirmed {
Ok(())
} else {
Err(IdentityReplaceDenied::ConfirmationRequired)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn force_replace_refused_without_confirmation() {
assert_eq!(
authorize_identity_replacement(false),
Err(IdentityReplaceDenied::ConfirmationRequired),
);
}
#[test]
fn force_replace_allowed_when_confirmed() {
assert!(authorize_identity_replacement(true).is_ok());
}
}