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