mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
Expose wasm engine clone and add prepare API
Agent-Logs-Url: https://github.com/microsoft/regorus/sessions/58419b20-1586-4a23-85fb-5aed5f5d5961 Co-authored-by: anakrish <35780660+anakrish@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
839933c933
commit
72515f6d4c
@@ -102,6 +102,46 @@ fn extension_with_state() -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn prepare_then_clone_without_initial_eval() -> Result<()> {
|
||||
let mut engine = Engine::new();
|
||||
engine.add_policy(
|
||||
"test.rego".to_string(),
|
||||
r#"package test
|
||||
import rego.v1
|
||||
|
||||
default allow := false
|
||||
|
||||
allow if {
|
||||
input.user in data.allowed_users
|
||||
}
|
||||
"#
|
||||
.to_string(),
|
||||
)?;
|
||||
engine.add_data(Value::from_json_str(
|
||||
r#"{"allowed_users":["alice","bob"]}"#,
|
||||
)?)?;
|
||||
|
||||
// Prepare once and clone without running an initial evaluation.
|
||||
engine.prepare()?;
|
||||
|
||||
let mut alice_engine = engine.clone();
|
||||
alice_engine.set_input_json(r#"{"user":"alice"}"#)?;
|
||||
assert_eq!(
|
||||
alice_engine.eval_rule("data.test.allow".to_string())?,
|
||||
Value::from(true)
|
||||
);
|
||||
|
||||
let mut mallory_engine = engine.clone();
|
||||
mallory_engine.set_input_json(r#"{"user":"mallory"}"#)?;
|
||||
assert_eq!(
|
||||
mallory_engine.eval_rule("data.test.allow".to_string())?,
|
||||
Value::from(false)
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(feature = "azure_policy")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "azure_policy")))]
|
||||
|
||||
Reference in New Issue
Block a user