use assert_cmd::cargo::cargo_bin_cmd;
use predicates::prelude::*;
#[test]
fn deploy_create_help_documents_config_and_override_precedence() {
cargo_bin_cmd!("tvc")
.arg("deploy")
.arg("create")
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains(
"Use --config-file, flags, env vars, or a mix of them.",
))
.stdout(predicate::str::contains(
"override env vars; env vars override config file values.",
))
.stdout(predicate::str::contains(
"--pivot-args replaces the config file's list entirely",
))
.stdout(predicate::str::contains(
"Use --non-interactive or set TVC_NON_INTERACTIVE=true",
));
}
#[test]
fn deploy_create_help_documents_env_only_usage() {
cargo_bin_cmd!("tvc")
.arg("deploy")
.arg("create")
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("TVC_ORG_ID=..."))
.stdout(predicate::str::contains("TVC_API_KEY_PUBLIC=..."))
.stdout(predicate::str::contains("TVC_API_KEY_PRIVATE=..."))
.stdout(predicate::str::contains("TVC_EXPECTED_PIVOT_DIGEST=..."))
.stdout(predicate::str::contains("# OR"))
.stdout(predicate::str::contains("tvc deploy create"));
}
#[test]
fn deploy_create_help_explains_deployment_ports() {
cargo_bin_cmd!("tvc")
.arg("deploy")
.arg("create")
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("Port guidance:"))
.stdout(predicate::str::contains(
"publicIngressPort is the port inside your container",
))
.stdout(predicate::str::contains(
"healthCheckPort is the port TVC probes",
))
.stdout(predicate::str::contains("Use the same port for both"));
}
#[test]
fn deploy_create_help_leaves_auth_details_to_global_docs() {
cargo_bin_cmd!("tvc")
.arg("deploy")
.arg("create")
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("Authentication:").not());
}
#[test]
fn top_level_help_documents_auth_precedence() {
cargo_bin_cmd!("tvc")
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("Authentication:"))
.stdout(predicate::str::contains("Env vars take precedence over"))
.stdout(predicate::str::contains("TVC_ORG_ID"))
.stdout(predicate::str::contains("TVC_API_KEY_PUBLIC"))
.stdout(predicate::str::contains("TVC_API_KEY_PRIVATE"));
}
#[test]
fn top_level_help_documents_non_interactive_flag() {
cargo_bin_cmd!("tvc")
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("--non-interactive"))
.stdout(predicate::str::contains("TVC_NON_INTERACTIVE"));
}
#[test]
fn deploy_create_help_documents_non_interactive_global_flag() {
cargo_bin_cmd!("tvc")
.arg("deploy")
.arg("create")
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("--non-interactive"))
.stdout(predicate::str::contains("TVC_NON_INTERACTIVE"));
}