scmanager_windows_rs/
test.rs1#[cfg(test)]
2#[cfg(feature = "tests")]
3mod tests {
4 use crate::{
5 service::{ServiceStartType, ServiceState, ServiceType},
6 service_manager::{ServiceConfig, ServiceManager},
7 };
8
9 use anyhow::Result;
10
11 #[test]
12 fn test_all() -> Result<()> {
13 println!("Test Begin!");
14 let service_manager = ServiceManager::new()?;
15
16 let service_name = "test";
17 let service_path = r"C:\Windows\system32\test.sys";
18
19 let service_handle = service_manager.create_or_get(ServiceConfig {
20 service_name: service_name.to_string(),
21 display_name: service_name.to_string(),
22 binary_path: "invalid path test".to_string(),
23 start_type: ServiceStartType::DemandStart,
24 service_type: ServiceType::KernelDriver,
25 ..Default::default()
26 })?;
27
28 assert_eq!(
29 service_handle.get_start_type()?,
30 ServiceStartType::DemandStart
31 );
32
33 service_handle.update_config(ServiceConfig {
34 display_name: service_name.to_string(),
35 binary_path: service_path.to_string(),
36 service_type: ServiceType::KernelDriver,
37 ..Default::default()
38 })?;
39 service_handle.start_blocking()?;
40
41 assert_eq!(service_handle.state()?, ServiceState::Running);
42
43 service_handle.stop_blocking()?;
44
45 assert_eq!(service_handle.state()?, ServiceState::Stopped);
46
47 std::thread::sleep(std::time::Duration::from_secs(2));
48
49 service_handle.delete()?;
50
51 println!("Test End!");
52
53 Ok(())
54 }
55}