repo_description: Fast, small, and fully autonomous AI personal assistant infrastructure, ANY OS, ANY PLATFORM — deploy anywhere, swap anything 🦀
repo_topics: agent agentic ai infra ml openclaw os zeroclaw
code: #[allow(unused_imports)]
  pub use zeroclaw_runtime::security::*;
  
  #[cfg(test)]
  mod tests {
      use super::*;
  
      #[test]
      fn reexported_policy_and_pairing_types_are_usable() {
          let policy = SecurityPolicy::default();
          assert_eq!(policy.autonomy, AutonomyLevel::Supervised);
  
          let guard = PairingGuard::new(false, &[]);
          assert!(!guard.require_pairing());
      }
  
      #[test]
      fn reexported_secret_store_encrypt_decrypt_roundtrip() {
          let temp = tempfile::tempdir().unwrap();
          let store = SecretStore::new(temp.path(), false);
  
          let encrypted = store.encrypt("top-secret").unwrap();
          let decrypted = store.decrypt(&encrypted).unwrap();
  
          assert_eq!(decrypted, "top-secret");
      }
  
      #[test]
      fn redact_hides_most_of_value() {
          assert_eq!(redact("abcdefgh"), "abcd***");
          assert_eq!(redact("ab"), "***");
          assert_eq!(redact(""), "***");
          assert_eq!(redact("12345"), "1234***");
      }
  
      #[test]
      fn redact_handles_multibyte_utf8_without_panic() {
          // CJK characters are 3 bytes each; slicing at byte 4 would panic
          // without char-boundary-safe handling.
          let result = redact("密码是很长的秘密");
          assert!(result.ends_with("***"));
          assert!(result.is_char_boundary(result.len()));
      }
  }
  