use predicates::prelude::PredicateBooleanExt;
use predicates::str::contains;
mod common;
use common::fez_fake;
#[test]
fn list_json_hides_unmanaged_veth() {
fez_fake()
.args(["network", "list", "--json"])
.assert()
.success()
.stdout(contains("\"kind\":\"NetworkDeviceList\""))
.stdout(contains("enp1s0"))
.stdout(contains("enp2s0"))
.stdout(contains("lo"))
.stdout(contains("veth0").not());
}
#[test]
fn list_all_includes_veth() {
fez_fake()
.args(["network", "list", "--all", "--json"])
.assert()
.success()
.stdout(contains("veth0"));
}
#[test]
fn list_human_decodes_enums() {
fez_fake()
.args(["network", "list"])
.assert()
.success()
.stdout(contains("ethernet"))
.stdout(contains("activated"))
.stdout(contains("loopback"));
}
#[test]
fn show_json_resolves_full_detail() {
fez_fake()
.args(["network", "show", "enp1s0", "--json"])
.assert()
.success()
.stdout(contains("\"kind\":\"NetworkDeviceDetail\""))
.stdout(contains("192.168.10.20"))
.stdout(contains("192.168.10.1"))
.stdout(contains("52:54:00:12:34:56"))
.stdout(contains("802-3-ethernet"))
.stdout(contains("fd00::20"))
.stdout(contains("\"routers\":\"192.168.10.1\""));
}
#[test]
fn show_device_without_ip_config_does_not_panic() {
fez_fake()
.args(["network", "show", "enp2s0"])
.assert()
.success()
.stdout(contains("enp2s0"))
.stdout(contains("unavailable"));
}
#[test]
fn show_unknown_device_exits_4() {
fez_fake()
.args(["network", "show", "doesnotexist"])
.assert()
.code(4);
}