rkik 0.3.2

Rusty Klock Inspection Kit - NTP Query and Compare Tool
Documentation
use assert_cmd::Command;
use predicates::prelude::*;
use predicates::str::{contains, is_match};
use rkik::resolve_ip;
use std::net::IpAddr;

#[test]
fn test_resolve_ip_v4() {
    let ip = resolve_ip("1.pool.ntp.org", false);
    assert!(ip.is_some());
    assert!(ip.unwrap().parse::<IpAddr>().unwrap().is_ipv4());
}

#[test]
fn test_resolve_ip_v6() {
    let ip = resolve_ip("2.pool.ntp.org", true);
    assert!(ip.is_some());
    assert!(ip.unwrap().parse::<IpAddr>().unwrap().is_ipv6());
}

#[test]
fn test_resolve_direct_ipv4() {
    let ip = resolve_ip("8.8.8.8", false);
    assert_eq!(ip.unwrap(), "8.8.8.8");
}

#[test]
fn test_resolve_direct_ipv6() {
    let ip = resolve_ip("2001:4860:4860::8888", true);
    assert_eq!(ip.unwrap(), "2001:4860:4860::8888");
}

#[test]
fn test_positional_argument_as_server() {
    let mut cmd = Command::cargo_bin("rkik").unwrap();
    cmd.arg("1.pool.ntp.org")
        .assert()
        .success()
        .stdout(contains("Server:").or(contains("server")));
}

#[test]
fn test_server_flag_argument() {
    let mut cmd = Command::cargo_bin("rkik").unwrap();
    cmd.arg("--server")
        .arg("1.pool.ntp.org")
        .assert()
        .success()
        .stdout(contains("Server:").or(contains("server")));
}

#[test]
fn test_compare_argument() {
    let mut cmd = Command::cargo_bin("rkik").unwrap();
    cmd.arg("--compare")
        .args(["0.pool.ntp.org", "1.pool.ntp.org"])
        .assert()
        .success()
        .stdout(is_match("Difference:|difference_ms").unwrap());
}

#[test]
fn test_invalid_input() {
    let mut cmd = Command::cargo_bin("rkik").unwrap();
    cmd.assert()
        .failure()
        .stdout(contains("Error: Provide either a server"));
}