#![allow(unused_imports)]
use super::apply_variants::*;
use super::commands::*;
use super::destroy::*;
use super::lint::*;
use super::observe::*;
use super::plan::*;
use super::validate_resources::*;
use crate::core::types;
use std::path::PathBuf;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_cov_validate_args_construct_all_fields() {
let args = ValidateArgs {
file: PathBuf::from("forjar.yaml"),
strict: true,
json: true,
dry_expand: true,
schema_version: Some("1.0".to_string()),
exhaustive: true,
deep: false,
policy_file: Some(PathBuf::from("policy.yaml")),
check_connectivity: true,
check_templates: true,
strict_deps: true,
check_secrets: true,
check_idempotency: true,
check_drift_coverage: true,
check_cycles_deep: true,
check_naming: true,
check_overlaps: true,
check_limits: true,
check_complexity: true,
check_security: true,
check_deprecation: true,
check_drift_risk: true,
check_compliance: Some("cis".to_string()),
check_portability: true,
check_resource_limits: true,
check_unused: true,
check_dependencies: true,
check_permissions: true,
check_idempotency_deep: true,
check_machine_reachability: true,
check_circular_refs: true,
check_naming_conventions: true,
check_owner_consistency: true,
check_path_conflicts: true,
check_service_deps: true,
check_template_vars: true,
check_mode_consistency: true,
check_group_consistency: true,
check_mount_points: true,
check_cron_syntax: true,
check_env_refs: true,
check_resource_names: Some("^[a-z-]+$".to_string()),
check_resource_count: Some(100),
check_duplicate_paths: true,
check_circular_deps: true,
check_machine_refs: true,
check_provider_consistency: true,
check_state_values: true,
check_unused_machines: true,
check_tag_consistency: true,
check_dependency_exists: true,
check_path_conflicts_strict: true,
check_duplicate_names: true,
check_resource_groups: true,
check_orphan_resources: true,
check_machine_arch: true,
check_resource_health_conflicts: true,
check_resource_overlap: true,
check_resource_tags: true,
check_resource_state_consistency: true,
check_resource_dependencies_complete: true,
check_machine_connectivity: true,
check_resource_naming_pattern: Some("^[a-z-]+$".to_string()),
check_resource_provider_support: true,
check_resource_secret_refs: true,
check_resource_idempotency_hints: true,
check_resource_dependency_depth: Some(10),
check_resource_machine_affinity: true,
check_resource_drift_risk: true,
check_resource_tag_coverage: true,
check_resource_lifecycle_hooks: true,
check_resource_provider_version: true,
check_resource_naming_convention: true,
check_resource_idempotency: true,
check_resource_documentation: true,
check_resource_ownership: true,
check_resource_secret_exposure: true,
check_resource_tag_standards: true,
check_resource_privilege_escalation: true,
check_resource_update_safety: true,
check_resource_cross_machine_consistency: true,
check_resource_version_pinning: true,
check_resource_dependency_completeness: true,
check_resource_state_coverage: true,
check_resource_rollback_safety: true,
check_resource_config_maturity: true,
check_resource_dependency_ordering: true,
check_resource_tag_completeness: true,
check_resource_naming_standards: true,
check_resource_dependency_symmetry: true,
check_resource_circular_alias: true,
check_resource_dependency_depth_limit: true,
check_resource_unused_params: true,
check_resource_machine_balance: true,
check_resource_content_hash_consistency: true,
check_resource_dependency_refs: true,
check_resource_trigger_refs: true,
check_resource_param_type_safety: true,
check_resource_env_consistency: true,
check_resource_secret_rotation: true,
check_resource_lifecycle_completeness: true,
check_resource_provider_compatibility: true,
check_resource_naming_convention_strict: true,
check_resource_idempotency_annotations: true,
check_resource_content_size_limit: true,
check_resource_dependency_fan_limit: true,
check_resource_gpu_backend_consistency: true,
check_resource_when_condition_syntax: true,
check_resource_lifecycle_hook_coverage: true,
check_resource_secret_rotation_age: true,
check_resource_dependency_chain_depth: true,
check_recipe_input_completeness: true,
check_resource_cross_machine_content_duplicates: true,
check_resource_machine_reference_validity: true,
check_resource_health_correlation: true,
check_dependency_optimization: true,
check_resource_consolidation_opportunities: true,
check_resource_compliance_tags: false,
check_resource_rollback_coverage: false,
check_resource_dependency_balance: false,
check_resource_secret_scope: false,
check_resource_deprecation_usage: false,
check_resource_when_condition_coverage: false,
check_resource_dependency_symmetry_deep: false,
check_resource_tag_namespace: false,
check_resource_machine_capacity: false,
check_resource_dependency_fan_out_limit: false,
check_resource_tag_required_keys: false,
check_resource_content_drift_risk: false,
check_resource_circular_dependency_depth: false,
check_resource_orphan_detection_deep: false,
check_resource_provider_diversity: false,
check_resource_dependency_isolation: false,
check_resource_tag_value_consistency: false,
check_resource_machine_distribution_balance: false,
check_resource_dependency_version_drift: false,
check_resource_naming_length_limit: false,
check_resource_type_coverage_per_machine: false,
check_resource_dependency_depth_variance: false,
check_resource_tag_key_naming: false,
check_resource_content_length_limit: false,
check_resource_dependency_completeness_audit: false,
check_resource_machine_coverage_gap: false,
check_resource_path_depth_limit: false,
check_resource_dependency_ordering_consistency: false,
check_resource_tag_value_format: false,
check_resource_provider_version_pinning: false,
check_recipe_purity: false,
check_reproducibility_score: false,
deny_unknown_fields: false,
};
let debug = format!("{args:?}");
assert!(debug.contains("ValidateArgs"));
assert!(debug.contains("strict: true"));
}
#[test]
fn test_cov_validate_args_defaults() {
let args = ValidateArgs {
file: PathBuf::from("forjar.yaml"),
strict: false,
json: false,
dry_expand: false,
schema_version: None,
exhaustive: false,
deep: false,
policy_file: None,
check_connectivity: false,
check_templates: false,
strict_deps: false,
check_secrets: false,
check_idempotency: false,
check_drift_coverage: false,
check_cycles_deep: false,
check_naming: false,
check_overlaps: false,
check_limits: false,
check_complexity: false,
check_security: false,
check_deprecation: false,
check_drift_risk: false,
check_compliance: None,
check_portability: false,
check_resource_limits: false,
check_unused: false,
check_dependencies: false,
check_permissions: false,
check_idempotency_deep: false,
check_machine_reachability: false,
check_circular_refs: false,
check_naming_conventions: false,
check_owner_consistency: false,
check_path_conflicts: false,
check_service_deps: false,
check_template_vars: false,
check_mode_consistency: false,
check_group_consistency: false,
check_mount_points: false,
check_cron_syntax: false,
check_env_refs: false,
check_resource_names: None,
check_resource_count: None,
check_duplicate_paths: false,
check_circular_deps: false,
check_machine_refs: false,
check_provider_consistency: false,
check_state_values: false,
check_unused_machines: false,
check_tag_consistency: false,
check_dependency_exists: false,
check_path_conflicts_strict: false,
check_duplicate_names: false,
check_resource_groups: false,
check_orphan_resources: false,
check_machine_arch: false,
check_resource_health_conflicts: false,
check_resource_overlap: false,
check_resource_tags: false,
check_resource_state_consistency: false,
check_resource_dependencies_complete: false,
check_machine_connectivity: false,
check_resource_naming_pattern: None,
check_resource_provider_support: false,
check_resource_secret_refs: false,
check_resource_idempotency_hints: false,
check_resource_dependency_depth: None,
check_resource_machine_affinity: false,
check_resource_drift_risk: false,
check_resource_tag_coverage: false,
check_resource_lifecycle_hooks: false,
check_resource_provider_version: false,
check_resource_naming_convention: false,
check_resource_idempotency: false,
check_resource_documentation: false,
check_resource_ownership: false,
check_resource_secret_exposure: false,
check_resource_tag_standards: false,
check_resource_privilege_escalation: false,
check_resource_update_safety: false,
check_resource_cross_machine_consistency: false,
check_resource_version_pinning: false,
check_resource_dependency_completeness: false,
check_resource_state_coverage: false,
check_resource_rollback_safety: false,
check_resource_config_maturity: false,
check_resource_dependency_ordering: false,
check_resource_tag_completeness: false,
check_resource_naming_standards: false,
check_resource_dependency_symmetry: false,
check_resource_circular_alias: false,
check_resource_dependency_depth_limit: false,
check_resource_unused_params: false,
check_resource_machine_balance: false,
check_resource_content_hash_consistency: false,
check_resource_dependency_refs: false,
check_resource_trigger_refs: false,
check_resource_param_type_safety: false,
check_resource_env_consistency: false,
check_resource_secret_rotation: false,
check_resource_lifecycle_completeness: false,
check_resource_provider_compatibility: false,
check_resource_naming_convention_strict: false,
check_resource_idempotency_annotations: false,
check_resource_content_size_limit: false,
check_resource_dependency_fan_limit: false,
check_resource_gpu_backend_consistency: false,
check_resource_when_condition_syntax: false,
check_resource_lifecycle_hook_coverage: false,
check_resource_secret_rotation_age: false,
check_resource_dependency_chain_depth: false,
check_recipe_input_completeness: false,
check_resource_cross_machine_content_duplicates: false,
check_resource_machine_reference_validity: false,
check_resource_health_correlation: false,
check_dependency_optimization: false,
check_resource_consolidation_opportunities: false,
check_resource_compliance_tags: false,
check_resource_rollback_coverage: false,
check_resource_dependency_balance: false,
check_resource_secret_scope: false,
check_resource_deprecation_usage: false,
check_resource_when_condition_coverage: false,
check_resource_dependency_symmetry_deep: false,
check_resource_tag_namespace: false,
check_resource_machine_capacity: false,
check_resource_dependency_fan_out_limit: false,
check_resource_tag_required_keys: false,
check_resource_content_drift_risk: false,
check_resource_circular_dependency_depth: false,
check_resource_orphan_detection_deep: false,
check_resource_provider_diversity: false,
check_resource_dependency_isolation: false,
check_resource_tag_value_consistency: false,
check_resource_machine_distribution_balance: false,
check_resource_dependency_version_drift: false,
check_resource_naming_length_limit: false,
check_resource_type_coverage_per_machine: false,
check_resource_dependency_depth_variance: false,
check_resource_tag_key_naming: false,
check_resource_content_length_limit: false,
check_resource_dependency_completeness_audit: false,
check_resource_machine_coverage_gap: false,
check_resource_path_depth_limit: false,
check_resource_dependency_ordering_consistency: false,
check_resource_tag_value_format: false,
check_resource_provider_version_pinning: false,
check_recipe_purity: false,
check_reproducibility_score: false,
deny_unknown_fields: false,
};
let debug = format!("{args:?}");
assert!(debug.contains("ValidateArgs"));
}
#[test]
fn test_cov_graph_args_construct_all_fields() {
let args = GraphArgs {
file: PathBuf::from("forjar.yaml"),
format: "dot".to_string(),
machine: Some("m1".to_string()),
group: Some("web".to_string()),
affected: Some("nginx".to_string()),
critical_path: true,
reverse: true,
depth: Some(3),
cluster: true,
orphans: true,
stats: true,
json_output: true,
highlight: Some("db".to_string()),
prune: Some("old".to_string()),
layers: true,
critical_resources: true,
weight: true,
subgraph: Some("api".to_string()),
impact_radius: Some("redis".to_string()),
dependency_matrix: true,
hotspots: true,
timeline_graph: true,
what_if: Some("cache".to_string()),
blast_radius: Some("dns".to_string()),
change_impact: Some("lb".to_string()),
resource_types: true,
topological_levels: true,
execution_order: true,
security_boundaries: true,
resource_age: true,
parallel_groups: true,
critical_chain: true,
dependency_depth: true,
orphan_detection: true,
cross_machine_deps: true,
machine_groups: true,
resource_clusters: true,
fan_out: true,
leaf_resources: true,
reverse_deps: true,
depth_first: true,
breadth_first: true,
subgraph_stats: true,
dependency_count: true,
root_resources: true,
edge_list: true,
connected_components: true,
adjacency_matrix: true,
longest_path: true,
in_degree: true,
out_degree: true,
density: true,
topological_sort: true,
critical_path_resources: true,
sink_resources: true,
bipartite_check: true,
strongly_connected: true,
dependency_matrix_csv: true,
resource_weight: true,
dependency_depth_per_resource: true,
resource_fanin: true,
isolated_subgraphs: true,
resource_dependency_chain: Some("web-server".to_string()),
bottleneck_resources: true,
critical_dependency_path: true,
resource_depth_histogram: true,
resource_coupling_score: true,
resource_change_frequency: true,
resource_impact_score: true,
resource_stability_score: true,
resource_dependency_fanout: true,
resource_dependency_weight: true,
resource_dependency_bottleneck: true,
resource_type_clustering: true,
resource_dependency_cycle_risk: true,
resource_impact_radius: true,
resource_dependency_health_map: true,
resource_change_propagation: true,
resource_dependency_depth_analysis: true,
resource_dependency_fan_analysis: true,
resource_dependency_isolation_score: true,
resource_dependency_stability_score: true,
resource_dependency_critical_path_length: true,
resource_dependency_redundancy_score: true,
resource_dependency_centrality_score: true,
resource_dependency_bridge_detection: true,
resource_dependency_cluster_coefficient: true,
resource_dependency_modularity_score: true,
resource_dependency_diameter: true,
resource_dependency_eccentricity: true,
resource_dependency_density: true,
resource_dependency_transitivity: true,
resource_dependency_fan_out: true,
resource_dependency_fan_in: true,
resource_dependency_path_count: true,
resource_dependency_articulation_points: true,
resource_dependency_longest_path: true,
resource_dependency_strongly_connected: true,
resource_dependency_topological_depth: true,
resource_dependency_weak_links: true,
resource_dependency_minimum_cut: true,
resource_dependency_dominator_tree: true,
resource_dependency_resilience_score: true,
resource_dependency_pagerank: true,
resource_dependency_betweenness_centrality: true,
resource_dependency_closure_size: true,
resource_dependency_eccentricity_map: true,
resource_dependency_diameter_path: true,
resource_dependency_bridge_criticality: true,
resource_dependency_conditional_subgraph: true,
resource_dependency_parallel_groups: true,
resource_dependency_execution_cost: true,
resource_recipe_expansion_map: true,
resource_dependency_critical_chain_path: true,
resource_apply_order_simulation: true,
resource_provenance_summary: true,
resource_dependency_risk_score: false,
resource_dependency_layering: false,
resource_lifecycle_stage_map: false,
resource_dependency_age_overlay: false,
resource_dependency_health_overlay: false,
resource_dependency_width_analysis: false,
resource_dependency_critical_path_highlight: false,
resource_dependency_bottleneck_detection: false,
resource_topology_cluster_analysis: false,
resource_dependency_island_detection: false,
resource_dependency_depth_histogram_analysis: false,
resource_dependency_redundancy_analysis: false,
resource_dependency_change_impact_radius: false,
resource_dependency_sibling_analysis: false,
resource_dependency_fan_in_hotspot: false,
resource_dependency_cross_machine_bridge: false,
resource_dependency_weight_analysis: false,
resource_dependency_topological_summary: false,
resource_dependency_critical_path: false,
resource_dependency_cluster_analysis: false,
};
let debug = format!("{args:?}");
assert!(debug.contains("GraphArgs"));
assert!(debug.contains("dot"));
}
}