rash_core 2.20.0

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

#[test]
fn test_syslog_with_minimal_params() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Test syslog with minimal params
  syslog:
    msg: "Test message from rash"
        "#
    .to_string();

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

    assert!(stderr.is_empty());
    assert!(stdout.contains("Message logged to syslog"));
}

#[test]
fn test_syslog_with_all_params() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Test syslog with all params
  syslog:
    msg: "Critical error in service"
    facility: daemon
    priority: error
    ident: testapp
    pid: true
        "#
    .to_string();

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

    assert!(stderr.is_empty());
    assert!(stdout.contains("Message logged to syslog"));
}

#[test]
fn test_syslog_with_local_facility() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Test syslog with local0 facility
  syslog:
    msg: "Application log message"
    facility: local0
    priority: info
    ident: myapp
        "#
    .to_string();

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

    assert!(stderr.is_empty());
    assert!(stdout.contains("Message logged to syslog"));
}

#[test]
fn test_syslog_with_debug_priority() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Test syslog with debug priority
  syslog:
    msg: "Debug information"
    priority: debug
        "#
    .to_string();

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

    assert!(stderr.is_empty());
    assert!(stdout.contains("Message logged to syslog"));
}

#[test]
fn test_syslog_missing_msg() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Test syslog without required msg
  syslog:
    facility: daemon
        "#
    .to_string();

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

    assert!(!stderr.is_empty());
}

#[test]
fn test_syslog_with_templated_msg() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Set a variable
  set_vars:
    app_name: myapp

- name: Test syslog with templated message
  syslog:
    msg: "Application {{ app_name }} started"
        "#
    .to_string();

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

    assert!(stderr.is_empty());
    assert!(stdout.contains("Message logged to syslog"));
}