#[cfg(any(
all(windows, feature = "provider-windows-dpapi"),
all(target_os = "macos", feature = "provider-macos-keychain"),
all(target_os = "linux", feature = "provider-linux-secret-service")
))]
use std::env;
#[cfg(any(
all(windows, feature = "provider-windows-dpapi"),
all(target_os = "macos", feature = "provider-macos-keychain"),
all(target_os = "linux", feature = "provider-linux-secret-service")
))]
use crate::error::{EnigmaStorageError, Result};
#[cfg(all(windows, feature = "provider-windows-dpapi"))]
use crate::key_provider::WindowsDpapiKeyProvider;
#[cfg(all(target_os = "macos", feature = "provider-macos-keychain"))]
use crate::key_provider::MacosKeychainKeyProvider;
#[cfg(all(target_os = "linux", feature = "provider-linux-secret-service"))]
use crate::key_provider::LinuxSecretServiceKeyProvider;
#[cfg(any(all(windows, feature = "provider-windows-dpapi"), all(target_os = "macos", feature = "provider-macos-keychain"), all(target_os = "linux", feature = "provider-linux-secret-service")))]
use tempfile::tempdir;
#[cfg(all(windows, feature = "provider-windows-dpapi"))]
#[test]
fn windows_dpapi_provider_smoke() -> Result<()> {
if env::var("RUN_PLATFORM_TESTS").unwrap_or_default() != "1" {
return Ok(());
}
let dir = tempdir().map_err(|e| EnigmaStorageError::BackendError(e.to_string()))?;
let provider = WindowsDpapiKeyProvider::new(dir.path());
let key1 = provider.get_or_create_master_key()?;
let key2 = provider.get_master_key()?;
assert_eq!(key1.as_bytes(), key2.as_bytes());
Ok(())
}
#[cfg(all(target_os = "macos", feature = "provider-macos-keychain"))]
#[test]
fn macos_keychain_provider_smoke() -> Result<()> {
if env::var("RUN_PLATFORM_TESTS").unwrap_or_default() != "1" {
return Ok(());
}
let dir = tempdir().map_err(|e| EnigmaStorageError::BackendError(e.to_string()))?;
let provider = MacosKeychainKeyProvider::new(dir.path(), "platform");
let key1 = provider.get_or_create_master_key()?;
let key2 = provider.get_master_key()?;
assert_eq!(key1.as_bytes(), key2.as_bytes());
Ok(())
}
#[cfg(all(target_os = "linux", feature = "provider-linux-secret-service"))]
#[test]
fn linux_secret_service_provider_smoke() -> Result<()> {
if env::var("RUN_PLATFORM_TESTS").unwrap_or_default() != "1" {
return Ok(());
}
let dir = tempdir().map_err(|e| EnigmaStorageError::BackendError(e.to_string()))?;
let provider = LinuxSecretServiceKeyProvider::new(dir.path(), "platform");
let key1 = provider.get_or_create_master_key()?;
let key2 = provider.get_master_key()?;
assert_eq!(key1.as_bytes(), key2.as_bytes());
Ok(())
}