summaryrefslogtreecommitdiff
path: root/rust/tests
diff options
context:
space:
mode:
authorRubens Brandao <git@rubens.io>2024-06-19 09:40:05 -0300
committerMason Reed <mason@vector35.com>2025-02-06 22:52:47 -0500
commit4075371ae3e3b7f0f7d42be3b83dbd4bc83fdfb5 (patch)
tree9a77a3f2aaf3309a7095abce346dac66f2b4e1c9 /rust/tests
parenta370cf02b39ce6f25e428d70e1aff89a9889bb6a (diff)
Implement Rust SecretsProvider
Diffstat (limited to 'rust/tests')
-rw-r--r--rust/tests/secrets_provider.rs44
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");
+}