helm-schema-k8s 0.0.4

Generate an accurate JSON schema for any helm chart
Documentation
use super::*;
use test_util::prelude::sim_assert_eq;

fn probe(api: &str) -> Option<ResourceRef> {
    let query = ApiPresenceQuery::parse_helm_literal(api)?;
    build_capability_probe(&query)
}

#[test]
fn group_version_probe_uses_canonical_kind_table() {
    let probe = probe("policy/v1").expect("policy/v1 should have a canonical probe");

    sim_assert_eq!(have: probe.api_version, want: "policy/v1");
    sim_assert_eq!(have: probe.kind, want: "PodDisruptionBudget");
}

#[test]
fn core_version_probe_uses_canonical_kind_table() {
    let probe = probe("v1").expect("core v1 should have a canonical probe");

    sim_assert_eq!(have: probe.api_version, want: "v1");
    sim_assert_eq!(have: probe.kind, want: "ConfigMap");
}

#[test]
fn resource_qualified_probe_bypasses_canonical_kind_table() {
    let probe = probe("policy/v1/PodSecurityPolicy").expect("resource probe should be direct");

    sim_assert_eq!(have: probe.api_version, want: "policy/v1");
    sim_assert_eq!(have: probe.kind, want: "PodSecurityPolicy");
}

#[test]
fn core_resource_qualified_probe_bypasses_canonical_kind_table() {
    let probe = probe("v1/Secret").expect("core resource probe should be direct");

    sim_assert_eq!(have: probe.api_version, want: "v1");
    sim_assert_eq!(have: probe.kind, want: "Secret");
}

#[test]
fn unknown_group_version_probe_abstains() {
    assert!(probe("example.com/v1").is_none());
}

#[test]
fn malformed_resource_qualified_probe_abstains() {
    assert!(probe("policy/v1/").is_none());
    assert!(probe("v1/").is_none());
}