This commit is contained in:
		
							parent
							
								
									affcc657c1
								
							
						
					
					
						commit
						a27c7c2310
					
				| @ -351,103 +351,6 @@ impl std::fmt::Display for Switch { | |||||||
| #[cfg(test)] | #[cfg(test)] | ||||||
| mod tests { | mod tests { | ||||||
|     use super::*; |     use super::*; | ||||||
|     use serde::{Deserialize, Serialize}; |  | ||||||
|     use std::sync::Arc; |  | ||||||
| 
 |  | ||||||
|     // Mock implementation of ManagementInterface
 |  | ||||||
|     #[derive(Debug, Clone, Serialize, Deserialize)] |  | ||||||
|     struct MockHPIlo { |  | ||||||
|         ip: String, |  | ||||||
|         username: String, |  | ||||||
|         password: String, |  | ||||||
|         firmware_version: String, |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     impl ManagementInterface for MockHPIlo { |  | ||||||
|         fn boot_to_pxe(&self) {} |  | ||||||
| 
 |  | ||||||
|         fn get_supported_protocol_names(&self) -> String { |  | ||||||
|             String::new() |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // Another mock implementation
 |  | ||||||
|     #[derive(Debug, Clone, Serialize, Deserialize)] |  | ||||||
|     struct MockDellIdrac { |  | ||||||
|         hostname: String, |  | ||||||
|         port: u16, |  | ||||||
|         api_token: String, |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     impl ManagementInterface for MockDellIdrac { |  | ||||||
|         fn boot_to_pxe(&self) {} |  | ||||||
| 
 |  | ||||||
|         fn get_supported_protocol_names(&self) -> String { |  | ||||||
|             String::new() |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     #[test] |  | ||||||
|     fn test_serialize_physical_host_with_hp_ilo() { |  | ||||||
|         // Create a PhysicalHost with HP iLO management
 |  | ||||||
|         let host = PhysicalHost { |  | ||||||
|             id: Id::empty(), |  | ||||||
|             category: HostCategory::Server, |  | ||||||
|             network: vec![NetworkInterface::dummy()], |  | ||||||
|             storage: vec![StorageDrive::dummy()], |  | ||||||
|             labels: vec![Label::new("datacenter".to_string(), "us-east".to_string())], |  | ||||||
|             memory_modules: vec![], |  | ||||||
|             cpus: vec![], |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         // Serialize to JSON
 |  | ||||||
|         let json = serde_json::to_string(&host).expect("Failed to serialize host"); |  | ||||||
| 
 |  | ||||||
|         // Check that the serialized JSON contains the HP iLO details
 |  | ||||||
|         assert!(json.contains("192.168.1.100")); |  | ||||||
|         assert!(json.contains("admin")); |  | ||||||
|         assert!(json.contains("password123")); |  | ||||||
|         assert!(json.contains("firmware_version")); |  | ||||||
|         assert!(json.contains("2.5.0")); |  | ||||||
| 
 |  | ||||||
|         // Parse back to verify structure (not the exact management interface)
 |  | ||||||
|         let parsed: serde_json::Value = serde_json::from_str(&json).expect("Failed to parse JSON"); |  | ||||||
| 
 |  | ||||||
|         // Verify basic structure
 |  | ||||||
|         assert_eq!(parsed["cpu_count"], 16); |  | ||||||
|         assert_eq!(parsed["memory_size"], 64_000_000); |  | ||||||
|         assert_eq!(parsed["network"][0]["name"], ""); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     #[test] |  | ||||||
|     fn test_serialize_physical_host_with_dell_idrac() { |  | ||||||
|         // Create a PhysicalHost with Dell iDRAC management
 |  | ||||||
|         let host = PhysicalHost { |  | ||||||
|             id: Id::empty(), |  | ||||||
|             category: HostCategory::Server, |  | ||||||
|             network: vec![NetworkInterface::dummy()], |  | ||||||
|             storage: vec![StorageDrive::dummy()], |  | ||||||
|             labels: vec![Label::new("env".to_string(), "production".to_string())], |  | ||||||
|             memory_modules: vec![], |  | ||||||
|             cpus: vec![], |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         // Serialize to JSON
 |  | ||||||
|         let json = serde_json::to_string(&host).expect("Failed to serialize host"); |  | ||||||
| 
 |  | ||||||
|         // Check that the serialized JSON contains the Dell iDRAC details
 |  | ||||||
|         assert!(json.contains("idrac-server01")); |  | ||||||
|         assert!(json.contains("443")); |  | ||||||
|         assert!(json.contains("abcdef123456")); |  | ||||||
| 
 |  | ||||||
|         // Parse back to verify structure
 |  | ||||||
|         let parsed: serde_json::Value = serde_json::from_str(&json).expect("Failed to parse JSON"); |  | ||||||
| 
 |  | ||||||
|         // Verify basic structure
 |  | ||||||
|         assert_eq!(parsed["cpu_count"], 32); |  | ||||||
|         assert_eq!(parsed["memory_size"], 128_000_000); |  | ||||||
|         assert_eq!(parsed["storage"][0]["path"], serde_json::Value::Null); |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     #[test] |     #[test] | ||||||
|     fn test_different_management_implementations_produce_valid_json() { |     fn test_different_management_implementations_produce_valid_json() { | ||||||
| @ -479,8 +382,5 @@ mod tests { | |||||||
|         // Both JSONs should be valid and parseable
 |         // Both JSONs should be valid and parseable
 | ||||||
|         let _: serde_json::Value = serde_json::from_str(&json1).expect("Invalid JSON for host1"); |         let _: serde_json::Value = serde_json::from_str(&json1).expect("Invalid JSON for host1"); | ||||||
|         let _: serde_json::Value = serde_json::from_str(&json2).expect("Invalid JSON for host2"); |         let _: serde_json::Value = serde_json::from_str(&json2).expect("Invalid JSON for host2"); | ||||||
| 
 |  | ||||||
|         // The JSONs should be different because they contain different management interfaces
 |  | ||||||
|         assert_ne!(json1, json2); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user