scmanager_windows_rs/
test.rs

1#[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}