#[allow(deprecated)]
use product_os_command_control::Node;
use std::collections::BTreeMap;
mod test_helpers;
use test_helpers::{create_test_certificates, create_test_configuration};
#[test]
fn test_node_creation() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
assert!(!node.get_identifier().is_empty());
assert_eq!(node.try_get_protocol(), Some("https".to_string()));
assert_eq!(node.get_failures(), 0);
}
#[test]
fn test_node_deprecated_default_still_works() {
let config = create_test_configuration();
let certs = create_test_certificates();
#[allow(deprecated)]
let node = Node::default(&config, certs);
assert!(!node.get_identifier().is_empty());
}
#[test]
fn test_node_identifier_is_uuid() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
let identifier = node.get_identifier();
assert_eq!(identifier.len(), 36);
assert_eq!(identifier.matches('-').count(), 4);
}
#[test]
fn test_node_process_id() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
let pid = node.get_process_id();
assert!(pid > 0);
}
#[test]
fn test_node_certificate() {
let config = create_test_configuration();
let certs = create_test_certificates();
let cert_data = certs.certificates[0].clone();
let node = Node::new(&config, certs);
let node_cert = node.get_certificate();
assert_eq!(node_cert, cert_data);
}
#[test]
fn test_node_match_feature() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
let matched = node.match_node("feature", "test-feature");
assert!(!matched);
}
#[test]
fn test_node_match_capability_empty() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
let matched = node.match_node("capability", "test-capability");
assert!(!matched);
}
#[test]
fn test_node_match_query_empty() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
let query = BTreeMap::new();
let matched = node.match_node_query(&query);
assert!(matched);
}
#[test]
fn test_node_match_query_with_criteria() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
let mut query = BTreeMap::new();
query.insert("feature", "nonexistent");
let matched = node.match_node_query(&query);
assert!(!matched);
}
#[test]
fn test_node_match_unknown_selector_passes() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
let matched = node.match_node("unknown_selector", "any_value");
assert!(matched);
}
#[test]
fn test_node_timestamps() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
let created = node.get_created_at();
let updated = node.get_last_updated_at();
assert!(created <= updated);
}
#[test]
fn test_node_features_empty() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
let _features = node.get_features();
}
#[test]
fn test_node_services_empty() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
let services = node.get_services();
assert_eq!(services.list().len(), 0);
}
#[test]
fn test_node_try_get_address() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
let address = node.try_get_address();
assert!(address.is_some());
let uri = address.unwrap();
assert_eq!(uri.scheme().map(|s| s.as_str()), Some("https"));
assert_eq!(uri.host(), Some("localhost"));
}
#[test]
fn test_node_try_get_protocol() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
assert_eq!(node.try_get_protocol(), Some("https".to_string()));
}
#[test]
fn test_node_address_parsing_deprecated() {
let config = create_test_configuration();
let certs = create_test_certificates();
let node = Node::new(&config, certs);
#[allow(deprecated)]
let address = node.get_address();
assert_eq!(address.scheme().map(|s| s.as_str()), Some("https"));
assert_eq!(address.host(), Some("localhost"));
}