greentic-deploy-spec 0.1.27300454030

Greentic deployment object-model schemas (Environment, Revision, TrafficSplit, BundleDeployment, Credentials, PackConfig, RuntimeConfig)
Documentation
use greentic_deploy_spec::{RuntimeRef, RuntimeRefParseError, SecretRef, SecretRefParseError};

#[test]
fn secret_ref_accepts_valid_uri() {
    let r = SecretRef::try_new("secret://prod-eu/customer.support/telegram/bot_token").unwrap();
    assert_eq!(
        r.as_str(),
        "secret://prod-eu/customer.support/telegram/bot_token"
    );
}

#[test]
fn secret_ref_rejects_other_scheme() {
    let err = SecretRef::try_new("file:///etc/keys").unwrap_err();
    assert_eq!(err, SecretRefParseError::MissingScheme);
}

#[test]
fn secret_ref_rejects_empty_path() {
    let err = SecretRef::try_new("secret://").unwrap_err();
    assert_eq!(err, SecretRefParseError::EmptyPath);
}

#[test]
fn runtime_ref_accepts_valid_uri() {
    let r = RuntimeRef::try_new("runtime://prod-eu/discovered/alb_dns").unwrap();
    assert_eq!(r.as_str(), "runtime://prod-eu/discovered/alb_dns");
}

#[test]
fn runtime_ref_rejects_other_scheme() {
    let err = RuntimeRef::try_new("https://example.com").unwrap_err();
    assert_eq!(err, RuntimeRefParseError::MissingScheme);
}

#[test]
fn refs_round_trip_through_json() {
    let r = SecretRef::try_new("secret://local/env-packs/secrets/key").unwrap();
    let j = serde_json::to_string(&r).unwrap();
    let back: SecretRef = serde_json::from_str(&j).unwrap();
    assert_eq!(back, r);
}