refactor(tests): modularize

This commit is contained in:
2025-09-28 20:01:34 +03:00
parent e98542b23a
commit 92b2ce9d8f
4 changed files with 46 additions and 27 deletions

27
tests/common.rs Normal file
View File

@@ -0,0 +1,27 @@
use captra::{CapabilityManifest, HostState, add_wasm_linker_funcs, load_manifest};
use ed25519_dalek::SigningKey;
use rand::rngs::OsRng;
use wasmtime::{Engine, Linker, Store};
/// Load the example manifest bundled with the repo.
pub fn load_example_manifest() -> CapabilityManifest {
load_manifest("examples/manifest.json").expect("examples/manifest.json must exists")
}
/// Build a HostState with a fixed seed and a fresh SigningKey (OsRng).
pub fn make_host_with_seed(seed: u64) -> HostState {
let manifest = load_example_manifest();
let mut csprng = OsRng;
let keypair = SigningKey::generate(&mut csprng);
HostState::new(manifest, seed, keypair)
}
/// Create a wasmtime engine + linker with your host functions registered,
/// and a Store that owns the given HostState.
pub fn wasm_store_with_hosts(host: HostState) -> (Engine, Linker<HostState>, Store<HostState>) {
let engine = Engine::default();
let mut linker = Linker::new(&engine);
add_wasm_linker_funcs(&mut linker).expect("linker registration");
let store = Store::new(&engine, host);
(engine, linker, store)
}