use envseal::keychain::MasterKey;
use envseal::vault::Vault;
use std::sync::Arc;
#[test]
fn parallel_store() {
let dir = crate::common::vault_tempdir();
let key = MasterKey::from_test_bytes([0x42; 32]);
let vault = Arc::new(Vault::open_with_key(dir.path(), key).unwrap());
let mut handles = Vec::new();
for i in 0..20 {
let v = Arc::clone(&vault);
handles.push(std::thread::spawn(move || {
let name = format!("secret-{i}");
let value = format!("value-{i}");
v.store(&name, value.as_bytes(), false).unwrap();
}));
}
for h in handles {
h.join().unwrap();
}
for i in 0..20 {
let name = format!("secret-{i}");
let expected = format!("value-{i}");
let decrypted = vault.decrypt(&name).unwrap();
assert_eq!(&decrypted[..], expected.as_bytes());
}
}