cp_api 0.4.0

Check Point API library
Documentation
use cp_api::Client;
use serde_json::json;

#[test]
fn install_policy() {
    let mut client = Client::new("172.25.199.80", 443);
    client.accept_invalid_certs(true);
    client.login("cp_api", "vpn123").unwrap();

    let payload = json!({
        "policy-package": "Standard",
        "access": true,
        "targets": "test-fw"
    });

    client.call("install-policy", payload).unwrap();
    client.logout().unwrap();
}

#[test]
fn no_wait() {
    let mut client = Client::new("172.25.199.80", 443);
    client.accept_invalid_certs(true);
    client.login("cp_api", "vpn123").unwrap();
    client.wait_for_task(false);

    let payload = json!({
        "policy-package": "Standard",
        "access": true,
        "targets": "test-fw"
    });

    let taskid = client.call("install-policy", payload).unwrap();
    println!("taskid = {}", taskid.data["task-id"]);
}

#[test]
fn tasks() {
    let mut client = Client::new("10.1.1.110", 443);
    client.accept_invalid_certs(true);
    client.domain("CheckPoint");
    client.login("admin", "vpn123").unwrap();

    let payload = json!({
        "script-name": "example",
        "script": "ls -l /",
        "targets": "GW-2"
    });

    let res = client.call("run-script", payload).unwrap();

    for task in res.data["tasks"].as_array().unwrap() {
        println!("task name: {}, status: {}, statusDescription: {}",
                task["task-name"], task["status"], task["task-details"][0]["statusDescription"]);
    }

    assert_eq!(200, res.status());
    assert!(!res.is_success());
    assert!(res.is_not_success());

    client.logout().unwrap();
}