diff options
Diffstat (limited to 'rust/tests')
| -rw-r--r-- | rust/tests/download_provider.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/rust/tests/download_provider.rs b/rust/tests/download_provider.rs new file mode 100644 index 00000000..f3b62263 --- /dev/null +++ b/rust/tests/download_provider.rs @@ -0,0 +1,34 @@ +use binaryninja::download_provider::{DownloadInstanceInputOutputCallbacks, DownloadProvider}; +use binaryninja::headless::Session; +use std::sync::mpsc; + +#[test] +fn test_download_provider() { + let _session = Session::new().expect("Failed to initialize session"); + let provider = DownloadProvider::try_default().expect("Couldn't get default download provider"); + let mut inst = provider + .create_instance() + .expect("Couldn't create download instance"); + let (tx, rx) = mpsc::channel(); + let write = move |data: &[u8]| -> usize { + tx.send(data.to_vec()).expect("Couldn't send data"); + data.len() + }; + let result = inst + .perform_custom_request( + "GET", + "http://httpbin.org/get", + vec![], + &DownloadInstanceInputOutputCallbacks { + read: None, + write: Some(Box::new(write)), + progress: None, + }, + ) + .expect("Couldn't perform custom request"); + assert_eq!(result.status_code, 200); + let written = rx.recv().expect("Couldn't receive data"); + let written_str = String::from_utf8(written).expect("Couldn't convert data to string"); + println!("{}", written_str); + assert!(written_str.contains("httpbin.org/get")); +} |
