quartz-cli 1.3.1

The command-line tool to build and test HTTP requests.
Documentation
use crate::utils::*;

const SAMPLE_BODY_1: &str = r#"
{
    "example": 123
}
"#;

const SAMPLE_BODY_2: &str = r#"
{
    "prop": {
        "hello": 123
    },
    "sample": "lorem ipsum"
}
"#;

const SAMPLE_BODY_2_VARS: &str = r#"
{
    "prop": {
        "hello": {{requestHello}}
    },
    "sample": "{{requestSample}}"
}
"#;

#[test]
fn it_accepts_json_from_stdin() -> TestResult {
    let quartz = Quartz::preset_using_sample_endpoint()?;

    let output = quartz.cmd_stdin(&["body", "stdin"], SAMPLE_BODY_1)?;
    assert!(output.status.success(), "{}", output.stderr);

    let output = quartz.cmd(&["body", "show"])?;
    assert_eq!(output.stdout.trim(), SAMPLE_BODY_1.trim());

    Ok(())
}

#[test]
fn it_chains_stdin_and_print() -> TestResult {
    let quartz = Quartz::preset_using_sample_endpoint()?;

    let exec = quartz.cmd_stdin(&["body", "stdin"], SAMPLE_BODY_1)?;
    let output = quartz.cmd(&["body", "show"])?;
    assert!(exec.status.success(), "{}", exec.stderr);
    assert_eq!(output.stdout.trim(), SAMPLE_BODY_1.trim());

    Ok(())
}

#[test]
fn it_changes_existent_body() -> TestResult {
    let quartz = Quartz::preset_using_sample_endpoint()?;

    quartz.cmd_stdin(&["body", "stdin"], SAMPLE_BODY_1)?;
    let exec = quartz.cmd_stdin(&["body", "stdin"], SAMPLE_BODY_2)?;
    let output = quartz.cmd(&["body", "show"])?;

    assert!(exec.status.success(), "{}", exec.stderr);
    assert_ne!(
        output.stdout.trim(),
        SAMPLE_BODY_1.trim(),
        "it preserved the first body"
    );
    assert_eq!(
        output.stdout.trim(),
        SAMPLE_BODY_2.trim(),
        "did not update body with correct value"
    );

    Ok(())
}

#[test]
fn compatible_with_apply_env_option() -> TestResult {
    let quartz = Quartz::preset_using_sample_endpoint()?;

    quartz.cmd(&[
        "var",
        "set",
        "requestHello=123",
        "requestSample=\"lorem ipsum\"",
    ])?;
    quartz.cmd_stdin(&["body", "stdin"], SAMPLE_BODY_2_VARS)?;

    let output = quartz.cmd(&["--apply-environment", "body", "show"])?;

    assert!(output.status.success(), "{}", output.stderr);
    assert_eq!(output.stdout.trim(), SAMPLE_BODY_2.trim());

    Ok(())
}