ic-query-cli 0.26.3

Command-line wrapper for read-only Internet Computer metadata queries
Documentation
use super::*;

#[test]
fn sns_neurons_rejects_invalid_clap_values() {
    for neuron_id in ["01", &"AB".repeat(32), &"gg".repeat(32)] {
        assert!(matches!(
            parse_test_options(
                sns_neuron_info_command(),
                &["1", neuron_id],
                SnsNeuronOptions::from_matches,
            ),
            Err(SnsCommandError::Usage(_))
        ));
    }
    assert!(matches!(
        parse_test_options(
            sns_info_command(),
            &["not-a-principal"],
            SnsLookupOptions::from_matches,
        ),
        Err(SnsCommandError::Usage(_))
    ));
    assert!(matches!(
        parse_test_options(sns_token_command(), &["0"], SnsLookupOptions::from_matches,),
        Err(SnsCommandError::Usage(_))
    ));
    assert!(matches!(
        parse_fallible_test_options(
            sns_neuron_list_command(),
            &["1", "--limit", "0"],
            SnsNeuronsOptions::from_matches,
        ),
        Err(SnsCommandError::Usage(_))
    ));
    assert!(matches!(
        parse_fallible_test_options(
            sns_neuron_list_command(),
            &["1", "--limit", "101"],
            SnsNeuronsOptions::from_matches,
        ),
        Err(SnsCommandError::Usage(_))
    ));
    assert!(matches!(
        parse_fallible_test_options(
            sns_neuron_list_command(),
            &["1", "--owner", "not-a-principal"],
            SnsNeuronsOptions::from_matches,
        ),
        Err(SnsCommandError::Usage(_))
    ));
    assert!(matches!(
        parse_fallible_test_options(
            sns_neuron_list_command(),
            &[
                "1",
                "--owner",
                "zqfso-syaaa-aaaaq-aaafq-cai",
                "--sort",
                "stake",
            ],
            SnsNeuronsOptions::from_matches,
        ),
        Err(SnsCommandError::Usage(_))
    ));
    assert!(matches!(
        parse_test_options(
            sns_neuron_refresh_command(),
            &["1", "--page-size", "0"],
            SnsNeuronsRefreshOptions::from_matches,
        ),
        Err(SnsCommandError::Usage(_))
    ));
    assert!(matches!(
        parse_test_options(
            sns_neuron_cache_status_command(),
            &["not-a-principal"],
            SnsNeuronsCacheStatusOptions::from_matches,
        ),
        Err(SnsCommandError::Usage(_))
    ));
}

#[test]
fn sns_proposals_reject_invalid_clap_values() {
    assert!(matches!(
        parse_fallible_test_options(
            sns_proposal_list_command(),
            &["1", "--limit", "101"],
            SnsProposalsOptions::from_matches,
        ),
        Err(SnsCommandError::Usage(_))
    ));
    assert!(matches!(
        parse_fallible_test_options(
            sns_proposal_list_command(),
            &["1", "--status", "not-a-status"],
            SnsProposalsOptions::from_matches,
        ),
        Err(SnsCommandError::Usage(_))
    ));
    assert!(matches!(
        parse_fallible_test_options(
            sns_proposal_list_command(),
            &["1", "--topic", "not-a-topic"],
            SnsProposalsOptions::from_matches,
        ),
        Err(SnsCommandError::Usage(_))
    ));
    assert!(matches!(
        parse_fallible_test_options(
            sns_proposal_list_command(),
            &["1", "--asc"],
            SnsProposalsOptions::from_matches,
        ),
        Err(SnsCommandError::Usage(_))
    ));
    assert!(matches!(
        parse_test_options(
            sns_proposal_info_command(),
            &["1", "0"],
            SnsProposalOptions::from_matches,
        ),
        Err(SnsCommandError::Usage(_))
    ));
}

#[test]
fn sns_metrics_rejects_invalid_or_excessive_windows() {
    for value in ["0", "1.5h", "366d"] {
        assert!(matches!(
            parse_test_options(
                sns_metrics_command(),
                &["1", "--window", value],
                SnsMetricsOptions::from_matches,
            ),
            Err(SnsCommandError::Usage(_))
        ));
    }
}