mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-21 22:18:13 +02:00
Lot 6 : clients Rust du chiffrement et de l'exécution des outils
Sceller / ouvrir un blob par le Go (mémoire verrouillée : erreur dédiée, rien d'écrit en clair) et faire exécuter un appel d'outil par sa boucle — les deux ponts dont la conversation Rust aura besoin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c38b1ac43e
commit
461ef8030d
3 files changed
+121
No files matched your search
@@ -0,0 +1,45 @@
|
||||
//! Lot 6 : clients Rust des API internes du chat (chiffrement, outils).
|
||||
|
||||
mod common;
|
||||
|
||||
use common::fakego;
|
||||
use loki_rs::store::{CryptError, Store};
|
||||
|
||||
async fn store() -> (
|
||||
Store,
|
||||
std::sync::Arc<fakego::FakeGo>,
|
||||
tokio::sync::oneshot::Sender<()>,
|
||||
tempfile::TempDir,
|
||||
) {
|
||||
let t = tempfile::tempdir().unwrap();
|
||||
let (_f, go, stop) = fakego::start(t.path().into()).await;
|
||||
let backend = go.backend.lock().unwrap().unwrap();
|
||||
(Store::new(backend, fakego::JETON.into()), go, stop, t)
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn sceller_ouvrir_et_verrou() {
|
||||
let (st, go, _stop, _t) = store().await;
|
||||
let sealed = st.seal(b"bonjour".to_vec()).await.unwrap();
|
||||
assert_eq!(sealed, b"SCELLE:bonjour");
|
||||
assert_eq!(st.open(sealed).await.unwrap(), b"bonjour");
|
||||
*go.locked.lock().unwrap() = true;
|
||||
assert_eq!(st.seal(b"x".to_vec()).await, Err(CryptError::Locked));
|
||||
assert_eq!(st.open(b"x".to_vec()).await, Err(CryptError::Locked));
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn outil_execute_par_le_go() {
|
||||
let (st, _go, _stop, _t) = store().await;
|
||||
let v = st
|
||||
.tool_exec(
|
||||
"bash",
|
||||
&serde_json::json!({ "command": "ls" }),
|
||||
&serde_json::json!({ "Agent": true }),
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
assert_eq!(v["result"], "exec:bash");
|
||||
assert_eq!(v["label"], "ls");
|
||||
assert_eq!(v["caps_agent"], true);
|
||||
}
|
||||
Reference in new issue
Block a user