healthscript 1.1.0

A simple DSL for checking the health of a service using HTTP, TCP, ICMP (ping), and more.
Documentation
use expect_test::expect;
use healthscript::parse;

#[test]
fn single_url() {
    let input = r#"https://example.com"#;
    let (ast, _errors) = parse(input);

    let expected = expect![[r#"
        Some(
            Http(
                Http {
                    request_headers: [],
                    verb: None,
                    request_body: None,
                    url: "https://example.com",
                    timeout: None,
                    status_code: None,
                    response_headers: [],
                    response_body: None,
                },
            ),
        )
    "#]];
    expected.assert_debug_eq(&ast);
}

#[test]
fn http_verb() {
    let input = r#"[GET] https://example.com"#;
    let (ast, _errors) = parse(input);

    let expected = expect![[r#"
        Some(
            Http(
                Http {
                    request_headers: [],
                    verb: Some(
                        Get,
                    ),
                    request_body: None,
                    url: "https://example.com",
                    timeout: None,
                    status_code: None,
                    response_headers: [],
                    response_body: None,
                },
            ),
        )
    "#]];
    expected.assert_debug_eq(&ast);
}

#[test]
fn http_verb_status_code() {
    let input = r#"[GET] https://example.com [404]"#;
    let (ast, _errors) = parse(input);

    let expected = expect![[r#"
        Some(
            Http(
                Http {
                    request_headers: [],
                    verb: Some(
                        Get,
                    ),
                    request_body: None,
                    url: "https://example.com",
                    timeout: None,
                    status_code: Some(
                        404,
                    ),
                    response_headers: [],
                    response_body: None,
                },
            ),
        )
    "#]];
    expected.assert_debug_eq(&ast);
}

#[test]
fn response_body_regex() {
    let input = r#"https://example.com </hi/>"#;
    let (ast, _errors) = parse(input);

    let expected = expect![[r#"
        Some(
            Http(
                Http {
                    request_headers: [],
                    verb: None,
                    request_body: None,
                    url: "https://example.com",
                    timeout: None,
                    status_code: None,
                    response_headers: [],
                    response_body: Some(
                        Regex(hi),
                    ),
                },
            ),
        )
    "#]];
    expected.assert_debug_eq(&ast);
}

#[test]
fn response_body_jq() {
    let input = r#"https://example.com <(.x == 3)>"#;
    let (ast, _errors) = parse(input);

    let expected = expect![[r#"
        Some(
            Http(
                Http {
                    request_headers: [],
                    verb: None,
                    request_body: None,
                    url: "https://example.com",
                    timeout: None,
                    status_code: None,
                    response_headers: [],
                    response_body: Some(
                        Jq(.x == 3),
                    ),
                },
            ),
        )
    "#]];
    expected.assert_debug_eq(&ast);
}