diff options
| author | Rubens Brandao <git@rubens.io> | 2024-06-19 09:40:05 -0300 |
|---|---|---|
| committer | Mason Reed <mason@vector35.com> | 2025-02-06 22:52:47 -0500 |
| commit | 4075371ae3e3b7f0f7d42be3b83dbd4bc83fdfb5 (patch) | |
| tree | 9a77a3f2aaf3309a7095abce346dac66f2b4e1c9 /rust/tests | |
| parent | a370cf02b39ce6f25e428d70e1aff89a9889bb6a (diff) | |
Implement Rust SecretsProvider
Diffstat (limited to 'rust/tests')
| -rw-r--r-- | rust/tests/secrets_provider.rs | 44 |
1 files changed, 44 insertions, 0 deletions
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"); +} |
