use anyhow::{Context, Result};
use serial_test::serial;
use tokio::process::Command;
use wash_lib::cli::output::StartCommandOutput;
mod common;
use common::{TestWashInstance, ECHO_OCI_REF, PROVIDER_HTTPSERVER_OCI_REF};
#[tokio::test]
#[serial]
async fn integration_start_actor_serial() -> Result<()> {
let wash_instance = TestWashInstance::create().await?;
let output = Command::new(env!("CARGO_BIN_EXE_wash"))
.args([
"start",
"actor",
ECHO_OCI_REF,
"--output",
"json",
"--timeout-ms",
"40000",
"--ctl-port",
&wash_instance.nats_port.to_string(),
])
.kill_on_drop(true)
.output()
.await
.context("failed to start actor")?;
assert!(output.status.success(), "executed start");
let cmd_output: StartCommandOutput =
serde_json::from_slice(&output.stdout).context("failed to parse output")?;
assert!(cmd_output.success, "command returned success");
Ok(())
}
#[tokio::test]
#[serial]
async fn integration_start_provider_serial() -> Result<()> {
let wash_instance = TestWashInstance::create().await?;
let output = Command::new(env!("CARGO_BIN_EXE_wash"))
.args([
"start",
"provider",
PROVIDER_HTTPSERVER_OCI_REF,
"--output",
"json",
"--timeout-ms",
"40000",
"--ctl-port",
&wash_instance.nats_port.to_string(),
])
.kill_on_drop(true)
.output()
.await
.context("failed to start provider")?;
assert!(output.status.success(), "executed start");
let cmd_output: StartCommandOutput =
serde_json::from_slice(&output.stdout).context("failed to parse output")?;
assert!(cmd_output.success, "command returned success");
Ok(())
}