use assert_cmd::cargo::cargo_bin_cmd;
use predicates::prelude::*;
#[test]
fn approve_requires_source() {
cargo_bin_cmd!("tvc")
.arg("deploy")
.arg("approve")
.arg("--dry-run")
.arg("--dangerous-skip-interactive")
.assert()
.failure()
.stderr(predicate::str::contains("manifest source is required"));
}
#[test]
fn dangerous_approve_with_file() {
cargo_bin_cmd!("tvc")
.arg("deploy")
.arg("approve")
.arg("--manifest")
.arg("fixtures/manifest.json")
.arg("--operator-seed")
.arg("fixtures/seed.hex")
.arg("--dangerous-skip-interactive")
.arg("--skip-post")
.assert()
.success()
.stdout(predicate::str::contains("Manifest approval quorum reached").not());
}
#[test]
fn manifest_and_deploy_id_are_mutually_exclusive() {
cargo_bin_cmd!("tvc")
.arg("deploy")
.arg("approve")
.arg("--manifest")
.arg("fixtures/manifest.json")
.arg("--deploy-id")
.arg("some-deploy-id")
.arg("--dangerous-skip-interactive")
.assert()
.failure()
.stderr(predicate::str::contains(
"the argument '--manifest <PATH>' cannot be used with '--deploy-id <DEPLOY_ID>'",
));
}
#[test]
fn approve_requires_manifest_id_or_skip_post() {
cargo_bin_cmd!("tvc")
.arg("deploy")
.arg("approve")
.arg("--manifest")
.arg("fixtures/manifest.json")
.arg("--operator-seed")
.arg("fixtures/seed.hex")
.arg("--dangerous-skip-interactive")
.assert()
.failure()
.stderr(predicate::str::contains(
"--manifest-id is required to post approval to API",
));
}