use rand::RngCore;
use tempfile::tempdir;
use crate::error::Result;
use crate::key_provider::ForeignKeyProvider;
use crate::storage::EncryptedStore;
#[test]
fn foreign_provider_roundtrip() -> Result<()> {
let mut key_bytes = [0u8; 32];
rand::thread_rng().fill_bytes(&mut key_bytes);
let provider = ForeignKeyProvider::new(key_bytes);
let dir = tempdir().map_err(|e| crate::error::EnigmaStorageError::BackendError(e.to_string()))?;
let path = dir.path().join("db");
let path_str = path
.to_str()
.ok_or_else(|| crate::error::EnigmaStorageError::BackendError("invalid path".into()))?;
let store = EncryptedStore::open(path_str, "test", &provider)?;
store.put("alpha", b"one")?;
let fetched = store.get("alpha")?;
assert_eq!(fetched, Some(b"one".to_vec()));
assert_eq!(store.delete("alpha")?, true);
assert_eq!(store.get("alpha")?, None);
Ok(())
}