prvng_platform/orchestrator/tests/test_extension_loading.rs
2025-10-07 10:59:52 +01:00

73 lines
2.2 KiB
Rust

//! Extension Loading Tests
use provisioning_orchestrator::extensions::{ExtensionManager, ExtensionType, ExtensionMetadata};
#[tokio::test]
async fn test_extension_manager_initialization() {
let manager = ExtensionManager::new(
"/usr/local/bin/nu".to_string(),
"/usr/local/bin/provisioning".to_string(),
);
let loaded = manager.list_loaded_extensions().await;
assert_eq!(loaded.len(), 0);
}
#[tokio::test]
async fn test_extension_type_display() {
assert_eq!(ExtensionType::Provider.to_string(), "provider");
assert_eq!(ExtensionType::Taskserv.to_string(), "taskserv");
assert_eq!(ExtensionType::Cluster.to_string(), "cluster");
}
#[tokio::test]
async fn test_extension_cache_clear() {
let manager = ExtensionManager::new(
"/usr/local/bin/nu".to_string(),
"/usr/local/bin/provisioning".to_string(),
);
// Clear empty cache should succeed
manager.clear_cache().await;
let loaded = manager.list_loaded_extensions().await;
assert_eq!(loaded.len(), 0);
}
#[tokio::test]
async fn test_extension_metadata_creation() {
let metadata = ExtensionMetadata {
name: "kubernetes".to_string(),
version: "1.28.0".to_string(),
description: "Kubernetes container orchestrator".to_string(),
extension_type: ExtensionType::Taskserv,
dependencies: vec!["containerd".to_string(), "etcd".to_string()],
author: Some("provisioning-team".to_string()),
repository: None,
};
assert_eq!(metadata.name, "kubernetes");
assert_eq!(metadata.version, "1.28.0");
assert_eq!(metadata.extension_type, ExtensionType::Taskserv);
assert_eq!(metadata.dependencies.len(), 2);
}
#[tokio::test]
async fn test_is_extension_loaded() {
let manager = ExtensionManager::new(
"/usr/local/bin/nu".to_string(),
"/usr/local/bin/provisioning".to_string(),
);
// Nothing loaded initially
let is_loaded = manager.is_extension_loaded(ExtensionType::Taskserv, "kubernetes").await;
assert!(!is_loaded);
}
#[test]
fn test_extension_type_equality() {
assert_eq!(ExtensionType::Provider, ExtensionType::Provider);
assert_ne!(ExtensionType::Provider, ExtensionType::Taskserv);
assert_ne!(ExtensionType::Taskserv, ExtensionType::Cluster);
}