const INVALID_BUCKET_NAMESPACE: &str =
"invalid bucket-namespace. valid choices: account-regional .";
pub fn parse_bucket_namespace(value: &str) -> Result<String, String> {
match value {
"account-regional" => Ok(value.to_string()),
_ => Err(INVALID_BUCKET_NAMESPACE.to_string()),
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn accepts_account_regional() {
assert_eq!(
parse_bucket_namespace("account-regional").unwrap(),
"account-regional"
);
}
#[test]
fn rejects_global() {
let err = parse_bucket_namespace("global").unwrap_err();
assert!(err.contains("invalid bucket-namespace"));
}
#[test]
fn rejects_every_non_account_regional_value() {
for value in [
"",
" ",
"Account-Regional", "account_regional", "account-regional ", " account-regional", "account-regionally", "regional", "ACCOUNT-REGIONAL", ] {
assert!(
parse_bucket_namespace(value).is_err(),
"expected {value:?} to be rejected"
);
}
}
}