canic-cli 0.59.0

Operator CLI for Canic fleet setup, builds, evidence, catalog, backup, and restore workflows
Documentation
use super::super::register as deploy_register;
use super::*;

fn register_required_args() -> Vec<OsString> {
    vec![
        OsString::from("demo-local"),
        OsString::from("--fleet-template"),
        OsString::from("demo"),
        OsString::from("--root"),
        OsString::from("uxrrr-q7777-77774-qaaaq-cai"),
        OsString::from("--allow-unverified"),
    ]
}

#[test]
fn deploy_register_command_dispatches_register() {
    let mut args = vec![OsString::from("register")];
    args.extend(register_required_args());
    let parsed = parse_subcommand(deploy_command(), args)
        .expect("parse deploy register")
        .expect("register command");

    assert_eq!(parsed.0, "register");

    let options =
        deploy_register::DeployRegisterOptions::parse(parsed.1).expect("parse register options");
    assert_eq!(options.deployment, "demo-local");
    assert_eq!(options.fleet_template, "demo");
    assert_eq!(options.root, "uxrrr-q7777-77774-qaaaq-cai");
    assert!(options.allow_unverified);
}

#[test]
fn deploy_register_builds_minimal_registration_options() {
    let options = deploy_register::DeployRegisterOptions {
        deployment: "demo-local".to_string(),
        fleet_template: "demo".to_string(),
        root: "uxrrr-q7777-77774-qaaaq-cai".to_string(),
        network: "local".to_string(),
        allow_unverified: true,
    }
    .into_register_options(Some(PathBuf::from("/tmp/icp")));

    assert_eq!(options.deployment_name, "demo-local");
    assert_eq!(options.fleet_template, "demo");
    assert_eq!(options.root_canister_id, "uxrrr-q7777-77774-qaaaq-cai");
    assert_eq!(options.network, "local");
    assert!(options.allow_unverified);
    assert_eq!(options.icp_root, Some(PathBuf::from("/tmp/icp")));
    assert_eq!(options.workspace_root, None);
}

#[test]
fn deploy_register_requires_unverified_acknowledgement_flag() {
    let mut args = register_required_args();
    args.retain(|arg| arg != "--allow-unverified");
    let err = deploy_register::DeployRegisterOptions::parse(args)
        .expect_err("register without acknowledgement should fail usage");

    std::assert_matches!(err, DeployCommandError::Usage(_));
}