From 4075371ae3e3b7f0f7d42be3b83dbd4bc83fdfb5 Mon Sep 17 00:00:00 2001 From: Rubens Brandao Date: Wed, 19 Jun 2024 09:40:05 -0300 Subject: Implement Rust SecretsProvider --- rust/tests/secrets_provider.rs | 44 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 rust/tests/secrets_provider.rs (limited to 'rust/tests') diff --git a/rust/tests/secrets_provider.rs b/rust/tests/secrets_provider.rs new file mode 100644 index 00000000..c7b87df1 --- /dev/null +++ b/rust/tests/secrets_provider.rs @@ -0,0 +1,44 @@ +use binaryninja::headless::Session; +use binaryninja::secrets_provider::{CoreSecretsProvider, SecretsProvider}; +use rstest::*; + +#[fixture] +fn session() -> Session { + Session::new().expect("Failed to initialize session") +} + +#[rstest] +fn list_secrets_provider(_session: Session) { + let providers = CoreSecretsProvider::all(); + for provider in &providers { + println!("{}", provider.name()); + } +} + +struct MySecretsProvider {} + +impl SecretsProvider for MySecretsProvider { + fn has_data(&mut self, key: &str) -> bool { + key == "my_key" + } + + fn get_data(&mut self, key: &str) -> String { + if key == "my_key" { "my_value" } else { "" }.to_string() + } + + fn store_data(&mut self, _key: &str, _data: &str) -> bool { + false + } + + fn delete_data(&mut self, _key: &str) -> bool { + false + } +} + +#[rstest] +fn custom_secrets_provider(_session: Session) { + let my_provider = CoreSecretsProvider::new("MySecretsProvider", MySecretsProvider {}); + assert!(my_provider.has_data("my_key")); + assert!(!my_provider.has_data("not_my_key")); + assert_eq!(my_provider.get_data("my_key").as_str(), "my_value"); +} -- cgit v1.3.1