Feat: add vault module
This commit is contained in:
35
vault/tests/mock_store.rs
Normal file
35
vault/tests/mock_store.rs
Normal file
@@ -0,0 +1,35 @@
|
||||
//! In-memory mock key-value store for testing vault logic (native only)
|
||||
use kvstore::KVStore;
|
||||
use std::collections::HashMap;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
#[derive(Clone, Default)]
|
||||
pub struct MockStore {
|
||||
inner: Arc<Mutex<HashMap<String, Vec<u8>>>>,
|
||||
}
|
||||
|
||||
#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
|
||||
#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
|
||||
impl KVStore for MockStore {
|
||||
async fn get(&self, key: &str) -> Result<Option<Vec<u8>>, kvstore::KVError> {
|
||||
Ok(self.inner.lock().unwrap().get(key).cloned())
|
||||
}
|
||||
async fn set(&self, key: &str, value: &[u8]) -> Result<(), kvstore::KVError> {
|
||||
self.inner.lock().unwrap().insert(key.to_string(), value.to_vec());
|
||||
Ok(())
|
||||
}
|
||||
async fn remove(&self, key: &str) -> Result<(), kvstore::KVError> {
|
||||
self.inner.lock().unwrap().remove(key);
|
||||
Ok(())
|
||||
}
|
||||
async fn contains_key(&self, key: &str) -> Result<bool, kvstore::KVError> {
|
||||
Ok(self.inner.lock().unwrap().contains_key(key))
|
||||
}
|
||||
async fn keys(&self) -> Result<Vec<String>, kvstore::KVError> {
|
||||
Ok(self.inner.lock().unwrap().keys().cloned().collect())
|
||||
}
|
||||
async fn clear(&self) -> Result<(), kvstore::KVError> {
|
||||
self.inner.lock().unwrap().clear();
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user