use crate::*;
#[tokio::test]
async fn default_zwuevi_controller() {
Zwuevi::default().await.unwrap();
}
#[tokio::test]
async fn async_event_handlers() {
let mut zwuevi = Zwuevi::default().await.unwrap();
let (tx_1, rx_1) = std::sync::mpsc::channel();
let (tx_2, rx_2) = std::sync::mpsc::channel();
let handler_1 = zwuevi
.add_event_handler(AsyncEventKind::LogMessagesDebug, move |event| {
tx_1.send(event).unwrap();
})
.await
.unwrap();
tokio::time::sleep(std::time::Duration::from_millis(10)).await;
let handler_2 = zwuevi
.add_event_handler(AsyncEventKind::LogMessagesDebug, move |event| {
tx_2.send(event).unwrap();
})
.await
.unwrap();
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
let first = rx_2.recv().unwrap();
while first.ne(&rx_1.recv().unwrap()) {}
while let Ok(msg) = rx_1.try_recv() {
let dup = rx_2.recv().unwrap();
assert_eq!(msg, dup);
}
drop(handler_2);
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
assert!(rx_2.recv().is_err());
while let Ok(_msg) = rx_1.try_recv() {}
drop(handler_1);
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
assert!(rx_1.recv().is_err());
}
#[tokio::test]
async fn add_onion_v3() {
let mut zwuevi = Zwuevi::default().await.unwrap();
let _onion = zwuevi
.add_onion_v3(&Zwuevi::generate_key(), [(80, ("127.0.0.1", 3000))], None)
.await
.unwrap();
}
#[tokio::test]
async fn delete_onion_v3() {
let mut zwuevi = Zwuevi::default().await.unwrap();
let onion = zwuevi
.add_onion_v3(&Zwuevi::generate_key(), [(80, ("127.0.0.1", 3000))], None)
.await
.unwrap();
zwuevi.delete_onion(&onion).await.unwrap();
}
#[tokio::test]
async fn set_event_info_log() {
let (tx, mut rx) = tokio::sync::mpsc::channel(64);
let mut zwuevi = Zwuevi::default().await.unwrap();
let _handle = zwuevi
.add_event_handler(AsyncEventKind::LogMessagesInfo, move |event| {
event
.into_iter()
.for_each(|line| tx.try_send(line).unwrap());
})
.await;
let data = rx.recv().await.unwrap();
assert!(!data.is_empty());
}
#[tokio::test]
async fn set_event_debug_log() {
let (tx, mut rx) = tokio::sync::mpsc::channel(64);
let mut zwuevi = Zwuevi::default().await.unwrap();
let _handle = zwuevi
.add_event_handler(AsyncEventKind::LogMessagesDebug, move |event| {
event
.into_iter()
.for_each(|line| tx.try_send(line).unwrap());
})
.await;
let data = rx.recv().await.unwrap();
assert!(!data.is_empty());
}
#[tokio::test]
async fn get_info_version() {
let mut zwuevi = Zwuevi::default().await.unwrap();
let response = zwuevi.raw_command("GETINFO version").await.unwrap();
assert!(response.data.iter().any(|line| line.contains("version")));
}