casper-devnet 0.10.1

Launcher for local Casper Network development networks.
Documentation
use super::Cli;
use clap::Parser;

#[test]
fn network_port_requires_exactly_one_selector() {
    assert!(Cli::try_parse_from(["nctl", "network", "casper-dev", "port"]).is_err());
    assert!(
        Cli::try_parse_from(["nctl", "network", "casper-dev", "port", "--rpc", "--rest"]).is_err()
    );
    assert!(Cli::try_parse_from(["nctl", "network", "casper-dev", "port", "--rpc"]).is_ok());
}

#[test]
fn derive_requires_exactly_one_selector() {
    assert!(Cli::try_parse_from(["nctl", "derive", "m/44'/506'/0'/0/0"]).is_err());
    assert!(
        Cli::try_parse_from([
            "nctl",
            "derive",
            "m/44'/506'/0'/0/0",
            "--secret-key",
            "--public-key",
        ])
        .is_err()
    );
    assert!(Cli::try_parse_from(["nctl", "derive", "m/44'/506'/0'/0/0", "--account-hash"]).is_ok());
}

#[test]
fn network_command_parser_validates_nested_commands() {
    assert!(
        Cli::try_parse_from(["nctl", "network", "casper-dev", "port", "--rpc", "--rest"]).is_err()
    );
    assert!(Cli::try_parse_from(["nctl", "network", "casper-dev", "port", "--rpc"]).is_ok());
    assert!(Cli::try_parse_from(["nctl", "network", "casper-dev", "path"]).is_ok());
    assert!(Cli::try_parse_from(["nctl", "network", "casper-dev", "path", "2.2.0"]).is_ok());
    assert!(Cli::try_parse_from(["nctl", "network", "casper-dev", "is-ready"]).is_ok());
    assert!(Cli::try_parse_from(["nctl", "networks", "casper-dev", "port", "--rpc"]).is_err());
}

#[test]
fn start_accepts_one_asset_selector() {
    assert!(Cli::try_parse_from(["nctl", "start", "--asset", "2.1.3"]).is_ok());
    assert!(Cli::try_parse_from(["nctl", "start", "--custom-asset", "dev"]).is_ok());
    assert!(
        Cli::try_parse_from(["nctl", "start", "--asset", "2.1.3", "--custom-asset", "dev",])
            .is_err()
    );
}

#[test]
fn start_accepts_chainspec_overrides() {
    assert!(
        Cli::try_parse_from([
            "nctl",
            "start",
            "--chainspec-override",
            "core.minimum_era_height=1",
        ])
        .is_ok()
    );
    assert!(
        Cli::try_parse_from([
            "nctl",
            "start",
            "--chainspec-override",
            "core.minimum_era_height=1",
            "--chainspec-override",
            "core.test_values=[1, 10]",
        ])
        .is_ok()
    );
}

#[test]
fn stage_protocol_is_nested_under_network() {
    assert!(
        Cli::try_parse_from([
            "nctl",
            "stage-protocol",
            "dev",
            "--protocol-version",
            "2.2.0"
        ])
        .is_err()
    );
    assert!(Cli::try_parse_from(["nctl", "network", "casper-dev", "stage-protocol"]).is_err());
    assert!(
        Cli::try_parse_from([
            "nctl",
            "network",
            "casper-dev",
            "stage-protocol",
            "2.1.3",
            "--protocol-version",
            "2.2.0",
            "--activation-point",
            "123",
        ])
        .is_ok()
    );
    assert!(
        Cli::try_parse_from([
            "nctl",
            "network",
            "casper-dev",
            "stage-protocol",
            "--asset",
            "2.1.3",
            "--protocol-version",
            "2.2.0",
            "--activation-point",
            "123",
        ])
        .is_ok()
    );
    assert!(
        Cli::try_parse_from([
            "nctl",
            "network",
            "casper-dev",
            "stage-protocol",
            "--custom-asset",
            "dev",
            "--protocol-version",
            "2.2.0",
            "--activation-point",
            "123",
        ])
        .is_ok()
    );
}

#[test]
fn stage_protocol_accepts_chainspec_overrides() {
    assert!(
        Cli::try_parse_from([
            "nctl",
            "network",
            "casper-dev",
            "stage-protocol",
            "--custom-asset",
            "dev",
            "--protocol-version",
            "2.2.0",
            "--activation-point",
            "123",
            "--chainspec-override",
            "core.minimum_era_height=1",
        ])
        .is_ok()
    );
    assert!(
        Cli::try_parse_from([
            "nctl",
            "network",
            "casper-dev",
            "stage-protocol",
            "--custom-asset",
            "dev",
            "--protocol-version",
            "2.2.0",
            "--activation-point",
            "123",
            "--chainspec-override",
            "core.minimum_era_height=1",
            "--chainspec-override",
            "core.test_values=[1, 10]",
        ])
        .is_ok()
    );
}