Skip to main content

double_o/
api_key.rs

1//! API key presence check for `oo learn`.
2
3/// Return the key only when it has non-whitespace content; trimmed.
4///
5/// An empty or whitespace-only value is treated as unset so `oo` never sends
6/// an empty credential and gets a 401 instead of the missing-key error.
7pub fn non_empty_key(raw: Option<String>) -> Option<String> {
8    raw.map(|v| v.trim().to_string()).filter(|v| !v.is_empty())
9}
10
11#[cfg(test)]
12mod tests {
13    use super::non_empty_key;
14
15    #[test]
16    fn unset_key_is_none() {
17        assert_eq!(non_empty_key(None), None);
18    }
19
20    #[test]
21    fn empty_and_whitespace_keys_are_none() {
22        assert_eq!(non_empty_key(Some(String::new())), None);
23        assert_eq!(non_empty_key(Some("  \t ".to_string())), None);
24    }
25
26    #[test]
27    fn surrounding_whitespace_is_trimmed() {
28        assert_eq!(
29            non_empty_key(Some("  sk-ant-123\n".to_string())),
30            Some("sk-ant-123".to_string())
31        );
32    }
33}