rash_core 2.20.0

Declarative shell scripting using Rust native bindings
Documentation
use crate::cli::modules::run_test;

#[cfg_attr(target_os = "macos", ignore)]
#[test]
fn test_wakeonlan_basic() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Send Wake-on-LAN packet
  wakeonlan:
    mac: "00:11:22:33:44:55"
  register: result

- name: Verify result
  debug:
    var: result
        "#
    .to_string();

    let args: &[&str] = &[];
    let (stdout, _stderr) = run_test(&script_text, args);

    assert!(stdout.contains("Wake-on-LAN packet sent to 00:11:22:33:44:55"));
}

#[test]
fn test_wakeonlan_with_custom_broadcast() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Send Wake-on-LAN packet with custom broadcast
  wakeonlan:
    mac: "AA:BB:CC:DD:EE:FF"
    broadcast: "192.168.1.255"
    port: 7
  register: result

- name: Verify result
  debug:
    var: result
        "#
    .to_string();

    let args: &[&str] = &[];
    let (stdout, _stderr) = run_test(&script_text, args);

    assert!(stdout.contains("Wake-on-LAN packet sent to AA:BB:CC:DD:EE:FF"));
}

#[test]
fn test_wakeonlan_check_mode() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Test wakeonlan in check mode
  wakeonlan:
    mac: "00:11:22:33:44:55"
        "#
    .to_string();

    let args: &[&str] = &["--check"];
    let (stdout, _stderr) = run_test(&script_text, args);

    assert!(stdout.contains("Would send Wake-on-LAN packet"));
}

#[test]
fn test_wakeonlan_invalid_mac() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Send Wake-on-LAN with invalid MAC
  wakeonlan:
    mac: "invalid_mac"
        "#
    .to_string();

    let args: &[&str] = &[];
    let (_stdout, stderr) = run_test(&script_text, args);

    assert!(stderr.contains("Invalid MAC address"));
}